Keras的多维输入

Kar*_*ula 5 python machine-learning neural-network deep-learning keras

我是keras的新手,我在运行具有多个维度的模型时遇到问题.所以,我一直在尝试一些样品.这是其中之一.

from keras.models import Sequential
from keras.layers import Dense
import numpy as np

X_train = np.array([[[1, 2], [3, 4]], [[1, 2], [3, 4]]])
model = Sequential([
    Dense(32, input_shape=X_train.shape[1:]),
])
model.compile(loss='sparse_categorical_crossentropy', optimizer='sgd')
model.fit(X_train, [1, 2])
Run Code Online (Sandbox Code Playgroud)


我希望上面的示例能够运行,但是我收到了一个错误

Error when checking target: expected dense_1 to have 3 dimensions, but got array with shape (2, 1)
Run Code Online (Sandbox Code Playgroud)

这可能是什么原因.任何人都可以举例说明如何使用多维输入运行keras模型,即如何构造输入?谢谢.

nik*_*scp 6

我建议您对输出类进行单热编码,即使用:

# Convert labels to categorical one-hot encoding
labels = np.array([1, 2]) # 0 - num_classes - 1
y_train = keras.utils.to_categorical(labels, num_classes=3)
Run Code Online (Sandbox Code Playgroud)

然后使用'categorical_crossentropy'而不是'sparse_categorical_crossentropy':

model.compile(loss='categorical_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

最后,如果你想要2D输出(样本x类),你应该在某些时候展平你的3D输入.输出层中的单元数(您只有一个)应该与类的数量匹配并使用适当的激活函数(例如'softmax')

model.add(Flatten(input_shape=X_train.shape[1:]))
model.add(Dense(3, activation='softmax'))
Run Code Online (Sandbox Code Playgroud)

尝试查看用于多级softmax分类的多层感知器(MLP):https: //keras.io/getting-started/sequential-model-guide/