我有一个在python代码之外创建的三维张量,并且能够以任何人类可读的格式进行编码。我需要将这个张量的值作为冻结层加载到我的pytorch
NN中。我尝试将张量编码为[[[a,b],[c,d]], [[e,f], [g,h]], [[k,l],[m,n]]]
形式的文本文件,这似乎是最合乎逻辑的方式。然后我试着通过读取它的值
tensor = torch.from_numpy(np.loadtxt("./arrays/tensor.txt"))
但在npyio.py
中出现异常
ValueError: could not convert string to float: '[[[-2.888356,'
显然,它不是这样工作的,值被写为用空格和n
分隔的普通数字,但我不知道如何轻松读取维度>=的数据2与CCD_ 5。
还有什么简单的方法可以将张量值写下来并读取为pytorch
张量?
您尝试过使用Python内置的eval
吗?如果您将张量保存为文本文件中的列表,您可以尝试以下操作:
with open("./arrays/tensor.txt","r") as f:
loaded_list = eval(f.read())
loaded_tensor = torch.tensor(loaded_list)
eval
将负责将字符串转换为列表,然后使用torch.tensor()
将结果强制转换为Tensor
。根据需要,加载的张量将处于loaded_tensor
中。