1 回答
TA贡献1794条经验 获得超8个赞
我修改了你的代码并提出以下内容:
output = tf.concat(
[tf.math.reduce_sum(inputs[:, 34:42, 28:40,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 34:42, 44:56,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 34:42, 60:72,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 46:54, 20:32,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 46:54, 36:48,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 46:54, 52:64,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 46:54, 68:80,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 58:66, 28:40,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 58:66, 44:56,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 58:66, 60:72,:], axis=[1,2])], axis=-1)
请注意,我更改inputs[34:42, 28:40, 0]为inputs[:, 34:42, 28:40,:]. 您可以用于:想要保持相同的尺寸。我还指定了应减少哪个轴,因此,仅保留没有要减少的规格的尺寸 - 在本例中,它是第一个也是最后一个尺寸。在你的情况下,tf.math.reduce_sum将产生形状[无,1]。与此同时,我将 的轴更改tf.concat为 -1,这是最后一层,因此它产生形状 [None, 10]。
为了完整起见,您可以创建自己的图层。为此,您必须继承 tf.keras.layers.Layer。
然后,您可以将其用作任何其他层。
class ReduceZones(tf.keras.layers.Layer):
def __init__(self):
super(ReduceZones, self).__init__()
def build(self, input_shapes):
return
def call(self, inputs):
output = tf.concat(
[tf.math.reduce_sum(inputs[:, 34:42, 28:40,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 34:42, 44:56,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 34:42, 60:72,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 46:54, 20:32,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 46:54, 36:48,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 46:54, 52:64,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 46:54, 68:80,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 58:66, 28:40,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 58:66, 44:56,:], axis=[1,2]),
tf.math.reduce_sum(inputs[:, 58:66, 60:72,:], axis=[1,2])], axis=-1)
return output
添加回答
举报