python 构造函数
super()
super()是为了调用父类函数
https://www.runoob.com/python3/python3-class.html
encoder构建
定义超参的概念
embedding_units = 256 每个word转成embedding是多少
units = 1024 循环神经网络的个数 encode 和decode的units数量是一样的
encoding_units 在 encode中lstm 的size是多大
hidden 是初始化的隐藏层状态
keras.layers.GRU(units, activation=’tanh’, recurrent_activation=’hard_sigmoid’, use_bias=True, kernel_initializer=’glorot_uniform’, recurrent_initializer=’orthogonal’, bias_initializer=’zeros’, kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0, implementation=1, return_sequences=False, return_state=False, go_backwards=False, stateful=False, unroll=False, reset_after=False)
units: 正整数,输出空间的维度。
recurrent_initializer: recurrent_kernel 权值矩阵 的初始化器,用于循环层状态的线性转换 (详见 initializers)。
return_sequences: 布尔值。是返回输出序列中的最后一个输出,还是全部序列。
return_state: 布尔值。除了输出之外是否返回最后一个状态。
https://keras.io/zh/layers/recurrent/
Writing your own Keras layers
https://keras.io/layers/writing-your-own-keras-layers/
glorot_uniform
https://keras.io/zh/initializers/
keras.initializers.glorot_uniform(seed=None)
Glorot 均匀分布初始化器,也称为 Xavier 均匀分布初始化器。
它从 [-limit,limit] 中的均匀分布中抽取样本, 其中 limit 是 sqrt(6 / (fan_in + fan_out)), fan_in 是权值张量中的输入单位的数量, fan_out 是权值张量中的输出单位的数量。
参数
seed: 一个 Python 整数。作为随机发生器的种子。
返回
一个初始化器。
参考文献:http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf
1 | class Encoder (keras.Model): |