首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将较大张量的一部分与较小张量相加?

如何将较大张量的一部分与较小张量相加?
EN

Stack Overflow用户
提问于 2019-03-01 04:32:07
回答 1查看 72关注 0票数 0

我在keras中工作,我想添加两个张量,但第一个的形状是(1,28,28,1),第二个是(1,4,4,1)。现在我想将第一个张量的4x4上半部分与第二个张量相加。我该怎么做呢?在下面的代码中,我想添加带有encoded的wtm。如果他们有sam大小,我使用lambda层并这样做,但现在,我不知道。你能帮帮我吗?我很感谢你的帮助。

代码语言:javascript
运行
复制
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)
EN

Stack Overflow用户

回答已采纳

发布于 2019-03-01 04:50:34

您可以再次使用Lambda层,但这一次您需要用零填充小张量以匹配形状。为此,您可以使用:

代码语言:javascript
运行
复制
keras.backend.spatial_2d_padding(x, padding=((0, 28-4), (0, 28-4)), data_format=None)

它将填充张量的2维和3维。看一看backend documentation。总体而言,它将类似于:

代码语言:javascript
运行
复制
Lambda(lambda xy: xy[0] + K.spatial_2d_padding(xy[1], padding=((0, 24), (0, 24)))

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

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54933783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档