Keras 在KERA中传递输入时正确处理批次维度

Keras 在KERA中传递输入时正确处理批次维度,keras,nlp,lstm,Keras,Nlp,Lstm,我的keras输入是形状(83194,34,30),但要通过模型,我只需要(34,30)[83194是示例数]。我可以做什么改变?1.以数据形式或2。给keras的输入类型 接收到错误:ValueError:检查输入时出错:预期输入_6有2个维度,但得到了具有形状的数组(83194,34,30) 代码: 火车(83194,34,30)正常,测试(83194,79,30)正常。a的作用是什么?a=34(src_时间步),b=30(tar_时间步)谢谢,但我问这些变量的用途,例如样本数或序列长度等。

我的keras输入是形状(83194,34,30),但要通过模型,我只需要(34,30)[83194是示例数]。我可以做什么改变?1.以数据形式或2。给keras的输入类型

接收到错误:ValueError:检查输入时出错:预期输入_6有2个维度,但得到了具有形状的数组(83194,34,30)

代码:


火车(83194,34,30)正常,测试(83194,79,30)正常。

a的作用是什么?a=34(src_时间步),b=30(tar_时间步)谢谢,但我问这些变量的用途,例如样本数或序列长度等。对不起,我没有提到这个任务。显然,我正在尝试让神经网络拼写。因此,src_timesteps表示拼写输入的最大长度,tar_timesteps表示拼写输出的最大长度。训练和测试应具有相同的形状。为什么一个是(34,30),另一个是(79,30)?您的损失是“分类交叉熵”,您的目标数据(y)形状是什么?
n_units = 50
src_vocab = tar_vocab = 30
src_timesteps = a
tar_timesteps = b
_input_ = Input(shape=[src_timesteps], dtype='int32')
embedding = Embedding(input_dim = src_vocab, output_dim = n_units, input_length=src_timesteps, mask_zero=False)(_input_)
layer_1 = LSTM(n_units)(embedding)
repeat = RepeatVector(b)(layer_1)
layer_2 = LSTM(n_units, return_sequences=True)(repeat)
final = TimeDistributed(Dense(tar_vocab, activation='softmax'))(layer_2)
model = Model(inputs = _input_, output= final)
model.compile(optimizer='adam', loss='categorical_crossentropy')
print(model.summary())

plot_model(model, to_file='model.png', show_shapes=True)
filename = 'model.h5'
checkpoint = ModelCheckpoint(filename, monitor='val_loss', verbose=1, save_best_only=True, mode='min')
model.fit(train_, test_, epochs=30, callbacks=[checkpoint], verbose=2)