2017-06-12 121 views
0

我是keras的初学者,我试图用神经网络对数据进行分类。神经网络输入形状错误

x_train = x_train.reshape(1,x_train.shape[0],window,5) 
    x_val = x_val.reshape(1,x_val.shape[0],window,5) 

    x_train = x_train.astype('float32') 
    x_val = x_val.astype('float32') 

    model = Sequential() 

    model.add(Dense(64,activation='relu',input_shape= (data_dim,window,5))) 
    model.add(Dropout(0.5)) 

    model.add(Dense(64,activation='relu')) 
    model.add(Dropout(0.5)) 
    model.add(Dense(2,activation='softmax')) 

    model.compile(loss='categorical_crossentropy', 
      optimizer='sgd', 
      metrics=['accuracy']) 

    weights = model.get_weights() 


    model_info = model.fit(x_train, y_train,batch_size=batchsize, nb_epoch=15,verbose=1,validation_data=(x_val, y_val)) 

    print x_train.shape 
    #(1,1600,45,5) 

    print y_train.shape 
    #(1600,2) 

我一直有这个错误这个剧本,我不明白为什么:

ValueError: Error when checking target: expected dense_3 to have 4 dimensions, but got array with shape (16000, 2) 
+0

你能提供一个更全面的例外跟踪吗?它将有助于修复错误。 –

+0

我不能使用plot_model,python告诉我它不能导入pydot,即使我已经安装了它 –

回答

2

你的模型的输出(dense_3,如此命名是因为它是第三致密层)具有四个维度。但是,您尝试将其与(y_train)进行比较的标签只有两个维度。您将需要更改网络架构,以便您的模型重新生成数据以匹配标签。

刚开始时跟踪张量形状非常困难,所以我建议在致电model.fit之前致电plot_model(model, to_file='model.png', show_shapes=True)。您可以查看生成的PNG以了解图层对数据形状的影响。

+0

谢谢,所以我必须改变x_train的形状? –

+0

使用print(model.summary())检查模型图层的尺寸。你会看到这个模型结构和x_train.shape,你将无法获得y_train.shape。请更改x_train的形状或更改模型结构。 –

+0

@ coline.s不,y_train的形状。 –