如何将多张量列表仅以数值形式写入.txt文件?
解决方案
要提取张量中的纯数值并写入文件,你可以利用PyTorch张量的.numpy()方法将其转换为NumPy数组,再提取扁平化后的数值,这样就能完全去除tensor标识、括号和换行符。
方法1:写入纯文本文件(逗号分隔或每行一个数值)
import torch # 示例张量列表 tensors = [torch.tensor([[1.9946e-02, 1.4917e-02], [6.0340e-05, 2.4706e-02]]), torch.tensor([[1.4888e-02, 3.1763e-02]])] with open('tensors.txt', 'w') as out_file: all_values = [] for tensor in tensors: # 将张量转为NumPy数组,扁平化后转为字符串列表 values = tensor.numpy().flatten().astype(str) all_values.extend(values) # 用逗号分隔所有数值写入,若要每行一个数值则改用 '\n'.join(all_values) out_file.write(', '.join(all_values))
输出示例:
1.9946e-02, 1.4917e-02, 6.034e-05, 2.4706e-02, 1.4888e-02, 3.1763e-02
方法2:解决JSON序列化问题
JSON无法直接序列化PyTorch张量,只需先将张量转为Python原生的数值列表即可:
import torch import json tensors = [torch.tensor([[1.9946e-02, 1.4917e-02], [6.0340e-05, 2.4706e-02]]), torch.tensor([[1.4888e-02, 3.1763e-02]])] all_data = [] for tensor in tensors: # 将张量转为NumPy数组,扁平化后转为Python列表 all_data.extend(tensor.numpy().flatten().tolist()) with open('tensors.json', 'w') as f: json.dump(all_data, f)
生成的JSON内容:
[0.019946, 0.014917, 6.034e-05, 0.024706, 0.014888, 0.031763]
内容的提问来源于stack exchange,提问作者Alice
相关产品推荐
相关产品推荐

