2017-01-14 1 views
1

J'ai récemment joué avec les réseaux de neurones et leurs applications dans les applications. Tout récemment, je suis tombé sur un tutoriel décrivant un réseau de neurones qui apprendrait à classer des nombres manuscrits de 0-9 (MNIST). La portion de code du tutoriel que je vais avoir des problèmes avec est inférieur (https://pythonprogramming.net/tensorflow-neural-network-session-machine-learning-tutorial/)Quelle est l'utilité d'une fonction linéaire rectifiée dans un réseau de neurones de base?

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 

J'ai une connaissance de base de ce qui se passe. Les 3 couches cachées sont chacune un ensemble de nœuds qui sont reliés par des biais et des poids. La couche de sortie finale est le résultat du réseau de neurones. Je comprends tout ici, sauf les lignes de code qui incluent tf.nn.relu(). Après avoir regardé la documentation de TensorFlow, tout ce qu'il mentionne est que la fonction calcule le linéaire corrigé des caractéristiques (https://www.tensorflow.org/api_docs/python/nn/activation_functions_#relu). Je suis plutôt confus quant à ce que cette fonction est en train de faire, et quelle signification elle a dans le réseau neuronal.

Répondre