В последнее время я занимаюсь с нейронными сетями и их использованием в приложениях. Совсем недавно я наткнулся на учебник, описывающий нейронную сеть, которая научится классифицировать рукописные числа от 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). Я довольно смущен относительно того, что выполняет эта функция, и какое значение она имеет в нейронной сети.