R语言神经网络迭代过程中如何保存每轮w1~w6权重值
代码修改方案
只需两步即可保存全部迭代轮次的权重:
- 在迭代循环启动前,初始化权重存储矩阵
# 初始化存储矩阵:行数等于迭代次数,列数对应6个权重,设置列名方便后续调用 weight_history <- matrix(NA, nrow = numIter, ncol = 6, dimnames = list(NULL, c("w1","w2","w3","w4","w5","w6"))) # 如果需要额外保留初始权重,可在此处加一行 weight_history[1,] <- w
- 在循环末尾权重更新完成后,添加权重存储逻辑,修改后的循环末尾片段如下:
### update all parameters via a gradient descent w1 = w1 - gamma1*dE_dw1 w2 = w2 - gamma1*dE_dw2 w3 = w3 - gamma1*dE_dw3 w4 = w4 - gamma1*dE_dw4 w5 = w5 - gamma1*dE_dw5 w6 = w6 - gamma1*dE_dw6 w = c(w1, w2, w3, w4, w5, w6) # 新增:保存当前轮次更新后的权重 weight_history[i, ] <- w }
补充说明
如果你的需求是保存本轮迭代中用于前向传播、计算误差的权重(而非本轮梯度更新后的权重),只需要把存储代码放到循环开头的前向传播步骤之前即可:
for(i in 1:numIter){ # 新增:保存当前轮次迭代用的初始权重 weight_history[i, ] <- w ### forward res = forwardProp(input, w) # 其余代码保持不变... }
训练完成后,你可以直接通过weight_history[k, ]提取第k轮的全部权重,也可以直接基于该矩阵绘制各权重随迭代次数的变化趋势。
内容的提问来源于stack exchange,提问作者ahhahahahahah1234
相关产品推荐
相关产品推荐

