错误输入形状不是预期的形状

2024-10-01 22:28:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我看过很多关于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更改输入形状),但仍然会出现错误。在


Tags: inpyselfinputmodel错误linestatic
2条回答

试试这个(batch_input_shape而不是input_shape):

self.model.add(Dense(units=32, batch_input_shape=[4, 40]))

另请参见this answer。在

问题不在input_shape中,而是在给model.predict的数组形状上。在

model.predict使用一批示例,这意味着为了接收单个示例,它的形状(在您的示例中)应该是(1,4,40)。你可以用numpy.expand U dims公司公司名称:

self.model.predict(np.expand_dims(config_repr, axis = 0))

相关问题 更多 >

    热门问题