Цели
В этом посте вы:
- запускать команды 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 необходимо запускать вне какой-либо виртуальной среды, чтобы иметь возможность обнаруживать доступные виртуальные среды.