InvalidArgumentError при обучении оценщика Tensorflow RNN - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь использовать Tensorflow для обучения простого Оценщика RNN, построенного следующим образом:

sequence_feature_colums = [tf.contrib.feature_column.sequence_numeric_column("price", shape=...)]    
estimator = tf.contrib.estimator.RNNEstimator(
    head=tf.contrib.estimator.regression_head(),
    sequence_feature_columns=sequence_feature_colums,
    rnn_cell_fn=...)

features = {"price": <multi-dimentional numpy array>}
labels = <uni-dimentional numpy array>

estimator.train(input_fn=lambda:train_input_fn(features, labels), steps=100)

с функцией ввода, определенной следующим образом:

def train_input_fn(features, labels):
    dataset = tf.data.Dataset.from_tensor_slices((dict(features), labels))    
    dataset = dataset.batch(64)
    iterator = dataset.make_one_shot_iterator()    
    return iterator.get_next()

К сожалению, я получаю следующую ошибку при вызове train в оценщике:

InvalidArgumentError (see above for traceback): indices[35] = 64 is not in [0, 64)
     [[node rnn/select_last_activations/GatherV2 (defined at /Users/luke/virtualenvs/smp-rnn/lib/python3.6/site-packages/tensorflow_estimator/contrib/estimator/python/estimator/rnn.py:171) ]]

и я полностью застрял в том, что может быть причиной, только то, что диапазон, в котором могут быть индексы, кажется, соответствует размеру партии. Мой код очень похож на пример , включенный в документы RNN Estimator , поэтому я не слишком уверен, что делаю неправильно.

  • tensorflow version: 1.13.1
  • tensorflow-estimator version: 1,13,0
  • python --version: 3,6,5
...