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