Python. TensorFlow для чайников. Часть 2

На прошлом уроке я рассказал как создать на TensorFlow простой нейрон. Сегодня будем изучать другу часть библиотеки, связанную с визуализацией (TensorBoard). Что такое TensorBoard? Это мощная система визуализации, которая, как правило, ставиться вместе с самим TensorFlow. Он позволяет, например, визуализировать схему нейронной сети. Сейчас я вам это продемонстрирую. Итак, берем код прошлого урока. Слегка переделываем его, вставляя необходимые функции, чтобы передать нужные данные TensorBoard:

import tensorflow as tf
import matplotlib.pyplot as plt
#создаим сессию
sess = tf.Session()
#Создадим граф
graph = tf.get_default_graph()
#Создадим входное значение
input_value = tf.constant(1.0)
#Создадим переменную
weight = tf.Variable(0.8)
#Создаим выходное значение
output_value = weight * input_value
#Создаем оптимизиатор
desired_output_value = tf.constant(2.0)
loss = (output_value - desired_output_value)**2 #Функция ошибки
optim = tf.train.GradientDescentOptimizer(learning_rate=0.025) #Оптимизатор
grads_and_vars = optim.compute_gradients(loss)
#Инициализируем переменные
init=tf.global_variables_initializer()
sess.run(init)
writer = tf.summary.FileWriter("e:\\output_dir", sess.graph)
#Обучаем
train_step = tf.train.GradientDescentOptimizer(0.025).minimize(loss)
for i in range(100):
       writer.add_summary(sess.run(train_step),i)
print(sess.run(output_value))
writer.add_graph(graph)
writer.close()

Затем запускаем TensorBoard, например, вот таким вот батничком:

C:\Users\user\AppData\Local\Programs\Python\Python36\python.exe C:\Users\user\AppData\Local\Programs\Python\Python36\Lib\site-packages\tensorflow\tensorboard\tensorboard.py —logdir=e:\output_dir

pause

Мы увидим окно командной строки, где будет показан адрес доступа к локальной странице показа информации:


Набираем ее в браузере, переключаемся на закладку Grapth и видим граф нашей нейронной сети:


Этот граф можно двигать мышкой и даже менять его масштаб (колесиком мышки):


В тексте программы можно задавать имена операциям (параметр name), например:

#Создадим входное значение
input_value = tf.constant(1.0, name="Input")
#Создадим переменную
weight = tf.Variable(0.8, name="Weight")

 

На графе они тоже будут видны:


Еще элементы графа можно группировать. Например, вот так:

import tensorflow as tf
import matplotlib.pyplot as plt
#создаим сессию
sess = tf.Session()
#Создадим граф
graph = tf.get_default_graph()
with tf.name_scope("MyOperationGroup"):
with tf.name_scope("Scope_A"):
#Создадим входное значение
input_value = tf.constant(1.0, name="Input")
#Создадим переменную
weight = tf.Variable(0.8, name="Weight")
#Создаим выходное значение
output_value = weight * input_value
with tf.name_scope("Scope_B"):
#Создаем оптимизиатор
desired_output_value = tf.constant(2.0)
loss = (output_value - desired_output_value)**2 #Функция ошибки
optim = tf.train.GradientDescentOptimizer(learning_rate=0.025) #Оптимизатор
grads_and_vars = optim.compute_gradients(loss)
#Инициализируем переменные
init=tf.global_variables_initializer()
sess.run(init)
writer = tf.summary.FileWriter("e:\\output_dir", sess.graph)
#Обучаем
train_step = tf.train.GradientDescentOptimizer(0.025).minimize(loss)
for i in range(100):
      writer.add_summary(sess.run(train_step),i)
print(sess.run(output_value))
writer.add_graph(graph)
writer.close()

 

Теперь граф будет сгруппирован на области:


Каждую из областей можно раскрыть «плюсиком»


Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar