如何用较小的张量添加较大的张量的一部分?

时间:2019-02-28 20:32:07

标签: python tensorflow keras

我在喀拉拉邦工作,我想添加两个张量,但是第一个张量的形状是(1,28,28,1),第二个张量的形状是(1,4,4,1)。现在我想在第一个张量的4x4上部加上第二个张量。我该怎么做?在以下代码中,我想添加带有编码的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)

1 个答案:

答案 0 :(得分:0)

您可以再次使用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)))

您可以使用不同的方式添加到大张量的不同区域。