如何使用keras

时间:2017-06-01 15:13:30

标签: python deep-learning keras

我是新来的! 我实际上是一个非常好的企业的实习生。 他们希望我学习深度学习和数学流程,我觉得这很好。 问题是,我发现它真的很复杂,但我正在努力。

所以,一开始,我正在尝试制作一个可以分类的分类器,如果数字是偶数还是奇数。我用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)的数组

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

1 个答案:

答案 0 :(得分:2)

您有16个一维(一个整数)样本,因此您网络的input_shape必须为1,而不是16

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

此外,我认为您将无法通过此网络架构(神经元数量,输入表示和激活功能)获得良好结果。请查看this question以供参考。