+18888889999
诚信为本:市场永远在变,诚信永远不变。

两个串联的网络如何用联合优化(pytorch)?

你的位置: 首页 > 门徒平台资讯

两个串联的网络如何用联合优化(pytorch)?

2024-02-28 00:12:41

如自编码器如何将encoder和decoder写成两个串联的网络联合优化,optimizer该如何构建?

要先搞清楚网络串联的目的是什么?

其次,要明确两个网络的类型和结构是否相同?

以最简单的图像分类和同种网络串联为例:

既然串联两个网络,那么肯定是为了实现一个深度网络无法达到的功能。换句话说,两个网络的结果输出之间的关系应该是递进的且不可合并的。

通常这两个网络可以被认为是相互独立的,在pytorch框架中以常规方式训练即可。而串联的关键应该是在训练数据上,要对两类网络的数据进行重新构建。如果功能是递进的,数据应该也是递进的。

也可以思考类似知识蒸馏和联邦学习的方式,具体问题需要具体分析。

data→encoder→decoder→result?label

"?":loss计算。


encoder和decoder封装成两个类,继承nn.Module;

接下来可以有两种方案:

1. 构建两个optimizer分别对应encoder.parameters()和decoder.parameters()。训练中,loss.backward()之后,调用两个optimizer进行优化。

2. 将encoder.parameters()和decoder.parameters()进行合并,构建一个optimizer用于优化参数。训练中,loss.backward()之后,调用optimizer进行优化。


两个优化器可以分别对encoder和decoder进行单独调节,学习率也可以分别设置。整个过程需要确保可导。

也需要根据具体情况具体分析,看loss的位置,也可以通过梯度截断灵活调整。

地址:海南省海口市玉沙路58号  电话:0898-66889888  手机:18888889999
Copyright © 2012-2018 门徒-门徒娱乐-注册登录站 版权所有 ICP备案编:琼ICP备88889999号 

平台注册入口