【问题标题】:decimal output for Tensorflor model when it should be a boolean (1/0)Tensorflow 模型的十进制输出,当它应该是一个布尔值 (1/0)
【发布时间】:2021-06-18 23:25:55
【问题描述】:

我有一个模型,它可以输入 2015-2016 年每支 NBA 球队的 boxscore,然后输出他们的输赢 (1/0)。以下是一些已经数字编码的数据点。

(作为参考,WL 列被删除并成为我的标签/目标)。

现在我的问题是我的模型给出了一个范围内的预测(0.49-0.50~)而不是 1 或 0。我试图在 .compile() 内搞乱,因为我认为这很可能是我的问题所在,但是没有骰子。下面的代码带有一些模型预测。感谢任何 帮助和反馈

更新编辑:

【问题讨论】:

    标签: tensorflow neural-network tensorflow2.0 data-analysis


    【解决方案1】:

    如果您在进行二元分类,您不想使用均方误差作为损失函数。所以我首先要改变的是'binary_crossentropy'的损失函数。

    您可以使用优化器,正如我看到您正在使用 SGD,但我会从 'adam' 开始。我还会使用'relu' 来激活输入层和隐藏层的函数。只有'sigmoid''softmax'的输出层。所有这些东西都是超参数调整和测试,你可以稍后再玩,但这里主要的是你的损失函数。所以你可能想要这样的东西。

    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    

    model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['binary_accuracy'])
    

    最后,你不一定会得到 0 和 1。你会得到小数,你可能需要计算一个阈值,默认为 0.5。

    所以输出的任何输出

    y >= 0 and y < 0.5 -----> 0
    v >= 0.5 and y <=1 -----> 1
    

    【讨论】:

    • 欣赏解释。我最终在本教程tensorflow.org/tutorials/keras/classification 上工作了后备词,但不是衣服项目 1-10,我做了 0-1 并将其视为输赢。至于获得小数,我可以通过本教程立即获得 0 和 1。再次感谢,阅读您的评论有助于我了解我哪里出错了
    猜你喜欢
    • 2023-03-02
    • 2021-09-11
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多