选择pytorch的好处有什么
- python化的编程风格(相对于tensorflow的混合编程风格而言)
- tensor与numpy相同的格式,但计算可以放到gpu上进行加速计算
- 可以生成一个动态计算图Dynamic Computation Graph(最主要特性)
关于动态计算图
圆形节点表示一种运算如MM,Add 方形节点表示变量 箭头表示依赖关系 运算顺序从上到下,相当于多个函数嵌套 => 计算模型更加灵活复杂
也能让BP算法随时进行
DCG的实际编程实现
import torch
x = torch.ones(2, 2, requires_grad=True) # 需要打开requires_grad,定义一个自动微分变量
print(x)
y = x + 2
print(y.grad_fn) # 查看y在动态计算图图中的父节点
z = torch.mean(y*y) # 对y矩阵的值求平均值
print(z)
print(z.data)
z.backward() # 求叶节点梯度计算的结果存到x.grad中 => 自动微分
print(x.grad)
结果如图
总结
- BP算法是深度学习网络实现的一个重要基础,所以pytorch中的dcg可以让bp算法随时进行这个特点是我们选择它的一个最重要因素
- 其次通过.cuda可以把tensor放到gpu上进行运算加速
- 再次就是其统一而简洁的python化编程风格