如何使用 keras 定义输入的形状

问题描述 投票:0回答:1

我是新来的! 我实际上是一家非常好的企业的实习生。 他们希望我学习深度学习和张量流,我认为这非常好。问题是,我发现它真的很复杂,但我正在尽力。

所以,一开始,我试图制作一个小分类器,可以对数字是偶数还是奇数进行分类。我用 keras 尝试过,但似乎在定义形状时遇到了一些小问题。

这是我的代码:

import keras
import numpy as np

x_train = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
y_train = np.array([1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0])
x_test = np.array([884,65,9,995,5,32,7,684,5])
y_test = np.array([1,0,0,0,0,1,0,1,0])

print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)

(16,)
(16,)
(9,)
(9,)

from keras.layers import Dense, Activation
from keras.models import Sequential
model = Sequential()

model.add(Dense(1, input_shape=(16,)))
model.add(Activation('relu'))
model.add(Dense(2))
model.add(Activation('softmax'))

model.compile(loss='categorical_crossentropy', optimizer='sgd',metrics=
['accuracy'])
model.fit(x_train, y_train, epochs=10,)
loss_and_metrics = model.predict(x_test, y_test, batch_size=128)

ValueError:检查输入时出错:期望dense_54_input具有形状(无,16),但得到形状为(16,1)的数组

我最后得到了这个,我搜索了几个小时,但我没有找到或理解如何解决这个问题...... 感谢您的帮助!

python deep-learning keras
1个回答
2
投票

您有 16 个一维(一个整数)样本,因此您的网络的

input_shape
必须是
1
,而不是
16

此外,您还需要将输出值(y向量)转换为二进制类矩阵。为此,请使用

keras.utils.to_categorical

另外,我认为使用这种网络架构(神经元数量、输入表示和激活函数)不会得到好的结果。检查这个问题以供参考。

© www.soinside.com 2019 - 2024. All rights reserved.