Я занимаюсь курсом udacity TensotFlow, я пытаюсь обучить нейронную сеть набору notMNIST.
При использовании 1-скрытая сеть слоя все работает отлично, но когда я пытаюсь добавить еще один слой, после ~ 150 шагов я получаю эту ошибку:Вход ReluGrad не является конечным в многослойной сети в TensorFlow
InvalidArgumentError: ReluGrad input is not finite. : Tensor had NaN values
Это сетевая модель:
def model(x, w_h,w_h2,w_0,b_h,b_h2,b_0,p_drop):
h = tf.nn.relu(tf.matmul(x,w_h)+b_h)
h = tf.nn.dropout(h,p_drop)
h2 = tf.nn.relu(tf.matmul(h, w_h2)+b_h2)
h2 = tf.nn.dropout(h2,p_drop)
return (tf.matmul(h2,w_0)+b_0)
И ошибка указывает на конкретную строку:
h = tf.nn.relu(tf.matmul(x,w_h)+b_h)
Я думаю, с двухслойной сети w_h становятся очень малы, поэтому matmul продукт пойти ноль, но я не понимаю, как я могу решить это Обратите внимание, что я использую этот оптимизатор:
net = model(tf_train_dataset,w_h,w_h2,w_0,b_h,b_h2,b_0,0.5)
loss = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(net, tf_train_labels))
global_step = tf.Variable(0) # count the number of steps taken.
learning_rate = tf.train.exponential_decay(0.5, global_step, 100, 0.95)
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss,global_step=global_step)
Сетка 784-> 1024-> 512-> 10
Любая помощь Оцените ...
Это происходит, когда ваше обучение расходится. Попробуйте использовать более низкую скорость обучения и/или другой оптимизатор (AdamOptimizer) –
Я попытался снизить скорость обучения, но затем он застревает на локальных минимумах ... – mangate
Это нормально, скорость обучения слишком высока, и вы расходитесь, скорость обучения слишком низкая и точность плохая. Я бы рекомендовал использовать AdamOptimizer и начать с более высокой скорости –