Вывод с моделью, обученной с помощью tf.Dataset

Я обучил модель с использованием API tf.data.Dataset, поэтому мой учебный код выглядит примерно так

with graph.as_default():
    dataset = tf.data.TFRecordDataset(tfrecord_path)
    dataset = dataset.map(scale_features, num_parallel_calls=n_workers)
    dataset = dataset.shuffle(10000)
    dataset = dataset.padded_batch(batch_size, padded_shapes={...})
    handle = tf.placeholder(tf.string, shape=[])
    iterator = tf.data.Iterator.from_string_handle(handle,
                                                   train_dataset.output_types,
                                                   train_dataset.output_shapes)
    batch = iterator.get_next()
    ... 
    # Model code
    ...
    iterator = dataset.make_initializable_iterator()

with tf.Session(graph=graph) as sess:
    train_handle = sess.run(iterator.string_handle())
    sess.run(tf.global_variables_initializer())
    for epoch in range(n_epochs):
        sess.run(train_iterator.initializer)
        while True:
            try:
                sess.run(optimizer, feed_dict={handle: train_handle})
            except tf.errors.OutOfRangeError:
               break

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

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

Вопрос касается заданной схемы масштабирования и того факта, что сеть ожидает дескриптор, если я хочу сделать прогноз для нового примера, который не записан в TFRecord, как бы я поступил так?

Если бы я изменил batch, я бы заранее отвечал за масштабирование, чего я бы хотел избежать, если это возможно .

Итак, как я могу вывести отдельные примеры из модели, которая используется в tf.data.Dataset? (Это не для производственных целей, а для оценки того, что произойдет, если я изменю определенные функции)

4 голоса | спросил bluesummers 20 J0000006Europe/Moscow 2018, 08:14:30

1 ответ


0
на самом деле, когда вы используете набор данных api, в графе есть тензорное имя «IteratorGetNext: 0», так что вы можете использовать следующий способ для прямой установки ввода:
ответил zhao yufei 6 J000000Friday18 2018, 03:50:04

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132