我看过很多关于Keras的输入形状错误的帖子,但是我还是不明白。在
我试图用Keras解决一个分类问题。我的x_data
(例如1个例子!)是一个数组(4个长度为40的数组)。最后要预测的类数是5。在
第一个输入层的期望值和我给出的结果之间存在不匹配。在
这是我的模型:
self.model = Sequential()
self.model.add(Dense(32,input_shape=(4,40)))
self.model.add(Dense(5, activation='softmax'))
我认为形状应该是(4,40)
,因为我给出了一个由4个数组组成的长度为40的数组。我认为最后一层的输出维应该是5,因为我有5个可能的类。在
以下是1 X的格式/类型/形状:
^{pr2}$这行代码有一个错误:
self.model.predict(config_repr)
这是错误:
Traceback (most recent call last):
File "arc_eagerTagger.py", line 818, in <module>
p.static_train2(depTreeList[1:2900]) # p.dynamic_train( treebank, step_size = 1, max_epochs = 10)
File "arc_eagerTagger.py", line 683, in static_train2
derivation = self.static_oracle_derivation(dtree,listVecteurs,dictionnaireMots)
File "arc_eagerTagger.py", line 260, in static_oracle_derivation
C = self.shift(C,sentence,listVecteurs,dictionnaireMots)
File "arc_eagerTagger.py", line 283, in shift
return (S + (w0,),B[1:],A,score+self.score(configuration,ArcEagerTransitionParser.SHIFT,tokens,listVecteurs,dictionnaireMots))
File "arc_eagerTagger.py", line 392, in score
return self.model.predict(config_repr)[0][index_action]
File "/home/netbook/anaconda3/lib/python3.6/site-packages/keras/models.py", line 909, in predict
return self.model.predict(x, batch_size=batch_size, verbose=verbose)
File "/home/netbook/anaconda3/lib/python3.6/site-packages/keras/engine/training.py", line 1499, in predict
check_batch_axis=False)
File "/home/netbook/anaconda3/lib/python3.6/site-packages/keras/engine/training.py", line 128, in _standardize_input_data
str(array.shape))
ValueError: Error when checking : expected dense_1_input to have 3 dimensions, but got array with shape (4, 40)
我试图更改输入形状,尝试将数组连接为一个长度为160的数组以解决问题(并使用input_dim=160
更改输入形状),但仍然会出现错误。在
试试这个(
batch_input_shape
而不是input_shape
):另请参见this answer。在
问题不在
input_shape
中,而是在给model.predict
的数组形状上。在model.predict
使用一批示例,这意味着为了接收单个示例,它的形状(在您的示例中)应该是(1,4,40)。你可以用numpy.expand U dims公司公司名称:相关问题 更多 >
编程相关推荐