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模型,即如何构造输入?谢谢.
我建议您对输出类进行单热编码,即使用:
# 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/