从文本文件加载pytorch的n维张量



我有一个在python代码之外创建的三维张量,并且能够以任何人类可读的格式进行编码。我需要将这个张量的值作为冻结层加载到我的pytorchNN中。我尝试将张量编码为[[[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中。

最新更新