Цель / Цель
Классифицировать данные временного ряда 9D. Размерность (128,9), 10300 образцов. Использование tf.data.Datasets и Tensorflow 1.15 (!)
Ошибка / выпуск / камень преткновения
Я тщательно создал объект tf.data.Dataset из своих данных и теперь проходил обучение и тестирование наборы данных. Когда я передаю это (для первоначального тестирования совместимости!) В API Estimator, я получаю следующую ошибку: V
alueError: функции должны быть словарем из Tensor
s. Данного типа:
Я следовал всем практикам в документах, и я не понимаю, как еще я должен достичь этого словаря. Кто-нибудь может указать мне направление моей ошибки?
Используемый код
загрузка данных:
feature_columns = [tf.feature_column.numeric_column('total_acc_x',shape=[128, 1]),
tf.feature_column.numeric_column('total_acc_y', shape=[128, 1]),
tf.feature_column.numeric_column('total_acc_z', shape=[128, 1]),
tf.feature_column.numeric_column('body_acc_x', shape=[128, 1]),
tf.feature_column.numeric_column('body_acc_y', shape=[128, 1]),
tf.feature_column.numeric_column('body_acc_z', shape=[128, 1]),
tf.feature_column.numeric_column('body_gyro_x', shape=[128, 1]),
tf.feature_column.numeric_column('body_gyro_y', shape=[128, 1]),
tf.feature_column.numeric_column('body_gyro_z', shape=[128, 1])]
def load_dataset(prefix=''):
# load all train
trainX, trainy = load_dataset_group('train', prefix + '/storage/UCIHAR/UCIHARDATASET/')
print('train'), print(trainX.shape, trainy.shape)
# load all test
testX, testy = load_dataset_group('test', prefix + '/storage/UCIHAR/UCIHARDATASET/')
print('test'),print(testX.shape, testy.shape)
# zero-offset class values
trainy = trainy - 1
testy = testy - 1
# one hot encode y
trainy_oh = to_categorical(trainy)
testy_oh = to_categorical(testy)
print(trainX.shape, trainy.shape, testX.shape, testy.shape)
return trainX, trainy, testX, testy, testy_oh, trainy_oh
trnX, trnY, tstX, tstY, tstY_oh, trnY_oh = load_dataset()
input_fn:
def _input_fn(partition):
if partition == "train":
dst = tf.data.Dataset.from_tensor_slices((trnX, trnY))
elif partition == "predict":
dst = tf.data.Dataset.from_tensor_slices((tstX[:100:10], tstY[:100:10]))
else:
dst = tf.data.Dataset.from_tensor_slices((tstX, tstY))
dst = dst.batch(50)
iterator = dst.make_one_shot_iterator()
features, labels = iterator.get_next()
pdb.set_trace()
return features, labels
вызов оценщика:
tf.estimator.train_and_evaluate(
estimator,
train_spec=tf.estimator.TrainSpec(
input_fn=lambda: _input_fn("train"),
max_steps=TRAIN_STEPS),
eval_spec=tf.estimator.EvalSpec(
input_fn=lambda: _input_fn("test"),
steps=None,
start_delay_secs=1,
throttle_secs=1,
))