Keras输入/输出

时间:2016-10-17 14:30:11

标签: python machine-learning tensorflow keras

我正在努力应对Tensorflow / keras的挑战,如果有人可以帮助我会很棒。

我在Keras建立了一个神经网络,输入_dim = 3,然后是10个神经元和输出1.

输入是带有浮点数的3d向量,输出应该是一个简单的浮点值。

我的问题是,我不知道如何格式化浮点数(> 1,从0到1?等等...)以及哪个损失函数可以用于此任务(我猜没有二进制)。我希望神经网络从3d矢量中计算出一个简单的浮点值。但它永远不会成功,因为我的输出总是一样的。

如果我忘了什么,请告诉我,如果你有一些想法,那就太棒了!

问候

编辑:我意识到我需要介绍机器学习的整个主题,我现在正在做。与此同时,我想知道如何使用keras来验证/实际使用机器学习。我很抱歉要求愚蠢的'问题,但我希望也许有人可以帮助我。

输入:我认为输入可能是错误的'格式化,它没有标准化等,但我将我得到的值转换为下面提到的间隔。

这是我的简单模型:

model = Sequential()
model.add(Dense(10, input_dim=3, init='normal', activation='sigmoid'))
model.add(Dense(1, init='normal', activation='sigmoid'))
model.compile(loss='mse', optimizer='sgd', metrics=['accuracy'])
model.fit(X_Train, Y_Train, nb_epoch=100, batch_size=32, verbose=1)

X_Train和Y_Train是从.csv文件中提取的值。例如,我的输入值是[a,b,c,d],其中0 < a,b,c&lt; 1和-1&lt; d&lt; 1(输出d)。

输出:

  

Epoch 500/500

     

32/32 [==============================] - 0s - 损失:0.0813 - acc:0.0000e + 00

示例(随机生成的值),所有输出在0.43附近几乎相同:

  

[0.97650245 0.30383579 0.74829968] [[0.43473071]]

     

[0.94985165 0.75347051 0.72609185] [[0.43473399]]

     

[0.18072594 0.18540003 0.20763266] [[0.43947196]]

3 个答案:

答案 0 :(得分:3)

首先,不需要对输入样本进行标准化(或格式化)。

其次,对于零准确度的问题,这是因为您使用“准确度”作为用于分类模型的度量。在你的情况下,你应该使用类似“mse”或“mae”(在Keras中)的东西作为编译方法中的指标,例如,

model.compile(loss='mse', optimizer='sgd', metrics=['mae'])

答案 1 :(得分:2)

我回答了我自己的问题:

这里的问题是优化器!培训数据和其他所有设置都不重要。您必须尝试其他优化器,以改变结果。 现在可以关闭这个问题。谢谢你的帮助!

答案 2 :(得分:0)

将输出层更改为以下 model.add(Dense(1))

请参阅此回归指南,其中讨论一个输出。 https://www.tensorflow.org/tutorials/keras/basic_regression