尝试使用S形作为LSTN最后一个致密层的激活函数时,出现以下错误
ValueError: `logits` and `labels` must have the same shape, received ((None, 60, 1) vs (None,)).
密码是这样的
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train) #scaled_train
X_test_s = scaler.transform(X_test) #scaled_test
length = 60
n_features=89
generator = TimeseriesGenerator(X_train_s, Y_train['TARGET_ENTRY_LONG'], length=length, batch_size=1)
validation_generator = TimeseriesGenerator(X_test_s, Y_test['TARGET_ENTRY_LONG'], length=length, batch_size=1)
# define model
model = Sequential()
model.add(LSTM(90, activation='relu', input_shape=(length, n_features), return_sequences=True, dropout = 0.3))
model.add(LSTM(30,activation='relu',return_sequences=True, dropout = 0.3))
model.add(Dense(1, activation = 'sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy')
model.summary()
# fit model
model.fit(generator,epochs=3,
validation_data=validation_generator)
#callbacks=[early_stop])
如果我用下面的图层声明替换最后一个图层声明
model.add(Dense(1))
我没有得到错误,但可能也不是预期的结果。有什么想法吗?
1条答案
按热度按时间nwnhqdif1#
几次尝试后发现了故障原因,正如史努比博士在之前的一段话中所说,它就在最后一层之前:如果最后一个层是使用sigmoid作为激活函数的二进制分类的密集层,则不应设置“return_sequences=True”,即针对之前的所有层。因此,该层
应改为如下所示