首页 > 解决方案 > 未经训练的二元分类 keras 模型在所有输出上都给出 1

问题描述

我正在尝试构建一个带有一个隐藏层的小型神经网络。我希望在训练之前,模型会输出看起来随机的值。但是对于所有输入,我得到 1.0 作为输出。为什么会这样?

import tensorflow as tf
from tensorflow import keras
import numpy as np

def NewModel():
  return keras.Sequential([
    keras.layers.Dense(20, input_shape=(18,), activation=tf.nn.relu, name="inputLayer"),
    keras.layers.Dense(1, activation=tf.nn.softmax, name="outputLayer"),
    ])

model = NewModel()
i = np.array([[0.2]*18])
print(model.predict(i))

标签: pythontensorflowmachine-learningkeras

解决方案


您不能将 softmax 与单个输出神经元一起使用,因为它通过除以所有神经元的输出进行归一化,这会产生一个恒定的 1.0 值,这就是您所看到的。


推荐阅读