Tensorflow:TypeError:预期的字符串,得到1的类型' int64'代替

时间:2016-08-12 18:23:49

标签: python-2.7 tensorflow

我试图在tensorflow中创建逻辑回归模型。

当我尝试执行model.fit(input_fn=train_input_fn, steps=200)时,我收到以下错误。

    TypeError                                 Traceback (most recent call last)
<ipython-input-44-fd050d8188b5> in <module>()
----> 1 model.fit(input_fn=train_input_fn, steps=200)

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.pyc in fit(self, x, y, input_fn, steps, batch_size, monitors)
    180                              feed_fn=feed_fn,
    181                              steps=steps,
--> 182                              monitors=monitors)
    183     logging.info('Loss for final step: %s.', loss)
    184     return self

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.pyc in _train_model(self, input_fn, steps, feed_fn, init_op, init_feed_fn, init_fn, device_fn, monitors, log_every_steps, fail_on_nan_loss)
    447       features, targets = input_fn()
    448       self._check_inputs(features, targets)
--> 449       train_op, loss_op = self._get_train_ops(features, targets)
    450 
    451       # Add default monitors.

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/linear.pyc in _get_train_ops(self, features, targets)
    105     if self._linear_feature_columns is None:
    106       self._linear_feature_columns = layers.infer_real_valued_columns(features)
--> 107     return super(LinearClassifier, self)._get_train_ops(features, targets)
    108 
    109   @property

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/dnn_linear_combined.pyc in _get_train_ops(self, features, targets)
    154     global_step = contrib_variables.get_global_step()
    155     assert global_step
--> 156     logits = self._logits(features, is_training=True)
    157     with ops.control_dependencies([self._centered_bias_step(
    158         targets, self._get_weight_tensor(features))]):

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/dnn_linear_combined.pyc in _logits(self, features, is_training)
    298       logits = self._dnn_logits(features, is_training=is_training)
    299     else:
--> 300       logits = self._linear_logits(features)
    301 
    302     return nn.bias_add(logits, self._centered_bias())

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/dnn_linear_combined.pyc in _linear_logits(self, features)
    255         num_outputs=self._num_label_columns(),
    256         weight_collections=[self._linear_weight_collection],
--> 257         name="linear")
    258     return logits
    259 

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/feature_column_ops.pyc in weighted_sum_from_feature_columns(columns_to_tensors, feature_columns, num_outputs, weight_collections, name, trainable)
    173     transformer = _Transformer(columns_to_tensors)
    174     for column in sorted(set(feature_columns), key=lambda x: x.key):
--> 175       transformed_tensor = transformer.transform(column)
    176       predictions, variable = column.to_weighted_sum(transformed_tensor,
    177                                                      num_outputs,

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/feature_column_ops.pyc in transform(self, feature_column)
    353       return self._columns_to_tensors[feature_column]
    354 
--> 355     feature_column.insert_transformed_feature(self._columns_to_tensors)
    356 
    357     if feature_column not in self._columns_to_tensors:

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/feature_column.pyc in insert_transformed_feature(self, columns_to_tensors)
    410         mapping=list(self.lookup_config.keys),
    411         default_value=self.lookup_config.default_value,
--> 412         name=self.name + "_lookup")
    413 
    414 

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/contrib/lookup/lookup_ops.pyc in string_to_index(tensor, mapping, default_value, name)
    349   with ops.op_scope([tensor], name, "string_to_index") as scope:
    350     shared_name = ""
--> 351     keys = ops.convert_to_tensor(mapping, dtypes.string)
    352     vocab_size = array_ops.size(keys)
    353     values = math_ops.cast(math_ops.range(vocab_size), dtypes.int64)

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/python/framework/ops.pyc in convert_to_tensor(value, dtype, name, as_ref)
    618     for base_type, conversion_func in funcs_at_priority:
    619       if isinstance(value, base_type):
--> 620         ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
    621         if ret is NotImplemented:
    622           continue

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/constant_op.pyc in _constant_tensor_conversion_function(v, dtype, name, as_ref)
    177                                          as_ref=False):
    178   _ = as_ref
--> 179   return constant(v, dtype=dtype, name=name)
    180 
    181 

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/constant_op.pyc in constant(value, dtype, shape, name)
    160   tensor_value = attr_value_pb2.AttrValue()
    161   tensor_value.tensor.CopyFrom(
--> 162       tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape))
    163   dtype_value = attr_value_pb2.AttrValue(type=tensor_value.tensor.dtype)
    164   const_tensor = g.create_op(

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.pyc in make_tensor_proto(values, dtype, shape)
    351       nparray = np.empty(shape, dtype=np_dt)
    352     else:
--> 353       _AssertCompatible(values, dtype)
    354       nparray = np.array(values, dtype=np_dt)
    355       # check to them.

/home/praveen/anaconda/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.pyc in _AssertCompatible(values, dtype)
    288     else:
    289       raise TypeError("Expected %s, got %s of type '%s' instead." %
--> 290                       (dtype.name, repr(mismatch), type(mismatch).__name__))
    291 
    292 

TypeError: Expected string, got 1 of type 'int64' instead.

我不确定要检查哪个功能。有人可以告诉我怎么可以调试这个?提前致谢

1 个答案:

答案 0 :(得分:2)

我的分类列功能很少,其数据类型为int64。所以,我将列从int转换为string。之后,适合步骤完成。显然,tensorflow期望分类特征dtype为字符串。