吴恩达深度学习编程作业——Planar data classification with one hidden layer

本文介绍了构建一个具有单隐藏层的神经网络,用于处理非线性可分的Planar数据集。通过实现前向传播、反向传播、交叉熵损失计算,实现了神经网络模型。初始的逻辑回归精确度仅为47%,而神经网络模型在调整隐藏层大小后,精度提升至90%,揭示了非线性激活函数的优势。同时,讨论了隐藏层数量对模型性能的影响,指出过多的隐藏层可能导致过拟合,可通过正则化来缓解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.准备工作
主要任务:
构架你的第一个神经网络,它只有一个隐藏层,你将会看到这个模型和使用逻辑回归模型的很大不同。
你将会学到:
1.操作2值分类器
2.使用非线性激活函数
3.计算交叉熵损失
4.操作前向和后向传播
2.数据集
加载数据集,将二分类数据集加载成变量X,Y

X, Y = load_planar_dataset()

红色(label y=0)蓝色(label y=1)
使用matplotlib实现数据可视化
可视化结果
注:数组X包含了特征值,数组Y包含了标签。
3.简单的逻辑回归
首先运行已经写好的逻辑回归分类器查看精确度:
在这里插入图片描述
在这里插入图片描述
最终获取的精确度47%,可见精确度还很低为后续优化做准备。产生这样结果的原因是数据集不是线性可分的,所以逻辑回归表现并不好。
4.神经网络模型
神经网络模型图
如图所示,这是一个简单的只含有一个隐藏层的神经网络模型。
难点在于前后向传播使用的计算公式:
前向传播
其中 i 表示第几个样本。
给出所有样本的预测就可以计算总成本:
成本J计算公式
注:构建一个神经网络的基本方法:
1.构建网络结构
2.初始化模型参数
3.操作前向传播——计算损失——操作后向传播——获取梯度——更新模型参数
分步构建模型,再将每个步骤融合到一个函数中,完成构建后就可以对新数据进行评估。
4.1定义神经网络结构

# GRADED FUNCTION: layer_sizes

def layer_sizes(X, Y):
    """
    Arguments:
    X -- input dataset of shape (input size, number of examples)
    Y -- labels of shape (output size, number of examples)
    
    Returns:
    n_x -- the size of the input layer
    n_h -- the size of the hidden layer
    n_y -- the size of the output layer
    """
    ### START CODE HERE ### (≈ 3 lines of code)
    # size of input layer
    n_x = X.shape[0]
    n_h = 4
    n_y = Y.shape[0]
    # size of output layer
    ### END CODE HERE ###
    return (n_x, n_h, n_y)
X_assess, Y_assess = layer_sizes_test_case()
(n_x, n_h, n_y) = layer_sizes(X_assess, Y_assess)
print("The size of the input layer is: n_x = " + str(n_x))
print("The size of the hidden layer is: n_h = " + str(n_h))
print("The size of the output layer is: n_y = " + str(n_y))

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值