微信内部劵网站怎么做,太平洋车险报价入口,网页设计html代码大全菜鸟,苏州建设信息网一 、问题 如何计算基于不同变量的操作如矩阵乘法。
二、具体实现 0.4版本以前#xff0c;张量是包裹在变量之中的#xff0c;后者有三个属性grad、volatile和 requires_grad属性。#xff08;grad 就是梯度属性#xff0c;requires_grad属性就是 是否需要存储梯度#x…一 、问题 如何计算基于不同变量的操作如矩阵乘法。
二、具体实现 0.4版本以前张量是包裹在变量之中的后者有三个属性grad、volatile和 requires_grad属性。grad 就是梯度属性requires_grad属性就是 是否需要存储梯度volatileTrue是Variable的另一个重要的标识它能够将所有依赖它的节点全部设为volatileTrue其优先级比requires_gradTrue高。因而volatileTrue的节点不会求导即使requires_gradTrue也不会进行反向传播对于不需要反向传播的情景(inference测试推断)从0.4起, Variable 正式合并入Tensor, Variable 本来实现的自动微分功能Tensor就能支持。读者还是可以使用Variable(tensor), 但是这个操作其实什么都没做。建议读者以后直接使用tensor。 代码
z Variable(torch.Tensor(4, 4).uniform_(-5, 5)) #生成一个4×4 的均匀分布产生的张量;print(z)tensor([[-0.3071, -3.6691, -2.8417, -1.1818],
[-1.4654, -0.4344, -2.0130, -2.3842],
[ 1.3962, 1.4962, -2.0996, 1.8881],
[-1.9797, 0.2337, -1.0308, 0.1266]])print(Requires Gradient : %s % (z.requires_grad))
print(Volatile : %s % (z.volatile))
print(Gradient : %s % (z.grad))
print(z.data)Requires Gradient : False
Volatile : False
Gradient : None
tensor([[-0.3071, -3.6691, -2.8417, -1.1818],
[-1.4654, -0.4344, -2.0130, -2.3842],
[ 1.3962, 1.4962, -2.0996, 1.8881],
[-1.9797, 0.2337, -1.0308, 0.1266]]) 三、问题2 如何基于变量计算如矩阵—向量、矩阵—矩阵以及向量—向量计算呢 四、实现方式 首要的条件是张量的长度或形状必须匹配才能进行矩阵基础的运算标量的张量定义就是一个数字1D张量就是向量,2D张量就是矩阵。n维度矩阵时就可以归纳为张量。在pytorch中进行代数计算时矩阵和向量或标量的维度必须匹配。
#张量操作
mat1 torch.FloatTensor(4,4).uniform_(0,1)
mat1
tensor([[0.9002, 0.9188, 0.1386, 0.3701], [0.1947, 0.2268, 0.9587, 0.2615], [0.7256, 0.7673, 0.5667, 0.1863], [0.4642, 0.4016, 0.9981, 0.8452]])
mat2 torch.FloatTensor(4,4).uniform_(0,1)
mat2
tensor([[0.4962, 0.4947, 0.8344, 0.6721], [0.1182, 0.5997, 0.8990, 0.8252], [0.1466, 0.1093, 0.8135, 0.9047], [0.2486, 0.1873, 0.6159, 0.2471]])
vec1 torch.FloatTensor(4).uniform_(0,1)
vec1
tensor([0.7582, 0.6879, 0.8949, 0.3995])# 标量加法
mat1 10.5
tensor([[11.4002, 11.4188, 10.6386, 10.8701], [10.6947, 10.7268, 11.4587, 10.7615], [11.2256, 11.2673, 11.0667, 10.6863], [10.9642, 10.9016, 11.4981, 11.3452]])# 标量减法
mat2 - 0.20tensor([[ 0.2962, 0.2947, 0.6344, 0.4721], [-0.0818, 0.3997, 0.6990, 0.6252], [-0.0534, -0.0907, 0.6135, 0.7047], [ 0.0486, -0.0127, 0.4159, 0.0471]])# 向量和矩阵加法mat1 vec1
tensor([[1.6584, 1.6067, 1.0335, 0.7695], [0.9530, 0.9147, 1.8537, 0.6610], [1.4839, 1.4553, 1.4616, 0.5858], [1.2224, 1.0895, 1.8931, 1.2446]])mat2 vec1
tensor([[1.2544, 1.1826, 1.7293, 1.0716], [0.8764, 1.2876, 1.7939, 1.2247], [0.9049, 0.7972, 1.7084, 1.3042], [1.0068, 0.8752, 1.5108, 0.6466]])# 如果矩阵维度不同 则不适合矩阵加法和乘法。如果矩阵维度一样则可以相乘。
“表示常规的数学上定义的矩阵相乘*表示两个矩阵对应位置处的两个元素相乘。”
In the following script, the matrix addition throws an error when you multiply similar dimensions—mat1 with mat1. You get relevant results.# matrix-matrix addition
mat1 mat2
tensor([[1.3963, 1.4135, 0.9730, 1.0422], [0.3129, 0.8265, 1.8577, 1.0867], [0.8722, 0.8766, 1.3802, 1.0910], [0.7127, 0.5888, 1.6141, 1.0923]])
mat1 * mat1
tensor([[0.8103, 0.8442, 0.0192, 0.1370], [0.0379, 0.0514, 0.9192, 0.0684], [0.5265, 0.5888, 0.3211, 0.0347], [0.2155, 0.1613, 0.9963, 0.7143]])