我有两个火炬张量。一种有形[64, 4, 300],一种有形[64, 300]。如何连接这两个张量以获得 shape 的合成张量[64, 5, 300]。我知道tensor.cat用于此的函数,但为了使用该函数,我需要重塑第二个张量以匹配张量的维数。我听说不应该对张量进行整形,因为它可能会弄乱张量中的数据。我该如何进行这种连接?
我试过重塑,但接下来的部分让我对这种重塑更加怀疑。
a = torch.rand(64,300)
a1 = a.reshape(64,1,300)
list(a1[0]) == list(a)
Out[32]: False
Run Code Online (Sandbox Code Playgroud) 我遇到了一个用于torch.einsum计算张量乘法的代码。我能够理解低阶张量的工作原理,但是不能理解 4D 张量的工作原理,如下所示:
import torch
a = torch.rand((3, 5, 2, 10))
b = torch.rand((3, 4, 2, 10))
c = torch.einsum('nxhd,nyhd->nhxy', [a,b])
print(c.size())
# output: torch.Size([3, 2, 5, 4])
Run Code Online (Sandbox Code Playgroud)
我需要以下方面的帮助:
torch.einsum在这种情况下实际上有好处吗?我有一个变量losses_all = []想要转换为 np.array。我尝试使用代码执行此操作并收到以下错误:
# convert to numpy array
losses = np.array(losses_all)
# ERROR MESSAGE
RuntimeError: Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个,但出现以下错误:
# using code from error message above
losses=losses_all.detach().numpy()
# NEW ERROR MESSAGE
AttributeError: 'list' object has no attribute 'detach'
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以将此变量转换为数组吗?
我编写了一个自定义的 pytorch Dataset,该__getitem__()函数返回一个 shape 的张量(250, 150),然后我用来DataLoader生成一批批大小为 10 的数据。我的意图是拥有一个 shape 的批,(2500, 150)作为这 10 个张量沿维度 0 的串联,但输出的DataLoader已有形状(10, 250, 150)。如何将 的输出转换为沿维度 0 串联的DataLoader形状?(2500, 150)
如何解决这个问题:
Traceback (most recent call last):
File "C:/Users/arulsuju/Desktop/OfflineSignatureVerification-master/OfflineSignatureVerification-master/main.py", line 4, in <module>
from Preprocessing import convert_to_image_tensor, invert_image
File "C:\Users\arulsuju\Desktop\OfflineSignatureVerification-master\OfflineSignatureVerification-master\Preprocessing.py", line 4, in <module>
from torch.tensor import Tensor
ModuleNotFoundError: No module named 'torch.tensor'
Run Code Online (Sandbox Code Playgroud)
在Python中我正在使用
from torch.tensor import Tensor
Run Code Online (Sandbox Code Playgroud)