def build_model(self):
"""
1.初始化训练、预测所需要的变量
2.构建编码器(encoder)
3.构建解码器(decoder)
4.构建优化器(optimizer)
5.保存
"""
def init_placeholders(self):
"""初始化、预测所需要的变量"""
self.add_loss=tf.placeholder(
dtype=tf.float32,
name="add_loss"
)
#编码器的输入
self.encoder_inputs=tf.placeholder(
dtype=tf.int32,
shape=(self.batch_size,None),
name='encoder_inputs'
)
#编码器的长度输入
self.encoder_inputs_length=tf.placeholder(
dtyp=tf.int32,
shape=(self.batch_size,),
name='encoder_input_length'
)
if self.mode=='train':
#解码器的输入
self.decoder_inputs=tf.placeholder(
dtype=tf.int32,
shape=(self.batch_size,None),
name='decoder_inputs'
)
#解码器输入的rewards
self.rewards=tf.placeholder(
dtype=tf.float32,
shape=(self.batch_size,1),
name='rewards'
)
#解码器的长度输入
self.decoder_inputs_length=tf.placeholder(
dtype=tf.int32,
shape=(self.batch_size,),
name='decoder_inputs_length'
)
self.decoder_start_token=tf.ones(
shape=(self.batch_size,1),
dtype=tf.int32
)*WordSequence.START
#实际训练时解码器的输入,start_token+decoder_inputs
self.decoder_inputs_train=tf.concat([
self.decoder_start_token,
self.decoder_inputs
],axis=1
)