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

The*_*der 11 python-3.x tensorflow

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

警告:tensorflow:输入的等级Tensor(1)应与column的output_rank(2)相同.将尝试扩大dims.强烈建议您调整输入大小,因为此行为可能会更改.

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

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

干杯!

额外信息,运行上述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 in predict.:调用BaseEstimator.不推荐使用带有x的predict(来自tensorflow.contrib.learn.python.learn.estimators.estimator),并将在2016-12-01之后删除.更新说明:通过迁移到单独的SKCompat类,Estimator与Scikit Learn界面分离.参数x,y和batch_size仅在SKCompat类中可用,Estimator仅接受input_fn.转换示例:est = Estimator(...) - > est = SKCompat(Estimator(...))

更新(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')
Run Code Online (Sandbox Code Playgroud)

注意这一行: 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.我将继续调查.

小智 11

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

tf.constant(df[k].values, shape=[df[k].size, 1]) 
Run Code Online (Sandbox Code Playgroud)

警告应该消失.