keras 有没有一个好的方法来重塑MaxPooling1D?

n3ipq98p  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(70)

我尝试在“B”上使用MaxPooling 1D。然后连接a和B。
但是GlobalAveragePooling 2D输出是2DTensor,MaxPooling 1D输入/输出是3DTensor。
因此,我使用自定义层来重塑MaxPooling 1D和Concatenate的B。
有没有什么好的方法来替换这两个自定义图层?

import tensorflow as tf

a= tf.keras.layers.GlobalAveragePooling2D()(a)
b= tf.keras.layers.GlobalAveragePooling2D()(b)

#custom layer  reshape b from 2D tensor to 3D tensor for Maxpooling
b= tf.keras.layers.MaxPooling1D(pool_size=2,strides=2, padding='valid')(b)
#custom layer  reshape b from 3D tensor to 2D tensor for concatenate

AB = tf.keras.layers.Concatenate()([a, b])

字符串

zbdgwd5y

zbdgwd5y1#

像这样的东西会起作用:

import numpy as np
import tensorflow as tf

x_a = np.random.rand(100, 28, 28, 3)
x_b = np.random.rand(100, 28, 28, 3)

a_input = tf.keras.Input(shape=(28, 28, 3))
b_input = tf.keras.Input(shape=(28, 28, 3))

a = tf.keras.layers.GlobalAveragePooling2D()(a_input)
b = tf.keras.layers.GlobalAveragePooling2D()(b_input)

b = tf.keras.layers.Reshape((3, 1))(b)
b = tf.keras.layers.MaxPooling1D(pool_size=2, strides=2, padding='valid')(b)
b = tf.keras.layers.Flatten()(b)

AB = tf.keras.layers.Concatenate()([a, b])

model = tf.keras.Model([a_input, b_input], AB)

model.summary()

字符串

相关问题