【发布时间】:2020-05-23 07:03:26
【问题描述】:
首先,如果问题没有意义对不起,请纠正我。
所以...我有这个顺序模型。
model = Sequential()
model.add(LSTM( 524 , input_shape = (sequeces, size) , return_sequences = True ))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(LSTM( 256, return_sequences = True ))
model.add(Dropout(0.1))
model.add(BatchNormalization())
model.add(LSTM( 128 ))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add( Dense( 32, activation='relu') )
model.add( Dropout(0.2))
model.add( Dense( num_y_signals , activation='softmax') )
model.compile(
loss = 'categorical_crossentropy',
optimizer = tf.keras.optimizers.Adam( lr = 0.001 , decay=1e-6 ),
metrics = ['accuracy']
)
这是 1 个序列的形状
x_shape = (1, 24, 252)
y_shape = (1, 24, 2)
但是当我拟合模型时出现此错误
ValueError: 形状为 (1, 24, 2) 的目标数组被传递给形状为 (None, 2) 的输出,同时用作损失 categorical_crossentropy。这种损失期望目标具有与输出相同的形状。
我认为最后一层输出形状必须以某种方式修改......但我不知道如何
额外信息:
我如何拟合模型
history = model.fit(X, y, epochs = 200, verbose = 1 )
X 和 Y 数据示例
[[[4.73778108e-01 7.81242029e-04 4.30468356e-01 ... 4.00000000e+00
6.00000000e+00 7.00000000e+00]
[4.81112145e-01 5.23199660e-05 4.17750945e-01 ... 4.00000000e+00
6.00000000e+00 6.00000000e+00]
[4.86817225e-01 2.95250670e-05 4.19276930e-01 ... 4.00000000e+00
6.00000000e+00 5.00000000e+00]
...
[4.81959516e-01 1.60327432e-04 4.32056797e-01 ... 4.00000000e+00
5.00000000e+00 9.00000000e+00]
[4.83579230e-01 6.00398605e-04 4.29610771e-01 ... 4.00000000e+00
5.00000000e+00 8.00000000e+00]
[4.81143261e-01 5.71228103e-04 4.39182101e-01 ... 4.00000000e+00
5.00000000e+00 7.00000000e+00]]]
[[[1 0]
[0 1]
[0 1]
[0 0]
[0 0]
[1 0]
[1 0]
[1 0]
[1 0]
[0 1]
[0 0]
[0 0]
[0 1]
[0 1]
[0 1]
[0 0]
[1 0]
[0 1]
[0 1]
[1 0]
[1 0]
[1 0]
[1 0]
[1 0]]]
【问题讨论】:
-
我想我可以做到,但我为什么要这样做?
标签: python tensorflow keras