【发布时间】:2019-09-13 05:24:58
【问题描述】:
使用神经网络学习分类值的分布
目的是使用神经网络对一维输入进行分类。有两个类应该分类,A 和B。每个用于确定类的输入都是一个介于0.0 和1.0 之间的数字。
class A 的输入值均匀分布在 0 和 1 之间,如下所示:
class B 的输入值都在0.4 到0.6 的范围内,如下所示:
现在我想训练一个神经网络,它可以学习将0.4 到0.6 范围内的值分类为B,其余的分类为A。所以我需要一个可以近似一个类的上限和下限的神经网络。我之前的尝试都没有成功——神经网络总是为所有输入返回 50% 的概率,并且在 epoch 期间损失不会减少。
在 Python 中使用 Tensorflow 和 Keras 我已经训练了以下简单模型:
model = keras.Sequential([
keras.layers.Dense(1),
keras.layers.Dense(5, activation=tf.nn.relu),
keras.layers.Dense(5, activation=tf.nn.relu),
keras.layers.Dense(2, activation=tf.nn.softmax)
])
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
(下面链接的完整训练脚本)
顺便说一句,我会想象神经网络是这样工作的:一些神经元只在 0.4 以下,有些只在 0.6 以上。如果这些神经元组中的任何一组触发,则为A 类,如果两者均未触发,则为B 类。不幸的是,事实并非如此。
如何使用神经网络对上述输入进行分类?
--
【问题讨论】:
标签: python tensorflow machine-learning keras neural-network