本系列旨在通过阅读官方pytorch代码熟悉CNN各个框架的实现方式和流程。
【pytorch官方文档学习之八】PyTorch: Control Flow + Weight Sharing
- 本文是对官方文档PyTorch: Control Flow + Weight Sharing的详细注释和个人理解,欢迎交流。
- 实例
为了举例说明动态图(dynamic graph
)和权值共享(weight sharing
),以下实例实现的是一个奇怪的模型——全连接ReLU网络:其前向传播过程随机选择1~4间的一个数字并在多个隐藏层使用,多次复用相同的权重来计算最深层的隐藏层。模型中使用的是普通的python flow control
实现loop,并且当定义forward时通过多次复用相同的module的方式来实现深层隐藏层之间的权值共享。
# -*- coding: utf-8 -*-
import random
import torch
class DynamicNet(torch.nn.Module):
def __init__(self, D_in, H, D_out):
"""
In the constructor we construct three nn.Linear instances that we will use
in the forward pass.
"""
super(DynamicNet, self).__init__(