Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在张量流中移动轴_Python_Tensorflow - Fatal编程技术网

Python 在张量流中移动轴

Python 在张量流中移动轴,python,tensorflow,Python,Tensorflow,我有两个张量。主张量如下所示: array([[[ 298, 1217, 298, 1217], [ 298, 1217, 298, 1217], [ 298, 1217, 298, 1217], [ 298, 1217, 298, 1217], [ 298, 1217, 298, 1217], [ 298, 1217, 298, 1217], [ 298, 1217, 298, 121

我有两个张量。主张量如下所示:

array([[[ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217]],

       [[ 450,  607,  493,  662],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[ 950, 1277, 1028, 1335],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]]], dtype=int32)
我想根据以下张量移动这个张量:

array([0, 2, 5], dtype=int32)
上面的张量包含我们希望当前轴移动到的轴

最后一个张量应如下所示:

array([[[ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217],
        [ 298, 1217,  298, 1217]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[ 450,  607,  493,  662],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[ 950, 1277, 1028, 1335],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]],

       [[   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0],
        [   0,    0,    0,    0]]], dtype=int32)

您可以使用tensorflow分散功能来实现这一点

定义您的
输入
张量:

input = tf.constant([[[ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217]],

   [[ 450,  607,  493,  662],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[ 950, 1277, 1028, 1335],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]]])
因为我们只对第零维上的前3个元素感兴趣,所以让我们将其切成一个新的张量:

sliced_input = tf.slice(input, [0, 0, 0], [3, -1, -1])
定义您的目标
索引

indices = tf.constant([[0], [2], [5]])
定义目标
输出的
形状
,此处与您的
输入
形状相同:

shape = tf.shape(input)
现在,使用分散功能获取
输出

output = tf.scatter_nd(indices, sliced_input, shape)
array([[[ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[ 450,  607,  493,  662],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[ 950, 1277, 1028, 1335],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]]], dtype=int32)
输出

output = tf.scatter_nd(indices, sliced_input, shape)
array([[[ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217],
    [ 298, 1217,  298, 1217]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[ 450,  607,  493,  662],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[ 950, 1277, 1028, 1335],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]],

   [[   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0],
    [   0,    0,    0,    0]]], dtype=int32)

如果我理解正确,您正在寻找offeltoffel的
numpy.moveaxis
(),但我想要tensorflow中的这个。对不起!然后是tf.transpose(张量数组,perm=[0,2,5])
。看看这个:从文本中看不太清楚,但您想要的是,对于输入
[0,2,5]
,交换轴0中位置2和5的内容?@jdehesa在位置2,我想要1的内容;在第5位,我想要3的内容。