Tensorflow中与张量形状有关的操作

改变张量的形状函数:

tf.reshape(
    tensor,  # 输入的张量
    shape,   # 想要改变的形状
    name=None # 操作的名称
)

这个操作不会改变tensor本身的形状,而是返回一个形状为shape,而值和tensor对应的张量。如果有一个张量a,想要把张量a变化形状,可以:a=tf.reshape(a,shape)。shape是一个list,如果list有元素是-1,表示该维由系统自动计算,比如:

import tensorflow as tf

a = tf.constant([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]])
a1 = tf.reshape(a, [-1, 3])  # 形状是5,3
a2 = tf.reshape(a, [3, -1])  # 形状是3,5       #
print(a1)
print(a2)

获取张量的形状:

tf.shape(
    input, # 输入
    name=None, # 操作的名称
    out_type=tf.int32 # 控制返回值的类型
)

返回一个一维的整型张量、list或者array,表示input的形状。比如在feed数据的时候,我们想要获取一次输入数据的量,只能用tf.shape(x)[0]来获得。

张量本身的属性函数返回形状。

xxx.get_shape()

只有张量才有的操作,返回的是一个tuple类型,表示张量的维数。一个常用的属性是num_elements(),用来返回元素的个数,这个个数可以是维数,也可是元素真正的个数,看代码理解:

import tensorflow as tf

a = tf.constant([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]])
sess = tf.Session()
print(a.get_shape()[0:1].num_elements())  # 2
print(a.get_shape()[1:2].num_elements())  # 5
print(a.get_shape()[0:2].num_elements())  # 10
sess.close()

关于tensorflow中张量形状的文档
num_elements()是TennsorShape的一个属性,返回所有元素的个数。如果张量是不完整的,那么返回None

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值