L0 pytorch 构建简单网络
本文是L0, 目的是把pytorch构建感知器的程序,仔细剖析理解。
import torch
from torch import nn
torch.__version__
'1.3.0'
STEP 1 手工定义全连接层Linear
#torch.nn是专门为深度学习设计的模块。torch.nn的核心数据结构是Module
#它是一个抽象的概念,#既可以表示神经网络中的某个层(layer),
#也可以表示一个包含很多层的神经网络
#class Linear(nn.Module):
# def __init__(self,in_dim,out_dim):
# def forward(self,x):
# 手工定义全连接层,写forward
class Linear(nn.Module):
def __init__(self,in_dim,out_dim):
super(Linear,self).__init__()
#调用nn.Moudule 的初始化函数,首先找到Linear的父类nn.Moudle
#然后把类Linear的对象self转换为类nn.Moudle的对象,然后“被转换”的类nn.Moudle对象调用自己的__init__函数
#也可以写成nn.Module.__init__(self)
#在构造函数__init__中必须自己定义可学习的参数,并封装成Parameter
# parameter是一种特殊的Variable,但其默认需要求导(requires_grad = True)
self.w = nn.Parameter(torch.randn(in_dim,out_dim))
self.b = nn.Parameter(torch.randn(out_dim))
def forward(self ,x):
x=x.matmul(self.w) #使用Tensor.matmul 实现w*x矩阵相乘
y=x&#