使用Tensorflow训练模型的输入数组形状应该是什么

时间:2019-04-26 12:08:19

标签: python-3.x tensorflow

我正在按照教程步骤进行训练,如https://www.tensorflow.org/alpha/tutorials/keras/overfit_and_underfit所述,使用Tensorflow训练神经网络

在训练数据ValueError上运行拟合函数时遇到输入形状有问题。

模型架构:

NUM_WORDS = 10000
baseline_model = keras.Sequential([
    keras.layers.Dense(16, activation = 'relu',input_shape(NUM_WORDS,)),
    keras.layers.Dense(16, activation = 'relu'),
    keras.layers.Dense(1, activation = 'sigmoid')
])

baseline_model.compile(optimizer='adam', 
                       loss='binary_crossentropy', 
                       metrics=['accuracy', 'binary_crossentropy'])
baseline_model.summary()

enter image description here

baseline_history = baseline_model.fit(train_data, 
                                      train_labels, 
                                      epochs=20, 
                                      batch_size=512, 
                                      validation_data=(test_data, test_labels), 
                                      verbose=2)
  

-------------------------------------------------- ---------------------------- ValueError Traceback(最近的呼叫   最后)         4 batch_size = 512,         5validation_data =(test_data,test_labels),   ----> 6 verbose = 2)

     

〜/ env_tensorflow2_alpha / lib / python3.6 / site-packages / tensorflow / python / keras / engine / training.py   适合(自我,x,y,batch_size,时代,冗长,回调,   validate_split,validation_data,随机播放,class_weight,   sample_weight,initial_epoch,steps_per_epoch,validation_steps,   validation_freq,max_queue_size,工作者,use_multiprocessing,   ** kwargs)       816 batch_size = batch_size,       817个步骤= validation_steps,   -> 818 steps_name ='validation_steps')       819 elifvalidation_split和0。      

〜/ env_tensorflow2_alpha / lib / python3.6 / site-packages / tensorflow / python / keras / engine / training.py   在_standardize_user_data(self,x,y,sample_weight,class_weight,   batch_size,check_steps,steps_name,steps,validation_split,shuffle,   extract_tensors_from_dataset)2594 feed_input_shapes,
  2595 check_batch_axis = False,#不强制执行批处理   尺寸。   -> 2596 exception_prefix ='input')2597 2598如果y不为None:

     

〜/ env_tensorflow2_alpha / lib / python3.6 / site-packages / tensorflow / python / keras / engine / training_utils.py   在standardize_input_data(数据,名称,形状,check_batch_axis,   exception_prefix)       347':预期的'+名称[i] +'具有形状'+       348 str(shape)+'但是得到了数组'+   -> 349 str(数据形状))       350返回数据       351

     

ValueError:检查输入时出错:预期density_21_input具有   形状(10000,),但数组的形状为(1,)

train_data和train_labels具有以下形状:

print("Train data shape: ", train_data.shape)
print("Train label shape: ", train_labels.shape)
  

训练数据形状:(25000,10000)   火车标签形状:(25000,)

为什么在这里出现错误,我是否需要在输入数组中为batch_size容纳另一个维度?

我正在使用Tensorflow版本:2.0.0-alpha0 在此先感谢!

1 个答案:

答案 0 :(得分:0)

除了行中的一个小错误,

keras.layers.Dense(16, activation = 'relu',input_shape(NUM_WORDS,))

您错过了一个=的地方,

keras.layers.Dense(16, activation = 'relu',input_shape=(NUM_WORDS,))

我能够在Google colab空间中运行相同的代码而没有错误。

希望这会有所帮助!