import tensorflow as tf
Создание узела-заполнителя:
Вызвать функцию
placeholder() и указать тип данных выходного тензора.
Дополнительно можно также задать его форму, если вы хотите навязать ее.
Указание None для измерения означает "любой размер".
Например, следующий код создает узел-заполнитель А и узел В = А + 5. Когда оценивается В, мы передаем мето ду eval ( ) экземпляр feed _ dict, который указывает значение А. Обратите внимание, что узел А обязан иметь ранг 2 (т.е. быть двумерным) и должен содержать три столбца (иначе сгенерируется исключение), но может вклю чать любое количество строк.
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)
print(B_val_2)
Еще пример
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
всякий раз, когда надо сохранить модель, передавая ему сеанс и путь к файлу контрольных точек.
[...]
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")
Восстановление модели
with tf.Session() as sess:
saver.restore(sess, "/tmp/my_model_final.ckpt")
[...]