Я пытаюсь использовать 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