За последние пару лет 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