Цели

В этом посте вы:

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

Предпосылки

1- У вас должна быть возможность подключиться к экземпляру EC2 (локальный порт) с вашего локального хоста. Если не знаете, как это сделать, читайте мой блог на медиуме отсюда или на разработчике отсюда.

2. На вашем терминале должна быть среда с Python 3.6 и библиотекой tensorflow.Я объясню, как это сделать позже.

Шаг 1

После подключения к экземпляру EC2 введите следующую команду в оболочке SSH, чтобы загрузить виртуальную среду Python 3.6 TensorFlow в AMI (экземпляр EC2):

source activate Your_Environment_Name

Например, если вы назвали свою среду как tensorflow_p36, введите следующее:

source activate tensorflow_p36
  • Виртуальная среда устанавливает все переменные среды, необходимые для использования библиотек и двоичных файлов, необходимых для TensorFlow.
  • (tensorflow_p36) добавляется к приглашению вашей оболочки, чтобы сообщить вам, что вы используете виртуальную среду TensorFlow Python 3.6.

Шаг 2

Запустите интерактивный интерпретатор Python, введя:

python

Шаг 3

Введите следующие операторы импорта, чтобы импортировать модуль TensorFlow:

import tensorflow as tf
  • Модуль TensorFlow обычно импортируется как tf.
  • Не обращайте внимания на какие-либо предупреждающие сообщения, с которыми вы сейчас сталкиваетесь, вы можете игнорировать их и все равно завершить без каких-либо проблем.

Шаг 4

Чтобы определить граф потока данных с двумя постоянными тензорами в качестве входных данных и использовать операцию tf.add для получения выходных данных, введите следующее и нажмите клавишу ввода:

# Explicitly create a computation graph
graph = tf.Graph()
with graph.as_default():
    # Declare one-dimensional tensors (vectors)
    input1 = tf.constant([1.0, 2.0])
    input2 = tf.constant([3.0, 4.0])
    # Add the two tensors
    output = tf.add(input1, input2)

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

Шаг 4

Чтобы распечатать график, чтобы увидеть, что он сохранил входные данные и операции, добавьте следующее и нажмите Enter:

print(graph.get_operations())

Через несколько секунд вы увидите следующий вывод:

  • Отображается список каждой операции, соответствующей двум входным константам и операции сложения.
  • Уникальные имена по умолчанию показаны в одинарных кавычках.
  • Вы можете установить имена при объявлении операции, передав именованный аргумент с именем name.

Шаг 5

Оцените график, создав сеанс с графиком и вызвав функцию output.eval():

# Evaluate the graph in a session
with tf.Session(graph = graph):
    result = output.eval()
    print("result: ", result)

Через несколько секунд вы увидите следующий вывод:

  • В выходных данных отображается информационное сообщение, информирующее вас о том, что сеанс будет выполняться на графическом процессоре экземпляра (GPU).
  • Результат печатается в последней строке.

Шаг 7

Когда вы используете только один график в сеансе, вы можете использовать график по умолчанию, как показано в следующем примере, который повторяет вычисления с использованием графика по умолчанию:

# Evaluate using the default graph
with tf.Session():
    input1 = tf.constant([1.0, 2.0])
    input2 = tf.constant([3.0, 4.0])
    output = tf.add(input1, input2)
    # Show the operations in the default graph
    print(tf.get_default_graph().get_operations())
    result = output.eval()
    print("result: ", result)
  • В приведенном выше коде граф по умолчанию неявно передается всем функциям Tensorflow API.
  • Может быть удобно использовать график по умолчанию, но вам может понадобиться несколько графиков при разработке отдельных обучающих и тестовых графиков для алгоритмов машинного обучения.

Шаг 8

Чтобы умножить матрицу на вектор, добавьте следующее и нажмите Enter:

matmul_graph = tf.Graph()
with matmul_graph.as_default():
    # Declare a 2x2 matrix and a 2x1 vector
    matrix = tf.constant([[1.0, 2.0], [3.0, 4.0]])
    vector = tf.constant([[1.0], [2.0]])
    # Matrix multiply (matmul) the two tensors
    output = tf.matmul(matrix, vector)
with tf.Session(graph = matmul_graph):
    result = output.eval()
    print(result)

Через несколько секунд вы увидите следующий вывод:

  • Теперь вы видели, как складывать векторы и умножать матрицу на вектор в TensorFlow.
  • Эти две операции являются строительными блоками нескольких алгоритмов машинного обучения.
  • До сих пор в примерах использовались только постоянные входные данные.
  • TensorFlow поддерживает использование переменных, позволяющих обновлять тензоры различными значениями по мере выполнения оценки графа.

Шаг 9

Используйте переменные для хранения результата многократного умножения матрицы на вектор, как в следующем аннотированном примере:

# Evaluate a matrix-vector multiplication
var_graph = tf.Graph()
with var_graph.as_default():
    # Declare a constant 2x2 matrix and a variable 2x1 vector
    matrix = tf.constant([[1.0, 1.0], [1.0, 1.0]])
    vector = tf.Variable([[1.0], [1.0]])
    # Multiply the matrix and vector 4 times
    for _ in range(4):
        # Repeatedly update vector with the multiplication result
        vector = tf.matmul(matrix, vector)
with tf.Session(graph = var_graph):
    # Initialize the variables we defined above.
    tf.global_variables_initializer().run()
    result = vector.eval()
    print(result)

Через несколько секунд вы увидите следующий вывод:

  • Выходное значение вектора показывает, что значение было обновлено.
  • Это похоже на то, что вы ожидаете, используя переменную в Python.
  • Одна загвоздка в том, что переменные должны быть инициализированы явным вызовом.
  • tf.global_variables_initializer().run() инициализирует все переменные в коллекции глобальных переменных. По умолчанию каждая переменная добавляется в коллекцию глобальных переменных.

Шаг 10

Выйдите из интерпретатора Python, введя:

exit()

В следующем посте я объясню, как использовать Jupyter Notebook для запуска вашего кода.

Шаг 11

Деактивируйте виртуальную среду TensorFlow:

source deactivate
  • Префикс tensorflow_p36 (Имя среды) в приглашении оболочки больше не отображается.
  • Сервер ноутбуков Jupyter необходимо запускать вне какой-либо виртуальной среды, чтобы иметь возможность обнаруживать доступные виртуальные среды.

GitHub
LinkedIn
Facebook
Разработка