2017-07-02 37 views
1

我运行wide and deep tutorial代码,并没有改变我的错误:tensorflow:铸造<D型:“Int64的”>标签为bool

WARNING:tensorflow:Casting <dtype: 'int64'> labels to bool. 

我的问题是:这是什么意思,以及如何做到这一点在我想要预测超过2种可能的结果的其他模型中是否有效?

这个错误出现在一个情况/教程中,其中的预测非常适合布尔型,是/否情况。但是,如果我有三个可能的值的标签,我认为这个布尔转换会杀死我的结果吗?

这个警告的起源是什么,以及如何避免它,所以我可以训练一个网络超过2个可能的结果?

回答

1

我在使用DNNClassifier时遇到了完全相同的错误。为了解决它,我需要指定n_classes参数到您的目标中的类的数量。

n_classes参数用于指定目标中有多少个类。默认情况下,它假定目标中只有两个类,因此它将目标值转换为布尔值。 https://www.tensorflow.org/tutorials/wide

然而,在我的情况下,问题是定义在本教程的input_fn标签张量:

m = tf.contrib.learn.DNNClassifier(
     model_dir=model_dir, 
     n_classes=10, # <--------- 
     feature_columns=deep_columns, 
     hidden_units=[400,50], 
     optimizer=tf.train.ProximalAdagradOptimizer(
      learning_rate=0.001, 
      l1_regularization_strength=0.001 
     )) 
+0

你能解释更多的是什么'这个问题n_classes'变化? – Rikard

+0

n_classes参数用于指定目标中有多少个类。默认情况下,它假定目标中只有两个类,因此它将目标值转换为布尔值。 –

0

我在本教程中使用tf.contrib.learn.LinearClassifier时遇到这个错误。此前,就出现如下:

df[LABEL_COLUMN] = (df["income_bracket"].apply(lambda x: ">50K" in x)).astype(int) 

此修复程序是将类型更改为布尔:

df[LABEL_COLUMN] = (df["income_bracket"].apply(lambda x: ">50K" in x)).astype(bool) 
相关问题