Основы TensorFlow

In [2]:
import tensorflow as tf

Передача данных алгоритму обучения - узлы-заполнители (placeholder node)

Создание узела-заполнителя:

Вызвать функцию

placeholder() и указать тип данных выходного тензора.

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

Указание None для измерения означает "любой размер".

Например, следующий код создает узел-заполнитель А и узел В = А + 5. Когда оценивается В, мы передаем мето­ ду eval ( ) экземпляр feed _ dict, который указывает значение А. Обратите внимание, что узел А обязан иметь ранг 2 (т.е. быть двумерным) и должен содержать три столбца (иначе сгенерируется исключение), но может вклю­ чать любое количество строк.

In [3]:
A = tf.placeholder(tf.float32, shape=(None, 3))
B = A + 5
with tf.Session() as sess:
    B_val_1 = B.eval(feed_dict={A: [[1, 2, 3]]})
    B_val_2 = B.eval(feed_dict={A: [[4, 5, 6], [7, 8, 9]]})
print(B_val_1)
[[6. 7. 8.]]
In [4]:
print(B_val_2)
[[ 9. 10. 11.]
 [12. 13. 14.]]

Еще пример

In [6]:
n = 100
X = tf.placeholder(tf.float32, shape=(None, n + 1), name="X")
y = tf.placeholder(tf.float32, shape=(None, 1), name="y")

Сохранение и восстановление моделей

После обучения модели, надо сохранить на диск ее параметры.

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

Создается узел Saver в конце стадии построения (после того, как созданы все узлы переменных);

Затем на стадии выполнения вызывается метод

sаve() узла Sаver

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

In [ ]:
[...]
theta = tf.Variable(tf.random_uniform([n + 1, 1], -1.0, 1.0), name="theta")
[...]
init = tf.global_variables_initializer()
saver = tf.train.Saver()

with tf.Session() as sess:
    sess.run(init)
    for epoch in range(n_epochs):
        if epoch % 100 == 0: # checkpoint every 100 epochs
            save_path = saver.save(sess, "/tmp/my_model.ckpt")
        sess.run(training_op)
    best_theta = theta.eval()
    save_path = saver.save(sess, "/tmp/my_model_final.ckpt")

Восстановление модели

In [ ]:
with tf.Session() as sess:
    saver.restore(sess, "/tmp/my_model_final.ckpt")
    [...]
In [ ]: