Обучающие программы TensorFlow 0.12 вызывают предупреждение: "Уровень входного тензора должен быть таким же, как output_rank для столбца

У меня есть некоторый опыт написания программ машинного обучения на python, но я новичок в TensorFlow и проверяю его. Моя среда разработки - это 64-разрядная виртуальная машина lubuntu 14.04. Я создал среду python 3.5 conda от miniconda и установил TensorFlow 0.12 и ее зависимости. Я начал пытаться запустить пример кода из учебников TensorFlow и столкнулся с этим предупреждением при вызове fit() в примере boston.py для входных функций: source.

ПРЕДУПРЕЖДЕНИЕ: Тензорный поток: Ранг ввода Тензор (1) должен быть таким же, как output_rank (2) для столбца. Будет пытаться расширить dims. Это очень рекомендуется изменить размер ввода, поскольку это может измениться.

После некоторых поисков в Google я обнаружил, что другие люди столкнулись с этим же предупреждением:

Однако они также столкнулись с ошибками, которые не позволяют выполнить выполнение кода. В моем случае код выполняется с указанным выше предупреждением. К сожалению, я не смог найти ни одного ответа в этих ссылках относительно того, что вызвало предупреждение и как устранить предупреждение. Все они сосредоточились на ошибке. Как удалить предупреждение? Или предупреждение безопасно игнорировать?

Ура!

Дополнительная информация, я также вижу следующие предупреждения при запуске вышеупомянутого примера boston.py.

ВНИМАНИЕ: tensorflow: ******************************************* ************ ПРЕДУПРЕЖДЕНИЕ: тензорный поток: формат контрольной точки TensorFlow V1 был осуждается. ПРЕДУПРЕЖДЕНИЕ: Тензорный поток: рассмотрите возможность переключения на более эффективный формат V2: ПРЕДУПРЕЖДЕНИЕ: Тензорный поток:
'Tf.train.Saver(write_version = tf.train.SaverDef.V2)' ПРЕДУПРЕЖДЕНИЕ: Тензорный поток: теперь по умолчанию. ВНИМАНИЕ: tensorflow: ********************************************** *********

и

ПРЕДУПРЕЖДЕНИЕ: tensorflow: От /home/kade/miniconda 3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/estimators/dnn_linear_combined.py:1053 в прогнозе: вызов BaseEstimator.predict(from tensorflow.contrib.learn.python.learn.estimators.estimator) с x является устарел и будет удален после 2016-12-01. Инструкции для Обновление: Оценщик отделен от интерфейса Scikit Learn путем перемещения в отдельный класс SKCompat. Аргументы x, y и batch_size только доступный в классе SKCompat, Estimator будет принимать только input_fn. Пример преобразования: est = Оценщик (...) → est = SKCompat (оценщик (...))

ОБНОВЛЕНИЕ (2016-12-22): Я отслеживал предупреждение для этого файла: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/layers/python/layers/feature_column_ops.py

и этот кодовый блок:

except NotImplementedError:
    with variable_scope.variable_scope(
        None,
        default_name=column.name,
        values=columns_to_tensors.values()):
      tensor = column._to_dense_tensor(transformed_tensor)
      tensor = fc._reshape_real_valued_tensor(tensor, 2, column.name)
      variable = [
          contrib_variables.model_variable(
              name='weight',
              shape=[tensor.get_shape()[1], num_outputs],
              initializer=init_ops.zeros_initializer(),
              trainable=trainable,
              collections=weight_collections)
      ]
      predictions = math_ops.matmul(tensor, variable[0], name='matmul')

Обратите внимание на строку: tensor = fc._reshape_real_valued_tensor(tensor, 2, column.name)

Подпись метода: _reshape_real_valued_tensor(input_tensor, output_rank, column_name=None)

Значение 2 жестко запрограммировано как значение output_rank, но пример boston.py проходит в input_tensor ранга 1. Я продолжу расследование.

Ответ 1

Если вы четко укажете форму своего тензора:

tf.constant(df[k].values, shape=[df[k].size, 1]) 

предупреждение должно исчезнуть.

Ответ 2

После того, как я четко укажу форму тензора.

continuous_cols = {k: tf.constant(df[k].values, shape=[df[k].size, 1]) for k in CONTINUOUS_COLUMNS}

Это работает!