第二章 感知机
1逻辑门
错误:python 出现的异常
inconsistent use of tabs and spaces in indentation
意思是:在缩进中不一致地使用制表符和空格
解决:将所有tabs 改成空格。(所以python需要很严格的格式,对齐很重要 )
原因:自动换行 导致tabs 出现
1.1 与门
偏置b,是整根神经元被激活的容易程度
第三章****从感知机到神经网络
1 activate function
激活函数,正如其名,决定如何激活输入信号总和
1.1sigmoid函数实现
1.2阶跃函数
1.3ReLU函数(修正线性单元)
2 多维数组/ 矩阵
2.1 矩阵乘积
2.2多层神经网络
按神经网络实现惯例重新整理以上代码
init_network() 初始化权重和偏置
forword() 封装了将输入信号转换为输出信号的处理过程。与之后的backword()对比学习
2.3 输出层设计
2.3.1 softmax
a)函数实现
python函数
注意:由于softmax 指数函数容易出现溢出问题
处理:将输入信号减去信号中的最大值,再做处理
b) softmax 函数的 征
softmax输出在0.0到1.0之间,且其输出总值和为1,并将其输出解释为概率
softmax函数图像实现
2.3 手写数字识别
2.3.1下载tensorflow
参考以下博文,从Anaconda 下载tensorflow
https://blog.csdn.net/weixin_40327145/article/details/83149028
如下图等待下载安装
因为权限问题,tensorflow 再次安装失败,但是好像在这个过程中,我把自己电脑的pip升级了。之后又重新寻找文,
https://jingyan.baidu.com/article/c74d6000a368090f6a595d95.html
终于,我关机后,第二天重新找文安装tensorflow,下载安装都没有问题。
但是在import tensorflow 时出现了问题,ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败
反思(绕坑):
1)自己的电脑配置不够,tensorflow 安装cpu版本就行,
2)进入cmd时,以管理员身份打开,避免后期出现权限问题无法安装
3)电脑cpu版本过低,无法支持高版本tensorflow ,改为1.5
参照https://blog.csdn.net/lchzh1994/article/details/81223726
a. 卸载目前安装的tensorflow:pip uninstall tensorflow
b. 安装旧版本的tensorflow:pip install --ignore-installed --upgrade tensorflow==1.5(注意上文有误“tensorflow ==1.5”这里tensorflow后面不要加空格键,否则会报错)
安装成功,输入activate tensorflow 又出现错误
所以我直接进入python环境,直接import tensorflow as tf,再测试,成功
2.3.2 MNIST数据集下载
根据下文
https://www.jianshu.com/p/83684c06fff5
注意:
1) 下面的地址是 MNIST数据集自定义存储的位置,
2)在编写执行代码过程中,介意理解以下内容,并且注意格式空格http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html
运算结果正确如下
2.3.3显示MNIST图像
学习以下博文
python读取,显示,保存mnist图片
https://www.cnblogs.com/zhouyang209117/p/6436751.html
1)我的mnist数据保存路径
E:\Program Files\Python3.5\mnist_data\t10k-images.idx3-ubyte
2)大端方式
https://blog.csdn.net/zx013650/article/details/80068436
(我把自己的电脑内存条升级,并且加了固态硬盘,使用win10+Anoconda3 安装各种软件,Anaconda 果然很好用!最近还要安装VTK,又要耽误学习进度)
3)测试代码成功
第四章
主要是双层神经网络的学习,我在博文上学习了如何使用tensroflow 识别mnist,便跳过此章
第五章误差反向传播
https://blog.csdn.net/u013527419/article/details/53906845
1.计算图
计算图圆圈表示节点,圆圈内表示计算方式(处理方式,函数,或加减乘除),箭头上的值表示被操作的变量(直观上要区别于神经网络系统的构图成分和意义),计算图可以集中精力于局部计算。
(书P125) ,如:买两个苹果加上税率得到总支付金额,假如,想知道苹果上涨的价格会在多大程度上影响最终支付结果,则需要计算导数,既支付金额L关于苹果价格x 的导数。若导数为1.1,则苹果每上升一元,则最终所支付金额多1.1元
2.反向传播基于链式求导
加法节点:直接向下游传递从上游接收的数字
乘法节点:xy=z,向下游传递翻转值
“/”节点:表示y=1/x,
“exp”节点:表示y=exp(x)
3.反向传播中矩阵的问题
4.神经网络中正向传播中的矩阵乘积运算在几何学中称为“仿射变换”(Affine)