在10个训练步骤之后,Relu-Layer-Output下降到全零

时间:2016-05-09 18:57:36

标签: tensorflow

我正在使用translate-example来训练seq2seq-task。这部分有效。

然后我尝试在编码结束时使用隐藏状态来预测seq2seq-part使用的产品的价格范围。

由于我遇到了relu-Layer的问题(见下文),我只允许在图的这一部分提供backprop。

以下是该部分的代码:

# First Layer
W_price_first_layer = tf.Variable(tf.random_normal([num_layers*size, self.prices_hidden_layer_size], stddev=0.35), name="W_price_first_layer")
B_price_first_layer = tf.Variable(tf.zeros([self.prices_hidden_layer_size]), name="B_price_first_layer")

# Uses Hidden State of seq2seq (translate.py) at end of encoding
self.output_price_first_layer = tf.add(tf.matmul(self.hidden_state, W_price_first_layer), B_price_first_layer)
self.relu_price_first_layer = tf.nn.relu(self.output_price_first_layer)

# Second Layer
W_price = tf.Variable(tf.random_normal([self.prices_hidden_layer_size, self.prices_bit_size], stddev=0.35), name="W_price")
W_price_t = tf.transpose(W_price)
B_price = tf.Variable(tf.zeros([self.prices_bit_size]), name="B_price")

# Prepare Backprop
self.output_price_second_layer = tf.add(tf.matmul(self.relu_price_first_layer, W_price),B_price)
self.label_price      = tf.placeholder(tf.int32, shape=[self.batch_size], name="price_label")
self.loss_price       = tf.nn.sparse_softmax_cross_entropy_with_logits(self.output_price_second_layer, self.label_price)
self.optimizer_price  = tf.train.GradientDescentOptimizer(self.learning_rate)
var_list_prices       = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, "prices")
self.training_op_price = self.optimizer_price.minimize(self.loss_price, var_list=var_list_prices)

现在的问题是:第一层的Relu-Output(self.relu_price_first_layer)在大约10或20个训练步骤后会全部归零并且永远不会恢复。当我没有分离图的这部分的反向支持时,这发生得更快。问题现在出现在后面,但仍然非常快(如上所述的10步之后)。有任何想法吗? THX

0 个答案:

没有答案