Использование tenorflow.estimators (v2.1.0) с данными, поступающими из генераторов Python - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь передать данные в tf.estimators (tf версия 2.1.0) из генераторов Python без особого успеха. Я был бы очень признателен, если бы кто-то указал мне правильное направление.

Это пример того, что я пытаюсь сделать (с фиктивными данными):

import numpy as np
import tensorflow as tf

# Generate mock data and labels
def generator():
    while True:
        # Generate "features" and "label"
        feat1 = np.random.normal(0, 1, size=100)
        feat2 = np.random.uniform(-1, 1, size=100)
        feat3 = np.random.exponential(1, size=100)
        X = np.stack([feat1, feat2, feat3])
        label = np.random.choice([0, 1], size=100)

        yield X, label

# Input function for the train method
def input_func():
    ds = tf.data.Dataset.from_generator(generator=generator, 
                                        output_types=(tf.float32, tf.int8))
    return ds

feature_columns = []
feature_columns.append(tf.feature_column.numeric_column(key='X', shape=(3,)))

model = tf.estimator.LinearClassifier(feature_columns=feature_columns)
model.train(input_func, max_steps=10)

Запуск примера выше поднимает ValueError: features should be a dictionary of Тензор s. Given type: <class 'tensorflow.python.framework.ops.Tensor'.

Я понимаю, что в TF v1 у dataset был метод make_one_shot_iterator или что-то подобное, что я больше не могу найти. Я предполагаю, что я упускаю что-то фундаментальное здесь, но я не могу понять это, и я не могу найти соответствующие документы или примеры для TF версии 2.1.0.

Любая помощь или идея будут высоко оценены.

Ура!

...