如何确定图片生成器的流返回值的大小?

时间:2019-04-25 03:57:52

标签: python tensorflow keras

我正在尝试使用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维。我该如何重塑流函数的返回值,因为它是一个生成元组的迭代器。

1 个答案:

答案 0 :(得分:0)

以下是一些可行的方法:

  • 如果可能的话,可以将模型的InputShape更改为具有三个参数,例如[28,28,1]以适合数据形状,而不是两个。

  • 您可以在创建生成器之前更改x_trainy_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)