我正在两个不同的 keras 层之间实现自定义连接。神经网络开始如下:
from tensorflow.keras.layers import Dense, Conv2D, Flatten, AveragePooling2D
import tensorflow as tf
from keras.models import Model
from tensorflow.keras.layers import Conv2D, Input, Concatenate, Lambda, Add
inputTensor = Input(shape=( 32, 32,1))
stride = 1
c1 = Conv2D(6, kernel_size=[5,5], strides=(stride,stride), padding="valid", input_shape=(32,32,1),
activation = 'tanh')(inputTensor)
s2 = AveragePooling2D(pool_size=(2, 2), strides=(2, 2))(c1)
在这里,我想将我的自定义连接应用到输出大小为 10*10*16 的卷积层 c3(即,需要在大小为 14*14*6 的 s2 上应用 16 个过滤器并获得 10* 的输出) 10*16)。对于这一点,我需要使用kernal_size = 5*5,filers=16,stride = 1,和padding=valid。
对于我的自定义连接,我想单独使用它们,而不是一次使用 s2 的所有 6 个特征图。我使用的lambda功能如下:
例如,如果我想使用 s2 的第零个特征图并对其应用 1 个过滤器,我将执行以下操作:
group0_a = Lambda(lambda x: x[:,:,:,0], output_shape=lambda x: (x[0], x[1], x[2], 1))(s2)
conv_group0_a = Conv2D(1, kernel_size=[5,5], strides=(stride,stride), padding="valid", activation = 'tanh')(group0_a)
现在,我收到一个错误:
Input 0 of layer conv2d_10 is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: [None, 14, 14] 这是为了 group0_a
largeQ
相关分类