【发布时间】:2021-07-12 03:22:50
【问题描述】:
我想知道你是否可以帮助我,我有一个 3 类时间序列分类问题,我需要预测未来最多两个步骤的类。 我用一个热编码器对输出进行了编码,所以我有 3 列 我对输出层的维度有疑问。当我向未来迈出一步时,我可以使用
"model.add(Dense(3,activation='softmax'))"
而且我运行的代码还可以,但是当我有 2 个步骤时,我不确定要使用哪个输出层。
我的训练数据的维度如下:
ytrain2 (100861, 2, 3) xtrain2 (100861, 6, 9)
from numpy import array
print(xnorm.shape)
Xtrain2, ytrain2 = split_sequence(xnorm,ynorm,6,2)
print(ytrain2)
Xtestf, ytestf = split_sequence(xtestnorm,ytestnorm,6,2)
print(ytrain2.shape)
recallV=list()
misclasV=list()
for i in n:
for j in neurons:
from keras.layers import Dense
from keras.models import Sequential
from keras.layers import Dropout
import tensorflow as tf
import keras as ks
n_input = Xtrain2.shape[1] * Xtrain2.shape[2]
ny=ytrain2.shape[1] * ytrain2.shape[2]
X = Xtrain2.reshape(Xtrain2.shape[0],n_input)
ytrain3=ytrain2.reshape(ytrain2.shape[0], ny)
optimizer = ks.optimizers.Adam(lr=0.01)
from keras.callbacks import ReduceLROnPlateau
from keras.callbacks import EarlyStopping
callbackEarlyStop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=15)
reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.95,
patience=5, min_lr=0.0000001,verbose=1)
# define model
model = Sequential()
model.add(Dense(j, activation='relu', input_dim=n_input))
model.add(Dropout(0.1))
model.add(Dense(j, activation='relu'))
model.add(Dropout(0.1))
###problem is here##
model.add(Dense(3,activation='softmax'))**
model.compile(optimizer=optimizer, loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(X, ytrain3,epochs=100,batch_size=256,shuffle=False,validation_split=0.2,callbacks=[reduce_lr,callbackEarlyStop], verbose=2)
【问题讨论】:
标签: keras time deep-learning classification series