Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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 如何在未知大小的张量上使用tf.slice_Python_Tensorflow - Fatal编程技术网

Python 如何在未知大小的张量上使用tf.slice

Python 如何在未知大小的张量上使用tf.slice,python,tensorflow,Python,Tensorflow,我在处理一个矩阵,sim_mat,它是一个大小为(?,?)的张量 我想像这样使用tf.slice: a=tf.slice(sim_matrix,[0,0,0],tf.stack([tf.shape(sim_matrix[0],tf.shape(sim_matrix)[1],3])) print(a) 但这给了我张量a,大小是(?,而不是(?,3)。此外,当我将a用于其他函数时,我收到一条错误消息: 输入大小(输入深度)必须可通过形状推断访问,但saw值无 有解决办法吗 谢谢。您可以使用奇特的索

我在处理一个矩阵,sim_mat,它是一个大小为(?,?)的张量

我想像这样使用tf.slice:

a=tf.slice(sim_matrix,[0,0,0],tf.stack([tf.shape(sim_matrix[0],tf.shape(sim_matrix)[1],3]))
print(a)
但这给了我张量a,大小是(?,而不是(?,3)。此外,当我将a用于其他函数时,我收到一条错误消息:

输入大小(输入深度)必须可通过形状推断访问,但saw值无

有解决办法吗


谢谢。

您可以使用奇特的索引编写以下等效但更可读的行:

a = sim_matrix[ :, :, 0 : 3 ]
然而,这仍然会给你一个结果形状的张量(?,?)

如果你真的需要得到的张量的第三维是固定的,使用。但是,您必须使用before和after来排列维度,因为这只适用于第一个维度。(也有,但这里没有帮助,因为您不想在前两个DIM上指定索引,而是要进行切片。)这样(测试代码):

输出:

(?,?,3)


您还说在进一步的函数中出现错误。如果这些函数的输入张量需要固定的形状,则情况可能仍然如此。

您可以使用奇特的索引编写以下等效但更可读的行:

a = sim_matrix[ :, :, 0 : 3 ]
然而,这仍然会给你一个结果形状的张量(?,?)

如果你真的需要得到的张量的第三维是固定的,使用。但是,您必须使用before和after来排列维度,因为这只适用于第一个维度。(也有,但这里没有帮助,因为您不想在前两个DIM上指定索引,而是要进行切片。)这样(测试代码):

输出:

(?,?,3)


您还说在进一步的函数中出现错误。如果这些函数的输入张量需要固定的形状,可能仍然是这样。

我已经编辑了上面的问题,很抱歉这里的混乱。我相信原因不是我在tf.slice()中写入参数的方式,而是其中未知的维度。有可能得到我想要的吗?谢谢。根据你在汉克上的解释重写答案。真的很困惑,哪些tf函数需要固定形状的张量,哪些不需要。是的,不幸的是,它可能需要固定形状的张量。我觉得你很痛苦如果你想在这方面得到帮助,我建议你再贴一个关于这个主题的问题。同时,你可以考虑接受我的回答,因为我已经回答了这里提出的问题。我已经编辑了上面的问题,很抱歉这里的混乱。我相信原因不是我在tf.slice()中写入参数的方式,而是其中未知的维度。有可能得到我想要的吗?谢谢。根据你在汉克上的解释重写答案。真的很困惑,哪些tf函数需要固定形状的张量,哪些不需要。是的,不幸的是,它可能需要固定形状的张量。我觉得你很痛苦如果你想在这方面得到帮助,我建议你再贴一个关于这个主题的问题。同时,你可以考虑接受我的回答,因为我已经回答了这里提出的问题。