【问题标题】:Multidimensional Input to KerasKeras 的多维输入
【发布时间】:2017-08-08 11:08:08
【问题描述】:

我是 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])


我希望上面的示例能够运行,但出现错误

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

这可能是什么原因。谁能举例说明如何使用多维输入运行 keras 模型,即输入应该如何构造?谢谢。

【问题讨论】:

    标签: python machine-learning neural-network deep-learning keras


    【解决方案1】:

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

    # 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)
    

    然后用'categorical_crossentropy'代替'sparse_categorical_crossentropy':

    model.compile(loss='categorical_crossentropy',
                  optimizer=sgd,
                  metrics=['accuracy'])
    

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

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

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

    【讨论】:

    • 谢谢,这个答案澄清了一些事情。任重而道远:)
    猜你喜欢
    • 2017-07-25
    • 2017-03-31
    • 1970-01-01
    • 2022-12-10
    • 2018-02-22
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多