如何解决Keras 多分类器总是给出 0 输出
我为多分类构建了这个 keras 模型
model = tf.keras.Sequential([
tf.keras.layers.Dense(32,activation='relu'),tf.keras.layers.Dense(16,tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(8,tf.keras.layers.Dense(1,activation='sigmoid')
])
model.compile(optimizer='adam',loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True))
这是我的数据,归一化
这些是我从 0 到 5 的目标值
我用这段代码准备数据集
train_dataset = tf.data.Dataset.from_tensor_slices((dff[:92000],target[:92000]))
test_dataset = tf.data.Dataset.from_tensor_slices((dff[500:520]))
# random slice of test dataset
train_dataset = train_dataset.batch(100)
test_dataset = test_dataset.batch(1)
然后我用这个训练和测试了我的模型
model.fit(train_dataset,epochs=20)
predictions = model.predict(test_dataset)
classes = np.argmax(predictions,axis = 1)
classes 输出始终为 0:[0,0]
我已经尝试过没有标准化我的数据,但输出仍然相同。
解决方法
来自评论
将其更改为 Dense(5,activation='softmax')
后已解决问题(转述自 M.Innat)
工作代码如下图
model = tf.keras.Sequential([
tf.keras.layers.Dense(32,activation='relu'),tf.keras.layers.Dense(16,tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(8,tf.keras.layers.Dense(5,activation='softmax')
])
model.compile(optimizer='adam',loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True))
Keras 多分类器总是给出 0 输出是因为你的最后一个 > 密集层只有 1 个单元,这意味着你的输出有一个 大小 (1,) 并且您正在应用结果获得的 argmax 操作 index 0 每次(从 Frightera 转述)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。