关于gluon实现静态图转换的问题

各位好:
关于gluon能够将命令式编程(动态图)网络转换为符号式编程(静态图),我有一个原理上的问题,望不吝指教。
先前一直在使用pytorch,现将转移至mxnet。在pytorch网络中使用的是动态图,graph随着代码的执行过程逐渐建立。因此在网络中不可避免会存在分支现象。如下
class LeNet(nn.Module):
def init(self,flag):
super(LeNet, self).init()
self._flag=flag
self.param1=nn.Sequential(
nn.Conv2d(1,20,5),
nn.MaxPool2d(kernel_size=2, stride=2)
)
self.param2=nn.Sequential(
nn.Conv2d(1,20,5),
nn.MaxPool2d(kernel_size=1, stride=1)
)

def forward(self,x):
if flag==0:
x=self.param1(x)
else:
x=self.param2(x)

最终,网络的前向计算过程会随着创建网络时指定的flag值得变化而变化,也就是说flag的值改变了网络的结构。那么在这种情况下,如果是使用mxnet的gluon,能否将类似的网络转化为静态结构?如果能够转换为静态结构,那么在转换的结果中,是只保存了某一个分支的静态结构,还是保存了所有分支的静态结构?
谢谢

您好!您的问题解决了吗?

我在gluon中也遇到了类似的问题,需要根据网络前向传入的参数来选择具体的分支,在我的实验里使用imperative模式是可以正常训练的,但是训练实在太慢了,而且使用多卡训练也不能起到加速效果。

我在想当控制网络分支的参数固定时,是否可以转成静态图,训练一段时间,在需要更换网络结构时,再切换成动态图,如此往复。这样只需要在切换网络的时候使用动态图,训练网络时用的一直是静态图,就可以使用Hybrid模式训练(hybrid比imperative快很多),但是不会实现,您有什么看法吗。

期待您的回复!