在张量流中将张量切成两半

时间:2017-03-21 16:57:05

标签: tensorflow slice

我有一个形状张量(32, 32, 32, 1)我希望将它切成两个张量,沿着第一维,包含第一和第二半,如此

half1  with shape = (16, 32, 32, 1)
half2  with shape = (16, 32, 32, 1)

我正在尝试使用tf.slice,但我不知道如何使用开始和结束索引,文档是清楚的。

2 个答案:

答案 0 :(得分:2)

结果tensorflow不要求你使用tf.slice,因为你可以简单地使用numpy切片:

first_half = input[:16]
second_half = input[16:]

答案 1 :(得分:1)

以下是您的操作方法:

import tensorflow as tf
import numpy as np
t = t = tf.pack(np.random.randint(1,10,[32,32,32,1]))
half1 = tf.slice(t,[0,0,0,0],[16,32,32,1])
half2 = tf.slice(t,[16,0,0,0],[16,32,32,1])

[0,0,0,0]表示从每个维度的第一个元素开始,[16,32,32,1]表示第一维的大小为16,其他的大小为32,32,1。它基本上意味着获得前半部分关于第一维和所有其他维度获得所有元素。