Berit_DU 2022-10-04 11:11 采纳率: 0%
浏览 85
已结题

只用numpy的神经网络

怎么理解下面代码


X = np.random.randint(0, 5, size=(500, 500))  # X:数据集的样本特征,共有有效数据500条,每条数据500个特征
y = np.random.randint(0, 1, size=(1, 500))  # y:数据集的样本标签,500条有效数据,每条对应一个标签,共有500个标签
 
    
    
# 本函数为权重参数初始化函数
# 自行决定初始化参数的方式(例如:全零初始化,随机初始化等)
def initial_parameters(in_, out_): 
    """ 
    in_ : 输入层神经元个数 
    out_: 输出层神经元个数
    w: 权重参数weights
    b: 偏置参数bias
    设计思路:w,b的规模应当满足前向传播计算中矩阵乘法的计算要求
    """
    
    parameters = {  
        'w' = w,
        'b' = b
    }
    return parameters # 该函数返回初始化好的权重参数字典
 
 
# 本函数为前向传播输出预测值
# 本函数实现对字典的更新即可,无需返回值
def feed_forward(parameters, X):
    """
    parameters: 参数字典,即初始化的权重参数 
    X: 输入值
    y_pred: 预测值
    设计思路:利用参数字典中的w,b和输入值X,先进性线性变换,再进行激活,完成前向传播。将得到的y_pred添加保存至参数字典中。
    """
    
  
    
    
# 本函数为反向传播求梯度
# 通过链式法则求出梯度
def gradient(parameters, X, y):  
    """
    parameters: 参数字典 
    X: 输入数据
    y: 输入数据
    dw: 权重参数的梯度
    db: 偏置参数的梯度
    设计思路:通过链式法则,得到w,b对损失函数的偏导数,得出dw,db。
    """
    
    grad = {
        'dw' = dw,
        'db' = db
    }
    
    return grad  # 该函数返回通过反向传播求出的梯度字典
 
 
# 本函数为使用梯度下降法更新权重参数
# 所用梯度为经反向传播求得的梯度
def update(grad, parameters, lr):
    """
    grad: 通过反向传播求出的梯度,保存了当前的dw,db
    parameters: 参数字典,保存了当前的w,b
    lr: 学习率,影响梯度下降的速度
    """
    
    return parameters  # 该函数返回更新后的参数字典```
  • 写回答

3条回答 默认 最新

    报告相同问题?

    相关推荐 更多相似问题

    问题事件

    • 已结题 10月5日
    • 修改了问题 10月4日
    • 修改了问题 10月4日
    • 创建了问题 10月4日

    悬赏问题

    • ¥60 有关C#的问题,基础牢固的来
    • ¥15 Python算法设计Seam carving--让图片比例随心缩放
    • ¥15 页面制作,HTML CSS
    • ¥15 通个批处理实现 win7和win10 修改或设置:显示操作系统列表时间为2秒
    • ¥20 报错:Unsupported class file major version 59
    • ¥18 如何使用c++语言完成网站用户管理系统?(语言-c++)
    • ¥15 用ASP代码实现跨站脚本攻击
    • ¥50 ABP中怎样接收vue上传的图片
    • ¥15 uniapp设置音频的倍速播放无效
    • ¥15 关于#hc#的问题,如何解决?