实验一
内容:
使用numpy实现深度学习任务中的一些基本操作,包括以下函数:
- sigmoid function
- sigmoid gradient function
- softmax function
- cross entropy loss function
目标:
- 熟悉numpy的一些基本函数
- 理解sigmoid, softmax, cross entropy loss等函数
代码要求:
- 按代码模板实现函数功能
文档要求:
- 代码运行结果截图(main函数里的内容不要修改)
- sigmoid函数的公式及图像
- sigmoid函数梯度求解公式及图像
- softmax函数公式
- cross entropy loss function公式
- 它们在神经网络中有什么用处?
实验二
内容:
假设X有n个样本,属于m=3个类别, am
表示样本属于第m类的概率,请实现
的三次前向传播及反向传播(更新参数ω
和b
),每次反向传播结束后更新并输出参数ω
和b
的值,计算cross entropy loss,其中σ(∙)
表示sigmoid函数。
目标:
- 理解前向传播和反向传播
- 应用实验一中提到的基本操作
代码要求:
- 按代码模板实现函数功能
文档要求:
- 前向传播及反向传播涉及到的公式计算(参考)
- 粘贴代码输出结果截图。
实验三
内容:
建立Logistic回归分类器用来识别猫。参考1 和 参考2
目标:
- 基于实验二的拓展,进一步理解神经网络的思想
- 理解逻辑回归实际上是一个非常简单的神经网络
数据集介绍:
- datasets/train_catvnoncat.h5
保存的是训练集里面的图像数据(本训练集有209张64x64的图像)及对应的分类值(0或1,0表示不是猫,1表示是猫)
- datasets/ test_catvnoncat.h5
保存的是测试集里面的图像数据(本训练集有50张64x64的图像)及保存的是以bytes类型保存的两个字符串数据,数据为:[b’non-cat’ b’cat’]。
- lr_utils.py中有加载数据集的函数
代码要求
- 定义模型结构
- 初始化模型的参数
- 循环
- 计算当前损失(前向传播)
- 计算当前梯度(反向传播)
- 更新参数(梯度下降)
文档要求:
- 尝试不同的学习率(至少三种),观察不同学习率下随着迭代次数的增加损失值的变化,请粘贴不同学习率下损失的变化曲线图像,放到一张图像上,例如:
- 分析不同的学习率对模型准确率的影响及原因,如何选择合适的学习率。
实验四
内容:
利用具有1层隐藏层的神经网络分类红色和蓝色的花。参考1 和 参考2
数据集:
2分类数据集flower,红色和蓝色点的“花”。使用X, Y = planar_utils.load_planar_dataset()加载数据集,X为样本,共有400个,Y为样本对应的标签,0表示红色,1表示蓝色。
目标:
- 建立具有隐藏层的完整神经网络
- 善用非线性单位
- 实现正向传播和反向传播,并训练神经网络
- 了解不同隐藏层大小(包括过度拟合)的影响
代码要求:
- 定义模型结构
- 初始化模型的参数
- 循环
- 计算当前损失(前向传播),请使用Relu激活函数。
- 计算当前梯度(反向传播)
- 更新参数(梯度下降)
文档要求:
- 对比使用逻辑回归和使用具有1层隐藏层神经网络的分类效果(请粘贴2种方法分类效果图),哪种效果更好,分析原因。
- 调整隐藏层大小(至少5种大小),观察不同大小隐藏层的模型的不同表现,请粘贴分类效果图,当隐藏层过大或过小时,会出现什么问题,并分析原因。