我在keras中工作,我想添加两个张量,但第一个的形状是(1,28,28,1),第二个是(1,4,4,1)。现在我想将第一个张量的4x4上半部分与第二个张量相加。我该怎么做呢?在下面的代码中,我想添加带有encoded的wtm。如果他们有sam大小,我使用lambda层并这样做,但现在,我不知道。你能帮帮我吗?我很感谢你的帮助。
wtm=Input((4,4,1))
image = Input((28, 28, 1))
conv1 = Conv2D(64, (5, 5), activation='relu', padding='same', name='convl1e')(image)
conv2 = Conv2D(64, (5, 5), activation='relu', padding='same', name='convl2e')(conv1)
conv3 = Conv2D(64, (5, 5), activation='relu', padding='same', name='convl3e')(conv2)
#conv3 = Conv2D(8, (3, 3), activation='relu', padding='same', name='convl3e', kernel_initializer='Orthogonal',bias_initializer='glorot_uniform')(conv2)
BN=BatchNormalization()(conv3)
#DrO1=Dropout(0.25,name='Dro1')(BN)
encoded = Conv2D(1, (5, 5), activation='relu', padding='same',name='encoded_I')(BN)
发布于 2019-03-01 04:50:34
您可以再次使用Lambda
层,但这一次您需要用零填充小张量以匹配形状。为此,您可以使用:
keras.backend.spatial_2d_padding(x, padding=((0, 28-4), (0, 28-4)), data_format=None)
它将填充张量的2维和3维。看一看backend documentation。总体而言,它将类似于:
Lambda(lambda xy: xy[0] + K.spatial_2d_padding(xy[1], padding=((0, 24), (0, 24)))
你可以用不同的方式添加到更大张量的不同区域。
https://stackoverflow.com/questions/54933783
复制相似问题