CudNN无效的输入形状

时间:2019-07-09 07:02:45

标签: python numpy keras cudnn

我正在将1维numpy数组输入到19个整数长的CuDNNLSTM层中。所以我将输入形状设置为input_shape =(19,),但是当尝试训练模型时,它给了我以下错误。我可以看到它期望具有第3维的numpy数组,但不确定为什么

ValueError: Input 0 of layer cu_dnnlstm is incompatible with the layer: 
expected ndim=3, found ndim=2. Full shape received: [None, 19]

我的模型的完整代码可以在这里看到,问题出在第一输入层

model = Sequential()
model.add(CuDNNLSTM(HIDDEN_SIZE, input_shape=(19,)))
model.add(Dropout(DROPOUT_VALUE))
for _ in range(HIDDEN_LAYERS):
    model.add(CuDNNLSTM(HIDDEN_SIZE, return_sequences=True))
    model.add(Dropout(DROPOUT_VALUE))
model.add(TimeDistributed(Dense(1, activation='softmax')))
opt = tf.keras.optimizers.Adam(lr=1e-3, decay=1e-5)
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics= 
['mse'])

model.fit(x_train, y_train, epochs=EPOCH_COUNT, validation_data=(x_test, 
y_test))

1 个答案:

答案 0 :(得分:0)

如果您有一个由19个整数组成的序列,则timesteps维度应为19,features维度应为1,这意味着网络的输入形状应为(19, 1)

您还应该调整数据形状以匹配新的输入形状。