资料:吴恩达深度学习的作业(jupyter notebook)有翻译的和原版的。
(1)CSDN博客:Coursera吴恩达《神经网络与深度学习》课程笔记(4)-- 浅层神经网络
(2)作业部分:吴恩达深度学习第三周作业(Planar data classification with one hidden layer) 思路写的比较好,好好参考
题目:用一个隐藏层进行平面数据分类
建立含有一个隐藏层的神经网络,这与前面的逻辑回归模型由很大的区别。具有单个隐藏层的二分类神经网络,使用非线性激活函数tanh,计算交叉entropy loss,实现前向传播和反向传播。
- (1)数据集:随机生成的,用sin和cos生成的400个样本,维度为2。x=(rsinθ,rcosθ),y=0 or 1.
- 调用sklearn的包使用简单的逻辑回归看一下,结果如下:准确率为47%,因为数据集本身不是线性可分的,所以逻辑回归的表现不好。
- (2)使用两层的神经网络来进行分类
建立神经网络的步骤如下:
- 定义网络的结构:输入层单元数,隐藏层单元数等
- 初始化模型参数
- 循环:前向传播,计算代价函数,后向传播得到梯度,更新参数(梯度下降)
- (3)定义神经网络结构:输入层n_x,由输入特征决定,隐藏层n_h,输出层n_y,由输出类数决定
- (4)初始化参数W,b:W初始化为很小的数,b初始化为0。
https://blog.csdn.net/red_stone1/article/details/78018269 来自11.随机初始化:
# 加载数据
X, Y = load_planar_dataset()
# 定义神经网络的结构
def layer_sizes(X, Y):
n_x = X.shape[0] # 输入层由数据特征的个数决定
n_h = 4
n_y = Y.shape[0] #输出类数决定
return (n_x, n_h, n_y)
# 初始化模型参数
def initialize_parameters(n_x, n_h, n_y):