数据操作的课后练习题
2.1.8. 练习¶
-
运行本节中的代码。将本节中的条件语句 X == Y
更改为 X < Y
或 X > Y
,然后看看你可以得到什么样的张量。
-
用其他形状(例如三维张量)替换广播机制中按元素操作的两个张量。结果是否与预期相同
问题解答:
1.该问题较为简单,针对前面创建的两个Tensor进行比较
X = torch.arange(12, dtype=torch.float32).reshape((3, 4))
Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4],[4, 3, 2, 1]])
在进行比较之后,有
X == Y
tensor([[False, True, False, True],
[False, False, False, False],
[False, False, False, False]])
X < Y
tensor([[ True, False, True, False],
[False, False, False, False],
[False, False, False, False]])
X > Y
tensor([[False, False, False, False],
[ True, True, True, True],
[ True, True, True, True]])
2.考虑到两个tensor处于不同形状的话,会往高阶tensor进行转化,可以进行以下测试:
一个是一维一个是二维
x = torch.tensor([1.0, 2, 4, 8])
y = torch.tensor([[2, 2, 2, 2]])
x + y, x - y, x * y, x / y, x ** y
(tensor([[ 3., 4., 6., 10.]]),
tensor([[-1., 0., 2., 6.]]),
tensor([[ 2., 4., 8., 16.]]),
tensor([[0.5000, 1.0000, 2.0000, 4.0000]]),
tensor([[ 1., 4., 16., 64.]]))
一个是一维一个是三维
x = torch.tensor([1.0, 2, 4, 8])
y = torch.tensor([[[2, 2, 2, 2]]])
x + y, x - y, x * y, x / y, x ** y
(tensor([[[ 3., 4., 6., 10.]]]),
tensor([[[-1., 0., 2., 6.]]]),
tensor([[[ 2., 4., 8., 16.]]]),
tensor([[[0.5000, 1.0000, 2.0000, 4.0000]]]),
tensor([[[ 1., 4., 16., 64.]]]))
可以看到在进行操作之后变成了三维的tensor,与预期相同