我正在使用seq2seq模型制作销售预测模型,它具有12个时间序列。有两个功能,一个用于火车,另一个用于测试。然后我想在每个时间步使用具有相同参数的完全连接层。
这是我的代码。
def mdn_layer(self, lstm_output):
fc1 = tf.contrib.layers.fully_connected(lstm_output, self.lstm_dim, activation_fn=tf.nn.relu, reuse=True)
fc_mus = tf.contrib.layers.fully_connected(fc1, self.num_mixture, reuse=True)
fc_sigmas = tf.contrib.layers.fully_connected(fc1, self.num_mixture, activation_fn=K.exp, reuse=True)
fc_alphas = tf.contrib.layers.fully_connected(fc1, self.num_mixture, activation_fn=tf.softmax, reuse=True)
return tf.concat((fc_mus, fc_sigmas, fc_alphas), axis=1)
def train_decoder(self):
# time-batch-dimension
y_emb_tbd = tf.transpose(self.y_emb, [1, 0, 2])
y_qty = tf.transpose(self.y[:, :, 10:], [1, 0, 2])
train_pred = tf.TensorArray(dtype=tf.float32, size=self.delay)
def body(step, state, train_pred):
mdn_out = self.mdn_layer(state.h)
train_pred = train_pred.write(step, mdn_out)
step_qty_layer = self.qty_layer(y_qty[step])
inp = self.decoder_input_layer(tf.concat((y_emb_tbd[step], step_qty_layer), axis=1))
next_out, next_state = self.decoder_cell(inp, state)
return step + 1, next_state, train_pred
_step, _state, _train_pred = tf.while_loop(
cond=lambda t, _state, _train_pred: t < self.delay,
body=body,
loop_vars=(0, self.init_state, train_pred))
self.output_train = tf.transpose(_train_pred.stack(), perm=[1, 0])
我想在每个具有相同参数的步骤中使用mdn_layer函数。 但是,如果我像这样使用它,那将是完全不同的,因为我每个步骤都将其称为。如何在mdn_layer函数中仅使用全连接层?