我正在尝试使用fit_generator
。但是我得到了错误
检查输入时出错:预期的sequence_1_input具有3 尺寸,但数组的形状为(20,28,28,1)
代码如下:
data_flow = data_generator.flow(x_train, y_train,batch_size=20)
generate = model.fit_generator(data_flow, steps_per_epoch=1400,epochs=10)
流中的每个批次的输出为(20,28,28,1)
。但是fit_generator
期望3维。我该如何重塑流函数的返回值,因为它是一个生成元组的迭代器。
答案 0 :(得分:0)
以下是一些可行的方法:
如果可能的话,可以将模型的InputShape更改为具有三个参数,例如[28,28,1]
以适合数据形状,而不是两个。
您可以在创建生成器之前更改x_train
和y_train
的形状
x_train = tf.reshape(x_train, shape=[28,28]) # likewise for y_train
flow
返回一个迭代器,因此可以使用map
重塑其输出(未测试代码)# squeeze to remove the dimension with length 1
map(lambda x, y: tf.squeeze(x), y, data_flow)
# otherwise one can use tf.reshape
map(lambda x, y: tf.reshape(x, shape=x.shape[0:-1]), y, data_flow)