神经网络学习系列(一)前向神经网络和BP算法 附python代码(minst手写体识别)
最近刚开始接触神经网络,想把自己找到的一些好的文章和代码以及自己的一些理解整理一下,一方面和广大学者交流,一方面巩固自己对神经网络的理解,若大家有什么其他更好的见解,欢迎留言讨论
参考资料:吴岸城《神经网络与深度学习》
理论分析
前向神经网络

BP算法
BP全称是 Back Propagation, 也称为Error Back Propagation, 意思是误差的反向传播 ,也算说明了BP算法的特点。
BP算法的基本思想是:由信号正向传播和误差反向传播。
注意:BP算法是在前向网络中误差的反向传递,跟反馈网络有本质的区别!!!!
(1)信号正向传播:正向传播时,输入样本从输入层传入,经各隐含层逐层处理后,传向输出层。若输出层的实际输出与期望的输出不符合,则转向误差的反向传播阶段。
(2)误差反向传播:将输出以某种形式通过隐含层向输入层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。
更详细的关于BP算法,请看
大白话讲解BP算法
实战代码
下面是小编找到的一个用BP算法实现minst手写体识别的基于tensorflow的代码
附链接:
链接: link.
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
num_classes = 10 # 输出大小
input_size = 784 # 输入大小
hidden_units_size = 30 # 隐藏层节点数量
batch_size = 100
training_iterations = 10000
X = tf.placeholder(tf.float32, shape=[None, input_size])
Y = tf.placeholder(tf.float32, shape=[None, num_classes])
W1 = tf.Variable(tf.random_normal([input_size, hidden_units_size], stddev=0.1))
B1 = tf.Variable(tf.constant(0.1), [hidden_units_size]

本文介绍了神经网络的基础——前向神经网络和反向传播(BP)算法,并提供了基于TensorFlow实现的MNIST手写体识别的实战代码。通过对吴岸城《神经网络与深度学习》的学习,作者分享了对神经网络的理解,包括信号正向传播和误差反向传播的过程,以及BP算法的关键步骤。同时,文章附带了一个BP算法的详细教程链接和实战代码链接。
前向神经网络和BP算法 附python代码(minst手写体识别)&spm=1001.2101.3001.5002&articleId=108263283&d=1&t=3&u=9d93fcd230f14bca838a02c710aabf1c)
2170

被折叠的 条评论
为什么被折叠?



