【问题标题】:Keras Input/OutputKeras 输入/输出
【发布时间】:2016-10-17 14:30:10
【问题描述】:

我正在努力应对 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

输出:

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]]

【问题讨论】:

  • 请分享一些代码(也许作为 git gist)和准确的输出。 “但它永远不会成功,因为我的输出总是相同的”是什么意思?没有看到你的代码,怎么能告诉你为什么它们是一样的?
  • 从您使用的词汇表来看,我相信您会受益于对机器学习要点的良好介绍。例如。 ML 中格式化 输入向量的概念似乎并不熟悉。 规范化,是的

标签: python machine-learning tensorflow keras


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我正在回答我自己的问题:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-11
        • 2020-11-30
        • 2018-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多