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
添加回答
舉報