神经网络学习系列(一)前向神经网络和BP算法 附python代码(minst手写体识别)

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

神经网络学习系列(一)前向神经网络和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]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值