tensor类型与list类型数据的一些区别

由tensorflow的一些函数创建的数据和直接创建的list,tuple等数据使用是有一些区别的,故记录以供查阅。

1. 索引的差别:

[(1,2),(3,4),(6,7)] 想要得到每一个tuple的第二个数,即[2,4,7]

a = [(1,2),(3,4),(6,7)]

a[:,1]
Traceback (most recent call last):

  File "<ipython-input-6-140fc7631e6a>", line 1, in <module>
    a[:,1]

TypeError: list indices must be integers or slices, not tuple

a[1]
Out[15]: (3, 4)

a[:][1]              # 不明白这样的结果
Out[16]: (3, 4)

tensor就很容易:

b=tf.constant([(1,2),(3,4),(6,7)])
with tf.Session() as sess:
    print(b[:,1].eval())

output:[2 4 7]

归其原因:b.shape=(3,2) 所以可以用矩阵的索引来处理

进一步,若用numpy声明,则和tensor异曲同工:

c=np.array([(1,2),(3,4),(6,7)])

c[:,1]
Out[26]: array([2, 4, 7])

另外,list和numpy都可以用for循环,而tensor不可以

for i in b:
    print(i)
    
Traceback (most recent call last):

  File "<ipython-input-33-5049783fdcea>", line 1, in <module>
    for i in b:

TypeError: Tensor objects are not iterable when eager execution is not enabled. To iterate over this tensor use tf.map_fn.

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值