2017-01-14 7 views
1

В последнее время я занимаюсь с нейронными сетями и их использованием в приложениях. Совсем недавно я наткнулся на учебник, описывающий нейронную сеть, которая научится классифицировать рукописные числа от 0-9 (MNIST). Часть кода из учебника, что у меня возникают проблемы с ниже (https://pythonprogramming.net/tensorflow-neural-network-session-machine-learning-tutorial/)Что такое выпрямленная линейная функция в базовой нейронной сети

def neural_network_model(data): 
    hidden_1_layer = {'weights':tf.Variable(tf.random_normal([784, nodes_hl1])), 
       'biases':tf.Variable(tf.random_normal([nodes_hl1]))} 

    hidden_2_layer = {'weights':tf.Variable(tf.random_normal([nodes_hl1, nodes_hl2])), 
       'biases':tf.Variable(tf.random_normal([nodes_hl2]))} 

    hidden_3_layer = {'weights':tf.Variable(tf.random_normal([nodes_hl2, nodes_hl3])), 
       'biases':tf.Variable(tf.random_normal([nodes_hl3]))} 

    output_layer = {'weights':tf.Variable(tf.random_normal([nodes_hl3, n_classes])), 
       'biases':tf.Variable(tf.random_normal([n_classes])),} 


    l1 = tf.add(tf.matmul(data,hidden_1_layer['weights']), hidden_1_layer['biases']) 
    l1 = tf.nn.relu(l1) 

    l2 = tf.add(tf.matmul(l1,hidden_2_layer['weights']), hidden_2_layer['biases']) 
    l2 = tf.nn.relu(l2) 

    l3 = tf.add(tf.matmul(l2,hidden_3_layer['weights']), hidden_3_layer['biases']) 
    l3 = tf.nn.relu(l3) 

    output = tf.matmul(l3,output_layer['weights']) + output_layer['biases'] 

    return output 

У меня есть основное понимание того, что происходит. 3 скрытых слоя представляют собой набор узлов, которые связаны смещениями и весами. Конечный выходной слой является результатом нейронной сети. Я все понимаю здесь, кроме строк кода, которые включают tf.nn.relu(). Посмотрев документацию TensorFlow, все, что он упоминает, это то, что функция вычисляет выпрямленные линейные функции (https://www.tensorflow.org/api_docs/python/nn/activation_functions_#relu). Я довольно смущен относительно того, что выполняет эта функция, и какое значение она имеет в нейронной сети.

ответ

1

некоторые из преимуществ РЕЛУ (шлифованные линейные единицы)

  • Менее вычислительно дорогие (и, следовательно, более высокую производительность)
  • Некоторые другие функции, такие как сигмовидной имеют тенденцию satturate
  • Они имеют дериватов, что легко известково (помните учебный процесс опирается на дериватов)

Пожалуйста, проверьте этот https://www.quora.com/What-are-the-benefits-of-using-rectified-linear-units-vs-the-typical-sigmoid-activation-function