Keras - 无法将我的输入数据释放到 keras 模型。检查输入时出错
Keras - Can't freed my input data to keras model. Error when checking input
我正在尝试学习我的 Keras 模型真值表。它只是为了更多地了解 Keras,所以这个例子只是为了学习目的。我的输入如下所示:
x = np.array([
[
[0, 0, 0],
[0, 1, 0],
[1, 0, 0],
[1, 1, 1]
],
[
[0, 0, 0],
[0, 1, 1],
[1, 0, 1],
[1, 1, 1]
],
[
[0, 0, 1],
[0, 1, 1],
[1, 0, 1],
[1, 1, 0]
],
[
[0, 0, 1],
[0, 1, 0],
[1, 0, 0],
[1, 1, 0]
],
[
[0, 0, 0],
[0, 1, 1],
[1, 0, 1],
[1, 1, 0]
],
[
[0, 0, 1],
[0, 1, 0],
[1, 0, 0],
[1, 1, 1],
]
])
y = np.array([['AND'],['OR'],['NAND'], ['NOR'], ['XOR'], ['XNOR']])
当我将它放入第一层时,我执行以下操作:
model = Sequential()
model.add(Dense(72, input_shape=(6, 4, 3)))
model.add(Activation('tanh'))
model.add(Dense(6))
model.add(Activation('sigmoid'))
sgd = SGD(lr=0.1)
model.compile(loss='sparse_categorical_crossentropy', optimizer=sgd)
model.fit(x, y, epochs=1000, batch_size=32)
我的输入形状有 6 个门,每个门有 4 行和 3 列,密集层为 72,因为 6 * 4 * 3。现在当我执行这个时,我得到以下错误:
ValueError: Error when checking input: expected dense_32_input to have 4 dimensions, but got array with shape (6, 4, 3)
谁能解释一下我做错了什么以及将来我应该如何将数据输入 Keras?
提前致谢!
第一个密集层中的 input_shape 应该是 (4, 3) 而不是 (6, 4, 3)。第一个维度(在您的情况下为 6)用于批量大小,您不应在输入形状中指定。
您的模型还有更多问题。您可能想在输出层使用 softmax 而不是 sigmoid。其次,带标签的 y
向量应该有数值。例如,您可以用整数索引来表示每个单词。第三,我认为您希望模型开头的 Flatten 层将 2 阶输入张量展平为 1 阶张量。
我正在尝试学习我的 Keras 模型真值表。它只是为了更多地了解 Keras,所以这个例子只是为了学习目的。我的输入如下所示:
x = np.array([
[
[0, 0, 0],
[0, 1, 0],
[1, 0, 0],
[1, 1, 1]
],
[
[0, 0, 0],
[0, 1, 1],
[1, 0, 1],
[1, 1, 1]
],
[
[0, 0, 1],
[0, 1, 1],
[1, 0, 1],
[1, 1, 0]
],
[
[0, 0, 1],
[0, 1, 0],
[1, 0, 0],
[1, 1, 0]
],
[
[0, 0, 0],
[0, 1, 1],
[1, 0, 1],
[1, 1, 0]
],
[
[0, 0, 1],
[0, 1, 0],
[1, 0, 0],
[1, 1, 1],
]
])
y = np.array([['AND'],['OR'],['NAND'], ['NOR'], ['XOR'], ['XNOR']])
当我将它放入第一层时,我执行以下操作:
model = Sequential()
model.add(Dense(72, input_shape=(6, 4, 3)))
model.add(Activation('tanh'))
model.add(Dense(6))
model.add(Activation('sigmoid'))
sgd = SGD(lr=0.1)
model.compile(loss='sparse_categorical_crossentropy', optimizer=sgd)
model.fit(x, y, epochs=1000, batch_size=32)
我的输入形状有 6 个门,每个门有 4 行和 3 列,密集层为 72,因为 6 * 4 * 3。现在当我执行这个时,我得到以下错误:
ValueError: Error when checking input: expected dense_32_input to have 4 dimensions, but got array with shape (6, 4, 3)
谁能解释一下我做错了什么以及将来我应该如何将数据输入 Keras?
提前致谢!
第一个密集层中的 input_shape 应该是 (4, 3) 而不是 (6, 4, 3)。第一个维度(在您的情况下为 6)用于批量大小,您不应在输入形状中指定。
您的模型还有更多问题。您可能想在输出层使用 softmax 而不是 sigmoid。其次,带标签的 y
向量应该有数值。例如,您可以用整数索引来表示每个单词。第三,我认为您希望模型开头的 Flatten 层将 2 阶输入张量展平为 1 阶张量。