TensorFlow实现简单神经网络分类问题

利用TensorFlow来训练所有的神经网络的训练过程可以分为如下3个步骤:

①定义神经网络的结构和前向传播的输出结果。
②定义损失函数以及选择反向传播优化算法。
③生成会话(tf.Session)并且在训练数据上反复运行反向传播优化算法。

下面给出一个简单的二分类问题的神经网络算法(完整的流程)

神经网络具体结构如下图:

训练流程图:

几个解释:

①Numpy 是一个科学计算的工具箱的,这里通过Numpy生成模拟数据集。

②batch是每一次的训练数据的大小。

③损失函数是交叉熵(cross_entropy)
具体解释请看:http://www.omegaxyz.com/2018/05/07/information_entropy/

④反向传播算法可以使用梯度下降法:tf.train.GradientDescentOptimizer(0.05).minimize(cross_entropy)或者tf.train.AdamOptimizer(0.002).minimize(cross_entropy)
文章中使用的是AdamOptimizer,学习率是0.002。

⑤这里所有x1+x2<1的样例都被认为是正样本。

⑥每隔一段时间计算在所有数据上的交叉熵并输出,交叉熵越小说明预测的结果和真实的结果差距越小,这里用matplotlib画图。

代码:

结果:

交叉熵越低,结果越好

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注