За последние пару лет Google сделал глубокое обучение действенным, используя отличный фреймворк под названием TensorFlow. В этой статье мы собираемся изучить основы TensorFlow. В следующем разделе мы обсудим, как построить модель логистической регрессии с помощью TensorFlow.

Введение в TensorFlow:

Начнем с определения того, что такое TensorFlow. С точки зрения непрофессионала, «тензор» означает многомерный массив, а «поток» означает граф операций. Многомерный массив может быть вектором или матрицей, трехмерным массивом или массивом ND. Ниже приведены несколько примеров тензоров:

  • [4. , 5., 6.] # тензор 1 ранга; Имеет форму [3] (вектор)
  • [[3., 4., 5.], [10., 20., 30.]] # тензор 2-го ранга; имеет форму [2, 3] (матрица)
  • [[[66., 77., 88.]], [[11., 12., 13.]]] # тензор ранга 3, он имеет форму [2, 1, 3]

Граф операций представляет собой граф потока данных, другими словами, его можно назвать графом вычислений.

Установка TensorFlow:

Если вам нужна базовая установка без лишних хлопот, просто сделайте следующее:

pip install tensorflow

Или установите его с поддержкой GPU:

pip install tensorflow-gpu

Подробное руководство по установке TensorFlow: https://www.tensorflow.org/install/

Позволяет код….

Константы:

Чтобы объявить узел с постоянным значением в TensorFlow, мы используем tf.constant (value, datatype). Первый параметр функции tf.constant () - это значение, которое вы помещаете в узел, а второй параметр используется для определения данных. тип константы. TensorFlow также может неявно определять тип константы, поэтому, если мы оставим второй параметр, все будет в порядке. Например:

firstNode = tf.constant(7.0, dtype = tf.float32)
secondNode = tf.constant(14.0)
print(firstNode, secondNode)
Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)

Почему мы не можем увидеть желаемый результат в операторе печати? Это потому, что мы можем получить значения 7.0 и 14.0 только при запуске узлов. Также помните, что вывод узла также будет тензорным объектом.

Сессия:

Чтобы запустить их, нам нужно создать сеанс TensorFlow как:

sess = tf.Session()
print(sess.run([firstNode, secondNode]))
[7.0, 14.0]

Мы даже можем выполнять операции на этих двух узлах как:

thirdNode = tf.add(firstNode, secondNode)
print("Sum value is: ", sess.run(thirdNode))
Sum value is:  21.0

Заполнители:

Заполнители похожи на переменную без значения, но позже мы можем поместить в нее значение. tf.Placeholder используется для подачи фактических данных обучения. В приведенном ниже примере обратите внимание, что мы предоставили значения при вызове сеанса.

x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
z = x+y
print(sess.run(z,{x: 10.0, y:20.0}))
30.0

Переменные:

Переменная TensorFlow (tf.Variable) используется для хранения состояния данных. Мы можем использовать tf.Variable для обучаемых переменных, таких как веса (W) и смещения (B) для нашей модели. tf.global_variables_initializer () выполняет работу по инициализации всех переменных.

W = tf.Variable(3.5, dtype=tf.float32,name="W")
b = tf.Variable(4.6, dtype=tf.float32,name="b")
addVar = W + b;
with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    print(sess.run(addVar))
8.1

TensorBoard:

TensorBoard - это набор веб-приложений для проверки и понимания ваших запусков и графиков TensorFlow. Вычисления, которые вы будете использовать в TensorFlow для таких вещей, как обучение массивной глубокой нейронной сети, могут быть довольно сложными и запутанными, TensorBoard значительно упростит понимание, отладку и оптимизацию ваших программ TensorFlow. Давайте рассмотрим простой пример, показанный ниже:

a = tf.add(1, 2)
b = tf.multiply(a, 3)
with tf.Session() as sess:
    print(sess.run(b))

В приведенном выше примере, если мы хотим увидеть граф вычислений в TesnsorBoard, мы добавляем SummaryWriter в конец нашего кода, это создаст папку в вашем заданном каталоге, которая будет содержать информацию для TensorBoard для построения графика.

with tf.Session() as sess:
  writer = tf.summary.FileWriter(“path/to/logs/directory”, sess.graph)
  print(sess.run(b))
  writer.close()

Чтобы запустить TensorBoard, откройте командную строку / терминал и запустите:

tenorboard - logdir = путь / к / каталогу / журналам /

Теперь goto: http: // localhost: 6006 /

Вы сможете просмотреть график вычислений на вкладке ГРАФИКИ TensorBoard.

Область действия в TensorBoard:

TensorFlow также позволяет создавать области в вашем коде. Это также помогает сгруппировать определенные вычисления.

# First we need to reset the earlier computation graphd
tf.reset_default_graph()
# Here we are defining the name of the graph, scopes A, B and C.
with tf.name_scope("MyOperationGroup"):
    with tf.name_scope("Scope_A"):
        a = tf.add(1, 2, name="Add_these_numbers")
        b = tf.multiply(a, 3)
    with tf.name_scope("Scope_B"):
        c = tf.add(4, 5, name="And_These_ones")
        d = tf.multiply(c, 6, name="Multiply_these_numbers")
with tf.name_scope("Scope_C"):
    e = tf.multiply(4, 5, name="B_add")
    f = tf.div(c, 6, name="B_mul")
g = tf.add(b, d)
h = tf.multiply(g, f)
with tf.Session() as sess:
    writer = tf.summary.FileWriter("path/to/logs/directory", sess.graph)
    print(sess.run(h))
    writer.close()
63

Итак, это охватывает основы TensorFlow, в следующей статье мы рассмотрим, как мы можем использовать TensorFlow для понимания работы логистической регрессии.

Вы можете просмотреть код по адресу: https://github.com/subarnab219/Logistic-Regression-using-Tensorflow

Для более глубокого погружения в Tensorboard следуйте: https://neptune.ai/blog/tensorboard-tutorial

Спасибо