【发布时间】:2017-06-11 08:40:05
【问题描述】:
我的输入如下所示:
[
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
...]
形状为(1, num_samples, num_features),标签如下所示:
[
[0, 1]
[1, 0]
[1, 0]
...]
形状为(1, num_samples, 2)。
但是,当我尝试运行以下 Keras 代码时,我收到此错误:
ValueError: Error when checking model target: expected dense_1 to have 2 dimensions, but got array with shape (1, 8038, 2)。根据我的阅读,这似乎源于我的标签是二维的,而不仅仅是整数。这是正确的吗?如果是,如何在 Keras 中使用 one-hot 标签?
代码如下:
num_features = 463
trX = np.random(8038, num_features)
trY = # one-hot array of shape (8038, 2) as described above
def keras_builder(): #generator to build the inputs
while(1):
x = np.reshape(trX, (1,) + np.shape(trX))
y = np.reshape(trY, (1,) + np.shape(trY))
print(np.shape(x)) # (1, 8038, 463)
print(np.shape(y)) # (1, 8038, 2)
yield x, y
model = Sequential()
model.add(LSTM(100, input_dim = num_features))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit_generator(keras_builder(), samples_per_epoch = 1, nb_epoch=3, verbose = 2, nb_worker = 1)
立即抛出上述错误:
Traceback (most recent call last):
File "file.py", line 35, in <module>
model.fit_generator(keras_builder(), samples_per_epoch = 1, nb_epoch=3, verbose = 2, nb_worker = 1)
...
ValueError: Error when checking model target: expected dense_1 to have 2 dimensions, but got array with shape (1, 8038, 2)
谢谢!
【问题讨论】:
标签: python machine-learning keras one-hot-encoding