首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >conv1D内核大小,单位为Keras

conv1D内核大小,单位为Keras
EN

Stack Overflow用户
提问于 2020-10-10 19:19:42
回答 1查看 173关注 0票数 0

我已经使用几个Conv1D层创建并训练了神经网络。我的输入尺寸是125x3。我对每个Conv1D层使用相同的内核大小。我尝试了几种内核大小2、5、25、50甚至125,我使用的是“相同的”填充。Keras在内核大小等于输入大小的情况下工作,这对我来说是出乎意料的。更令人意想不到的是,126的内核大小也是有效的。内核大小为126,大于输入大小的架构示例:

代码语言:javascript
复制
inputs = keras.Input(shape=(125,3),dtype='float32')
out1 = Conv1D(20,126,padding='same',activation='relu')(inputs)
out1=BatchNormalization(name='BatchNormalization0')(out1)
out1 = Conv1D(112,126,padding='same',name='Conv1',activation='relu')(out1)
out1=BatchNormalization(name='BatchNormalization1')(out1)

我不明白为什么它会起作用。有人能解释一下当我使用等于输入大小甚至大于输入大小的内核大小时,Keras会发生什么吗?

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2020-11-20 07:04:55

内核大小怎么会大于时间步长呢?

让我们来看看你的第二行

代码语言:javascript
复制
out1 = Conv1D(20,126,padding='same',activation='relu')(inputs)

这将创建一个卷积输出20滤波器,并使用内核126,最重要的是将填充设置为same!。填充意味着在时间序列的开始和结束处放置足够的零,以便在卷积之后,输出时间步长等于输入时间步长。

如果输入时间步长是10,而内核是5,那么我们必须在数据的开始和结束处添加2个零。

在您的例子中,在内核为126的情况下,在卷积之前,将有62个0添加到数据的开头,63个添加到数据的末尾。

  • 输入形状是125x3
  • 'same‘填充已添加,使其为250x3
  • 在250x3上应用20筛选器126内核,生成125x20输出

基本上,您正在对一堆零进行卷积。

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

https://stackoverflow.com/questions/64292820

复制
相关文章

相似问题

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