embedding_units = 256 # 每个word转换成embedding是多少。
第一次掉用这个参数是在,构建Encoder模型中,keras.layers.Embedding(vocab_size, embedding_units)这个函数中使用。
keras.layers.Embedding(input_dim, output_dim,)
将正整数(索引值)转换为固定尺寸的稠密向量。 例如: [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
该层只能用作模型中的第一层
input_dim: int > 0。词汇表大小, 即,最大整数 index + 1。
output_dim: int >= 0。词向量的维度。
-输入尺寸
尺寸为 (batch_size, sequence_length) 的 2D 张量。
-输出尺寸
尺寸为 (batch_size, sequence_length, output_dim) 的 3D 张量。
max_length_input 这个参数是输入的每个序列长度,即文档里面的sequence_length。
Encoder 模型有两层,第一层是embedding 是用来预处理的,有点像归一化。进入embedding后数据的shape会发生变化,如上所说的输出尺寸。
# 第二层是GRU层。
使用encoder函数,会有两个输出,一个是output(就是上面出的输出尺寸) 一个是hidden。hidden.shape=(batch_size, units)
units=1024, 这个代表的是中间使用RNN的个数
这是在构造函数里面的GRU()初始化设置。
self.gru = keras.layers.GRU(self.encoding_units,return_sequences=True,return_state=True, recurrent_initializer=’glorot_uniform’)
encoding_units 是GRU的输出尺寸,recurrent_regularizer: 运用到 recurrent_kernel 权值矩阵的正则化函数
####call方法
call方法 可以理解为使用构造函数,在实例化这个方法的时候可以直接调用。
output, state = self.gru(x, initial_state=hidden)
您可以通过使用关键字参数 initial_state 调用它们来符号化地指定 RNN 层的初始状态。 initial_state 的值应该是表示 RNN 层初始状态的张量或张量列表。