深度学习框架Lasagne的技巧总结(2)——参数的更新与不更新

如果你是一个在神经网络中做过诸多尝试,尤其是自己设计很多结构而不是照搬的话,那么在实际应用构建网络的时候,我相信经常有这样一个需求:需要让某些参数不更新。

这样的场景可能出现在训练好的词向量、预训练好的带参数的网络模块、信度分配容易出现问题的底层中等。

如何在Lasagne中实现参数的差异化呢?

这里有两个方法:

1. 通过在网络参数初始化时候给参数通过拟定不同的标签来过滤。
2. 直接修改网络参数列表,在update过程中避免某些参数的参与。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DQN(深度 Q 网络)是一种用于强化学习的神经网络模型,它通过优化网络参数来最大化累积奖励的期望值。下面是一个用 Matlab 编写的简单的 DQN 参数更新程序: 首先,我们需要定义一些变量和初始化网络参数: ``` alpha = 0.01; % 学习率 gamma = 0.9; % 折扣因子 % 初始化网络参数(假设有一个单隐藏层的神经网络) input_size = 10; % 输入层神经元数量 hidden_size = 20; % 隐藏层神经元数量 output_size = 5; % 输出层神经元数量 % 随机初始化权重 W1 = rand(hidden_size, input_size); W2 = rand(output_size, hidden_size); ``` 接下来,我们定义神经网络的前向传播和反向传播过程: ``` % 前向传播 z2 = W1 * input; % 隐藏层的输入 a2 = sigmoid(z2); % 隐藏层的输出 z3 = W2 * a2; % 输出层的输入 output = softmax(z3); % 输出层的输出 % 反向传播 delta3 = output - target; % 输出层的误差 delta2 = (W2' * delta3) .* sigmoid_gradient(z2); % 隐藏层的误差 % 更新权重 W2 = W2 - alpha * delta3 * a2'; W1 = W1 - alpha * delta2 * input'; ``` 最后,我们可以将上述过程封装到一个循环中,不断迭代更新网络参数: ``` for iter = 1:num_of_iterations % 前向传播和反向传播 % 更新权重 % 更新目标值和输入 % 计算累积奖励 % 更新参数 % 计算损失函数 % 输出相关信息 end ``` 以上是一个简单的 DQN 参数更新的 Matlab 程序,具体的实现会因具体问题而有所变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值