目录
神经网络运作流程
上图所示是一个简单的二层神经网络结构,猫和狗的图片作为输入,依次是输入层,隐层,输出层。每张图片作为输入经过模型得到输出判别是猫还是狗,将输入与真实值之间求误差,再对误差求梯度优化参数w和b,使最后得到的误差尽可能小。
回顾
上一个博客中我们讲到,我们将输入X经过一个线性模型得再通过ReLU激活函数得到H1,在经过一次ReLU得到H2,最后一层通常并不使用ReLU激活函数,常见的有sigmoid,softmax的函数,这里我们直接通过一个线性模型得到H3,即为最终的预测输出。
识别的四个步骤
1.首先通过pytorch自带函数完成minist数据集的下载,解析,读取图片
2.建立如上图所示的三层非线性模型
3.输入训练集完成参数的优化
4.输入测试集对训练好的模型进行评估
实现代码
辅助代码utils.py
import torch
from matplotlib import pyplot as plt
def plot_curve(data):#绘制曲线
fig = plt.figure()#创建一个图片
plt.plot(range(len(data)), data, color='blue')
#图片横坐标为0-数据长度 纵坐标为数据 颜色蓝色
plt.legend(['value'], loc='upper right')
plt.xlabel('step')
plt.ylabel('value')
#图片横纵坐标的label
plt.show()
#显示图片
def plot_image(img, label, name):#显示图片
fig = plt.figure()#创建一个图片对象
for i in range(6):
plt.subplot(2, 3, i + 1)#子图
plt.tight_layout()#自动调整子图参数 未必会工作
plt.imshow(img[i][0]*0.3081+0.1307, cmap='gray', interpolation='n