2017-07-02 39 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) 
相關問題