我有一个CSV,其中存储了一些张量形式的文档嵌入。类似这样的东西:
>>> data.loc[0]['Q_emd_list']
'tensor([ 0.1210, -1.1949, 0.1806, ..., 0.3578, -0.1209, 0.4065])'
但如图所示,这是一根绳子。如何将其转换为张量。我试着用ast,但没有用。
import ast
q_emd = ast.literal_eval(data.loc[0]['Q_emd_list'])
这给出了一个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/anaconda/envs/py38_default/lib/python3.8/ast.py", line 99, in literal_eval
return _convert(node_or_string)
File "/anaconda/envs/py38_default/lib/python3.8/ast.py", line 98, in _convert
return _convert_signed_num(node)
File "/anaconda/envs/py38_default/lib/python3.8/ast.py", line 75, in _convert_signed_num
return _convert_num(node)
File "/anaconda/envs/py38_default/lib/python3.8/ast.py", line 66, in _convert_num
_raise_malformed_node(node)
File "/anaconda/envs/py38_default/lib/python3.8/ast.py", line 63, in _raise_malformed_node
raise ValueError(f'malformed node or string: {node!r}')
ValueError: malformed node or string: <_ast.Call object at 0x7fbe6203f580>
如有任何帮助,我们将不胜感激。
使用eval
方法可以将字符串转换为变量。
尝试:
import torch
temp_string = 'tensor([0.1210, -1.1949, 0.1806, 0.3578, -0.1209, 0.4065])'
temp_tensor = eval("torch." + temp_string)
print(temp_tensor, temp_tensor.shape)