TensorFlow 0.12教程产生警告:"输入Tensor的等级应与列

时间:2016-12-21 22:45:14

标签: python-3.x tensorflow

我有一些在python中编写机器学习程序的经验,但我是TensorFlow的新手并且正在检查它。我的开发环境是一个lubuntu 14.04 64位虚拟机。我从miniconda创建了一个python 3.5 conda环境,并安装了TensorFlow 0.12及其依赖项。我开始尝试从TensorFlow的教程中运行一些示例代码,并在boston.py示例中为输入函数调用fit()时遇到此警告:source

  

警告:tensorflow:输入的等级Tensor(1)应该与   列的output_rank(2)。将尝试扩大dims。这是非常高的   建议您调整输入大小,因为此行为可能会更改。

在Google搜索后,我发现其他人遇到了同样的警告:

但是,他们也遇到了阻止代码执行完成的错误。在我的情况下,代码执行上述警告。不幸的是,我无法在这些链接中找到关于导致警告的原因以及如何修复警告的单一答案。他们都专注于错误。如何删除警告?或者警告是否可以忽略?

干杯!

额外信息,运行上述boston.py示例时,我也会看到以下警告。

  

警告:tensorflow:********** ************   警告:tensorflow:TensorFlow的V1检查点格式已经完成   弃用。警告:tensorflow:考虑切换到更多   高效的V2格式:警告:tensorflow:
  ' tf.train.Saver(write_version = tf.train.SaverDef.V2)'   警告:tensorflow:默认情况下已启用。   警告:tensorflow:************ *********

  

警告:tensorflow:从   /home/kade/miniconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/estimators/dnn_linear_combined.py:1053   在预测中:调用BaseEstimator.predict(来自   tensorflow.contrib.learn.python.learn.estimators.estimator)x是   已弃用,将在2016-12-01之后删除。说明   更新:Estimator通过移动与Scikit Learn界面分离   进入单独的SKCompat类。参数x,y和batch_size仅为   在SKCompat类中,Estimator只接受input_fn。   示例转换:est = Estimator(...) - > 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.我将继续调查。

2 个答案:

答案 0 :(得分:11)

如果明确指定张量的形状:

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

警告应该消失。

答案 1 :(得分:0)

明确指定张量的形状后。

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

有效!