Как выполнить предварительную обработку в пакетной обработке для функции ввода поезда в Tensorflow Estimator - PullRequest
1 голос
/ 27 апреля 2019

Я написал простую модель TF, используя Estimator. Простая версия работала, но с большим размером ввода во время обучения мой код сталкивался с ошибкой памяти. Для этого я хочу отправить данные в мою функцию поезда в пакетном режиме и выполнить предварительную обработку в пакетном режиме вместо целых данных. У меня есть код ниже, который сталкивается с ошибками. Может кто-то любезно пересмотреть и помочь мне понять, что не так -

def train_fn_custom(features, labels, batch_size):
    print(type(features)) // gives <class 'numpy.ndarray'>
    print(type(labels))
    def _preprocess_function(features, labels):        
        print(type(features)) // gives <class 'tensorflow.python.framework.ops.Tensor'>
        print(type(labels))
        features=tokenizer.texts_to_sequences(features, maxlen)
        features=sequence.pad_sequences(features, maxlen=maxlen)
        features=features.astype(np.float32)

        labels=utils.to_categorical(labels, nb_classes)
        labels=labels.astype(np.float32)
        return features, labels

    dataset = tf.data.Dataset.from_tensor_slices((features, labels))
    dataset = dataset.map(_preprocess_function)
    dataset = dataset.batch(batch_size)
    return dataset.make_one_shot_iterator().get_next()

batch_size = 128
customTrain = lambda: train_fn_custom(X1, y_train, batch_size)
estimator_model.train(input_fn=customTrain, steps=10000)

Ошибка:

in texts_to_sequences_generator
    for text in texts:
  File "/usr/local/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 459, in __iter__
    "Tensor objects are only iterable when eager execution is "
TypeError: Tensor objects are only iterable when eager execution is enabled. To iterate over this tensor use tf.map_fn.
...