有其他框架的基础,看一下这个项目中的速成部分,能快速上手
https://github.com/ceo1207/pytorch-lesson-zh
新建网络
A、使用tensor运算,会自动构建网络
tensor运算
可以使用运算符,+、-等,可以使用torch.xx,也可以tensor.xx在原tensor上做运算
Tensor
sum(dim=None, keepdim=False, dtype=None) → Tensor
pow(exponent) → Tensor
mm(mat2) → Tensor
torch
torch.mm(mat1, mat2, out=None) → Tensor
torch.clamp(input, min, max, out=None) → Tensor
B、override forward and init
继承Module,复写相关函数,之后讲述
如何向网络输入,获取输出和loss,更新权重
可以全手动计算grad、更新参数,这对新手理解神经网络的传播和反向传播很有帮助
示例:
import torch
# M是样本数量,input_size是输入层大小
# hidden_size是隐含层大小,output_size是输出层大小
M, input_size, hidden_size, output_size = 64, 1000, 100, 10
# 生成随机数当作样本
x = torch.randn(M, input_size) #size(64, 1000)
y = torch.randn(M, output_size) #size(64, 10)
# 参数初始化
def init_parameters():
w1 = torch.randn(input_size, hidden_size)
w2 = torch.randn(hidden_size, output_size)
b1 = torch.randn(1, hidden_size)
b2 = torch.randn(1, output_size)
return {"w1": w1, "w2":w2, "b1": b1, "b2": b2}
# 定义模型
def model(x, parameters):