【发布时间】:2019-10-12 07:03:12
【问题描述】:
我在一个虚拟数据集上使用了 KerasRegressor,并尝试预测训练值本身。它给我的输出远非令人满意。训练数据根本不是随机的。谁能帮帮我?
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
import numpy as ny
X = ny.array([[1,2], [3,4], [5,6], [7,8], [9,10]])
Y = ny.array([3, 4, 5, 6, 7])
N = 5
def brain():
#Create the brain
br_model=Sequential()
br_model.add(Dense(3, input_dim=2, kernel_initializer='normal',activation='relu'))
br_model.add(Dense(2, kernel_initializer='normal',activation='relu'))
br_model.add(Dense(1,kernel_initializer='normal'))
#Compile the brain
br_model.compile(loss='mean_squared_error',optimizer='adam')
return br_model
estimator = KerasRegressor(build_fn=brain, nb_epoch=1000000, batch_size=5,verbose=1)
print "Done"
estimator.fit(X,Y)
prediction = estimator.predict(X)
print Y
print prediction
输出是
[3 4 5 6 7]
[0.001 0.001 0.001 0.001 0.001]
基本上,预测值是 0.001,而实际值不是。 我已经尝试过其他网络配置,但我面临同样的问题。 我必须做什么/(不做什么)才能获得准确的输出??
【问题讨论】:
-
你用的是哪个版本的keras?你在训练过程中损失了什么?
-
看起来网络根本没有训练。如果您使用的是当前版本的 keras,请尝试将
nb_epoch更改为epochs。 -
@sietschie 也用
nb_epoch进行了测试——在新的 Keras 版本中它只是被忽略了,而是使用默认值 10。真正的问题是数据规范化,请参阅下面的答案
标签: python machine-learning keras neural-network