畅游人工智能之海--Keras教程之核心网络层(二)
畅游人工智能之海--Keras教程之核心网络层(二)
RepeatVector
keras.layers.RepeatVector(n)
将该层的输入重复n次
将二维的输入变成三维的,形式化的表述就是\((None,features) -> (None,n,features)\)
1 | model = Sequential() |
Lambda
- keras.layers.Lambda(function, output_shape=None, mask=None, arguments=None)
- 将一个表达式包装为layer对象
1 | model.add(Lambda(lambda x: x ** 2)) # 添加了一个层,将所有的x变成x^2 |
常用的参数就是前两个,第一个指定要对输入进行什么样的操作,第二个对输出的shape进行检查
可以支持任何类型的输入,但是如果是model的第一层需要指定input_shape
ActivityRegularization
- L1和L2正则化能够有效地避免过拟合,keras将这两个正则化封装在了这个层中(ps:关于两个正则化,可以到 https://www.jianshu.com/p/c9bb6f89cfcc 这个博客学习)
- keras.layers.ActivityRegularization(l1=0.0, l2=0.0)
- 该层的输入输出的维度相同,因为正则化不影响维度
Masking
将训练数据中的某些值跳过
一个官方给出的例子是:
- 考虑一组将要传给LSTM的数据
(samples, timesteps, features)
。 - set
x[0, 3, :] = 0.
andx[2, 5, :] = 0.
- 并将这个
mask_value=0.
的Masking
层插入到LSTM之前
- 考虑一组将要传给LSTM的数据
1 | model = Sequential() |
SpatialDropout1(2)(3)D
- 原理与dropout相同
- 官方给出的解释是,在此版本中,三个layer的作用与dropout相同,都是以一定的概率保持连接