查看一个tensor对象的shape,使用print(tensor.shape)报错AttributeError: 'list' object has no attribute 'size'
时间: 2023-07-30 19:10:26 浏览: 171
这个错误提示告诉我们,你在尝试查看一个列表对象的形状。由于列表对象并没有 `size` 属性,因此你需要确保你的对象是 PyTorch Tensor 而不是列表。
如果你已经确定你的对象是 PyTorch Tensor,但仍然出现这个错误,那么可能是因为你的 Tensor 对象没有正确地被创建。你需要检查一下你的代码,确保你正确地创建了 Tensor 对象,并且没有混淆列表和 Tensor 的情况。
另外,如果你是在使用 DataLoader 加载数据集时出现了这个错误,那么可能是因为你的数据集中包含了列表对象,而不是 PyTorch Tensor。在这种情况下,你需要将列表转换为 PyTorch Tensor,例如使用 `torch.tensor()` 函数。
以下是一个将列表对象转换为 PyTorch Tensor 的示例代码:
```python
import torch
my_list = [1, 2, 3, 4, 5]
my_tensor = torch.tensor(my_list)
print(my_tensor.shape)
```
上述代码将输出 Tensor 对象的形状 `(5,)`,其中包含了 5 个元素。请注意,这里我们将包含 5 个数字的列表 `my_list` 转换为 PyTorch Tensor `my_tensor`,然后使用 `print()` 函数查看了 Tensor 对象的形状。
相关问题
num_in=input.get_shape()[-1].value报错AttributeError: 'int' object has no attribute 'value'
这个错误可能是因为`get_shape()`返回的尺寸信息是一个元组而不是一个Tensor对象,因此无法访问其属性`value`。你可以尝试使用`tf.shape`代替`get_shape()`,它会返回一个Tensor对象,从而可以访问其属性。例如:
```
import tensorflow as tf
input = tf.placeholder(tf.float32, shape=[None, 10])
num_in = tf.shape(input)[-1]
print(num_in)
```
这样就可以得到正确的输出,即10。
报错AttributeError: 'Tensor' object has no attribute 'numpy'
这个报错是因为 Tensor 对象没有 numpy 属性,而在使用 numpy 相关操作时需要将 Tensor 转换成 numpy 数组。如果你想要获取 Tensor 对象的值,可以使用 TensorFlow 中的 .eval() 或者 .numpy() 方法将 Tensor 转换成 numpy 数组。例如:
```python
import tensorflow as tf
a = tf.constant([1, 2, 3])
sess = tf.Session()
print(sess.run(a)) # 输出 [1 2 3]
print(a.eval(session=sess)) # 输出 [1 2 3]
print(a.numpy()) # 输出 [1 2 3]
```
阅读全文