Keras输入/输出



我正在努力应对Tensorflow/keras的挑战,如果有人能帮助我,那就太好了。

我在Keras中建立了一个神经网络,input_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,> 输出:

500/500

时代

32/32 [==============================] - 0 -损失:0.0813 - 0.0000 acc: e + 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]]

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

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

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

我在回答我自己的问题:

这里的问题是优化器!训练数据和其他设置并不是那么重要。你必须尝试其他优化器来改变结果。现在可以结束这个问题了。谢谢你的帮助!

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

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

相关内容

  • 没有找到相关文章

最新更新