Возможности должны быть словарем Tensors / создать словарь функций из tf.Data.Dataset? - PullRequest
0 голосов
/ 02 марта 2020

Цель / Цель

Классифицировать данные временного ряда 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,  
    ))
...