将写为字符串的张量转换为张量



我有一个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)

最新更新