【问题标题】: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