我是新来的! 我实际上是一家非常好的企业的实习生。 他们希望我学习深度学习和张量流,我认为这非常好。问题是,我发现它真的很复杂,但我正在尽力。
所以,一开始,我试图制作一个小分类器,可以对数字是偶数还是奇数进行分类。我用 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)的数组
我最后得到了这个,我搜索了几个小时,但我没有找到或理解如何解决这个问题...... 感谢您的帮助!
您有 16 个一维(一个整数)样本,因此您的网络的
input_shape
必须是 1
,而不是 16
。
此外,您还需要将输出值(y向量)转换为二进制类矩阵。为此,请使用
keras.utils.to_categorical
。
另外,我认为使用这种网络架构(神经元数量、输入表示和激活函数)不会得到好的结果。检查这个问题以供参考。