Tensorflow 切片函数解析

 

函数 tf.slice(input_, begin, size, name = None)

该函数的作用是从输入数据input中提取出一块切片

输入参数介绍如下: 

  • input: 输入张量
  • size: 切片的尺寸, size[i]表示在第i个维度上切取的元素个数
  • begin: 切片的开始位置, begin[i]表示在第i个维度上的切取偏移

实例如下:   Github代码地址

import tensorflow as tf 
tf.enable_eager_execution()

input = tf.random_normal(shape=(2, 3, 4)) # shape [2, 3, 4]
slice1 = tf.slice(input, [0, 0, 0], [-1, 1, -1]) # shape [2, 1, 4] 切取第二个维度下的第一组数据
slice2 = tf.slice(input, [0, 1, 0], [-1, 1, -1]) # shape [2, 1, 4] 切取第二个维度下的第二组数据
slice3 = tf.slice(input, [0, 2, 0], [-1, 1, -1]) # shape [2, 1, 4] 切取第二个维度下的第三组数据
slice5 = tf.slice(input, [0, 0, 0], [-1, 2, -1]) # shape [2, 2, 4] 切取第二个维度下的前两组数据
slice6 = tf.slice(input, [0, 0, 0], [-1, 3, -1]) # shape [2, 3, 4] 切取第二个维度下的前三组数据
print("\ninput is: \n{}".format(input))
print("\nslice1 is:\n {}".format(slice1))
print("\nslice2 is:\n {}".format(slice2))
print("\nslice3 is:\n {}".format(slice3))
print("\nslice5 is:\n {}".format(slice5))
print("\nslice6 is:\n {}".format(slice6))


'''
input is: 
[[[-1.1159433   1.1852196  -1.02887    -1.6216067 ]
  [ 0.37896946 -1.1322068  -0.34731     0.4213005 ]
  [-0.8697083   0.83150536  0.33464772 -1.1267416 ]]

 [[ 0.88379246  1.090028    0.23926906  0.854103  ]
  [ 0.26111332  1.2733405   0.63280314 -0.8038424 ]
  [ 1.0581269  -0.6792132   0.72982126 -1.4329162 ]]]

slice1 is:
 [[[-1.1159433   1.1852196  -1.02887    -1.6216067 ]]

 [[ 0.88379246  1.090028    0.23926906  0.854103  ]]]

slice2 is:
 [[[ 0.37896946 -1.1322068  -0.34731     0.4213005 ]]

 [[ 0.26111332  1.2733405   0.63280314 -0.8038424 ]]]

slice3 is:
 [[[-0.8697083   0.83150536  0.33464772 -1.1267416 ]]

 [[ 1.0581269  -0.6792132   0.72982126 -1.4329162 ]]]

slice5 is:
 [[[-1.1159433   1.1852196  -1.02887    -1.6216067 ]
  [ 0.37896946 -1.1322068  -0.34731     0.4213005 ]]

 [[ 0.88379246  1.090028    0.23926906  0.854103  ]
  [ 0.26111332  1.2733405   0.63280314 -0.8038424 ]]]

slice6 is:
 [[[-1.1159433   1.1852196  -1.02887    -1.6216067 ]
  [ 0.37896946 -1.1322068  -0.34731     0.4213005 ]
  [-0.8697083   0.83150536  0.33464772 -1.1267416 ]]

 [[ 0.88379246  1.090028    0.23926906  0.854103  ]
  [ 0.26111332  1.2733405   0.63280314 -0.8038424 ]
  [ 1.0581269  -0.6792132   0.72982126 -1.4329162 ]]]

'''

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow中的切片操作是用来截取张量中的特定部分。通过指定开始和结束索引,可以获取张量中的子集。在TensorFlow中,切片操作使用冒号(:)作为分隔符,并且开始索引是包含在切片内的,而结束索引是不包含在切片内的。 下面是一个使用切片操作的例子: import tensorflow as tf a = tf.range(10) # 创建一个长度为10的张量 b = a[2:6] # 取出索引2到5的元素 print(b) # 输出 [2, 3, 4, 5] 通过这个例子,我们可以看到,使用切片操作可以轻松地获取张量中的指定部分。在这个例子中,我们从索引2开始到索引5结束,取出了4个元素。 除了基本的切片操作,TensorFlow还提供了一些高级的切片函数,如tf.gather_nd()。tf.gather_nd()函数可以根据给定的索引值从张量中抽取指定的数据组合。 下面是一个使用tf.gather_nd()函数的例子: import tensorflow as tf a = tf.range(10) # 创建一个长度为10的张量 b = tf.gather_nd(a, [0, 1]) # 从张量a中抽取索引为[0, 1]的元素 c = tf.gather_nd(a, [0, 1, 2]) # 从张量a中抽取索引为[0, 1, 2]的元素 d = tf.gather_nd(a, [[0, 1, 2]]) # 从张量a中抽取索引为[[0, 1, 2]]的元素 print(b.shape) # 输出 (1,) print(c.shape) # 输出 (1,) print(d.shape) # 输出 (1,) 通过这个例子,我们可以看到,tf.gather_nd()函数可以按照给定的索引值从张量中抽取指定的数据组合。在这个例子中,我们分别抽取了索引为[0, 1]、[0, 1, 2]和[[0, 1, 2]]的元素,并打印了它们的形状。 这就是TensorFlow切片操作的用法和示例。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值