我对使用tensorflow相当新,所以有可能我的问题有一个非常明显的解决方案,我错过了。我目前有一个三维数组填充整数值。具体的值并不重要,所以我为了这个问题放入了一个带有填充值的较小数组
`Array = tf.constant([[[0,0,1000,0],[3000,3000,3000,3000],[0,2500,0,0]],
[[100,200,300,400],[0,0,0,100],[300,300,400,300]]]).eval()`
因此,我相信打印时阵列看起来像这样。
`[[[0,0,1000,0],
[3000,3000,3000,3000],
[0,2500,0,0]],
[[100,200,300,400],
[0,0,0,100],
[300,300,400,300]]]`
实际上,这个阵列有23个二维阵列堆叠在一起。我想要做的是创建一个数组或3个独立的数组,其中包含3-D数组不同级别的每一行中的值范围。
像
这样的东西 `Xrange = tf.constant([Array[0,0,:].range(),Array[1,0,:].range(),Array[2,0,:].range()...,Array[22,0,:].range()])`
首先,我无法使用tensorflow找到一组功能齐全的命令,这些命令允许我找到行的范围。我知道如何在numpy中轻松地做到这一点,但还没有找到任何方法来做到这一点。其次,假设有一种方法可以执行上述操作,是否有一种方法可以合并代码,而无需在一行中为每个唯一行写出23次。我知道可以简单地用for循环完成,但我也想避免使用需要循环的解决方案。有没有一种好方法可以做到这一点,还是需要更多信息?另外请告诉我,如果我搞砸了我的语法,因为我对python和tensorflow都还不熟悉。
答案 0 :(得分:0)
正如我所料,我的问题有一个相当简单的答案。所有必要的是使用tf.reduce_max和tf.reduce_min命令 最终结束的代码如下:
Range = tf.subtract(tf.reduce_max(tf.constant(Array),axis=2,keep_dims=True),tf.reduce_min(tf.constant(Array),axis=2,keep_dims=True))
这产生了:
[[[1000]
[ 0]
[2500]]
[[ 300]
[ 100]
[ 100]]]