【发布时间】:2019-04-19 19:30:57
【问题描述】:
我正在尝试学习 Keras 并尝试一些非常简单的方法。我创建了一个包含 200.000 个随机字母和两列的数据框。字母和 is_x。如果字母为大写“X”,则 is_x 设置为 1(或 True)。
这是我到目前为止所做的:
model = Sequential()
model.add(Dense(32, activation='tanh', input_shape=(X_train.shape[1],)))
model.add(Dense(16, activation='tanh'))
model.add(Dense(y_train.shape[1], activation='sigmoid'))
#model.compile(optimizer=SGD(), loss='categorical_crossentropy', metrics=['accuracy'])
model.compile(optimizer=Adam(lr=0.05), loss='binary_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=128, epochs=10, verbose=1, validation_data=(X_test, y_test))
results = model.evaluate(X_test, y_test)
y_predict = model.predict(X_test)
print(results)
print("---")
for i in y_predict:
print(i)
结果如下:
[0.09158177]
[0.09158175]
[0.09158177]
[0.09158177]
[0.09158175]
[0.09158177]
[0.09158173]
如果 is_x 为真,我想要得到的是 1 或 0。我将字母输入为 X_,将 is_x 输入为 y_,但我只得到一些数字,它们看起来都像 0.996 等。准确度也像 0.99,但与现实相去甚远。
我对激活、优化器和损失感到非常困惑。我不明白该选择哪个以及如何解决这个简单的问题。我研究了很多关于 udemy 的培训视频,但没有人解释他们为什么以及如何使用这些功能。
【问题讨论】:
标签: python keras neural-network deep-learning artificial-intelligence