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

只用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日

悬赏问题

  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用