- Dropout()和SpatialDropout1D()的区别:
假设input_shape为batch_size, timesteps, features, Dropout(),Dropout()是在所有数据上dropout,SpatialDropout1D()会按对 features的某几个维度进行dropout,如图:

左图:Dropout(), 右图:SpatialDropout1D()
- 可以通过设置
Dropout()的参数noise_shape来实现SpatialDropout1D()。可以改变noise_shape查看具体效果。
import keras
import keras.backend as K
import numpy as np
ary = np.arange(35*3).reshape((3, 7, 5))
inputs = K.variable(ary)
print(ary) # result [[[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19] [20 21 22 23 24] [25 26 27 28 29] [30 31 32 33 34]]]
input_shape=K.shape(inputs)
noise_shape=(input_shape[0], input_shape[1], 1)
dropout_2 = K.eval(K.dropout(inputs, 0.5, noise_shape))
print(dropout_2)
SpatialDropout1D(),SpatialDropout2D(),SpatialDropout3D()的区别在于input_shape不同。见文档
本文详细解析了Dropout()和SpatialDropout1D()的区别,通过实例演示了两者如何在不同维度上进行dropout操作。同时,文章还介绍了如何通过调整Dropout()的noise_shape参数来模拟SpatialDropout的效果,以及SpatialDropout系列函数在不同输入形状下的应用。
3473

被折叠的 条评论
为什么被折叠?



