machine-learning - 如何理解 SpatialDropout1D 以及何时使用它?
问题描述
偶尔我会看到一些模型正在使用SpatialDropout1D
而不是Dropout
. 例如,在词性标注神经网络中,他们使用:
model = Sequential()
model.add(Embedding(s_vocabsize, EMBED_SIZE,
input_length=MAX_SEQLEN))
model.add(SpatialDropout1D(0.2)) ##This
model.add(GRU(HIDDEN_SIZE, dropout=0.2, recurrent_dropout=0.2))
model.add(RepeatVector(MAX_SEQLEN))
model.add(GRU(HIDDEN_SIZE, return_sequences=True))
model.add(TimeDistributed(Dense(t_vocabsize)))
model.add(Activation("softmax"))
根据 Keras 的文档,它说:
此版本执行与 Dropout 相同的功能,但它会丢弃整个 1D 特征图而不是单个元素。
但是,我无法理解entrie 1D feature的含义。更具体地说,我无法在quoraSpatialDropout1D
中解释的同一模型中进行可视化。有人可以使用与 quora 中相同的模型来解释这个概念吗?
另外,在什么情况下我们将使用SpatialDropout1D
而不是Dropout
?
解决方案
为了简单起见,我首先要注意所谓的特征图(1D、2D 等)是我们的常规通道。让我们看一些例子:
Dropout()
:让我们定义二维输入:[[1, 1, 1], [2, 2, 2]]。Dropout 将独立考虑每个元素,并可能导致类似 [[1, 0, 1], [0, 2, 2]]SpatialDropout1D()
:在这种情况下,结果将类似于 [[1, 0, 1], [2, 0, 2]]。请注意,第二个元素沿所有通道归零。
推荐阅读
- python - 使用 /insights edge 的 Instagram Graph API 问题
- spring - 具有由多个线程调用的方法的 Spring 组件
- python - django select_related() 和 django-mptt。如何一次获取所有兄弟姐妹?
- python - 将列格式代码应用于多个数据框
- sql - 如何加入 2 个表并仅保留最新记录
- python - Keras 的损失一度陷入 CNN
- python - 将参数传递给python中的深层嵌套函数
- php - 路由中的可选参数取决于参数位置
- apache-spark - 将 Spark 数据帧合并到现有的 ACID 事务 Hive 表中?
- firebase - Firestore 通配符变量不起作用