Это, конечно, возможно и тривиально.Вам нужно будет настроить модель, которую вы хотите использовать, и я предполагаю, что она построена.
С точки зрения взаимодействия с моделью тензорного потока, вам просто нужно собрать данные в массивы для передачи черезfeed_dict
свойство sess.run
.
Чтобы передать входные данные в tenorflow и получить результат, вы должны выполнить что-то вроде этого:
result = sess.run([logits], feed_dict={x:input_data})
Это выполнит прямой проход, производящийвывод модели без внесения каких-либо обновлений.Теперь вы возьмете results
и воспользуетесь ими, чтобы сделать следующий шаг в игре.
Теперь, когда у вас есть результат вашего действия (например, метки), вы можете выполнить шаг обновления:
sess.run([update_op], feed_dict={x:input_data, y:labels})
Это так просто.Обратите внимание, что в вашей модели будет определен оптимизатор (update_op
в этом примере), но если вы не попросите его вычислить тензор (как в первом примере кода), обновления не произойдет.Tensorflow - это граф зависимостей.Оптимизатор зависит от выходных данных logits
, но вычисление logits
не зависит от оптимизатора.
Предположительно, вы будете инициализировать эту модель случайным образом, поэтому первые результаты будут генерироваться случайным образом, но каждый шагпосле этого получат выгоду от применения предыдущих обновлений.
Если вы используете модель обучения с подкреплением, вы будете получать вознаграждение только в какое-то неопределенное время в будущем, а при запуске обновления будет немного отличатьсяиз этого примера, но общая природа проблемы остается той же.