2017-10-26 21 views
1

https://github.com/tensorflow/tensorflow/blob/r1.3/tensorflow/examples/learn/wide_n_deep_tutorial.pyのチュートリアルコードを使用していますが、コードを評価する代わりに予測を行うまでは問題ありません。入力fnを使用してTensorflowエスティメータで予測

def input_fn_predict(data_file, num_epochs, shuffle): 
    """Input builder function.""" 
    df_data = pd.read_csv(
     tf.gfile.Open(data_file), 
     names=CSV_COLUMNS, 
     skipinitialspace=True, 
     engine="python", 
     skiprows=1) 
    # remove NaN elements 
    df_data = df_data.dropna(how="any", axis=0) 
    labels = df_data["income_bracket"].apply(lambda x: ">50K" in x).astype(int) 
    return tf.estimator.inputs.pandas_input_fn(#removed paramter y 
     x=df_data, 
     batch_size=100, 
     num_epochs=num_epochs, 
     shuffle=shuffle, 
     num_threads=5) 

そして、このようにそれを呼び出すために:私は(ちょうどパラメータyを削除することで)このようになり予測のための別の関数を作ってみました

predictions = m.predict(
     input_fn=input_fn_predict(test_file_name, num_epochs=1, shuffle=True) 
) 
    for i, p in enumerate(predictions): 
     print(i, p) 
  • 私は右のそれをやっていますか?
  • 16282(テストファイルの行数)の代わりに81404という予測が得られるのはなぜですか?
  • 各行は、このような何か含ま:

{ '確率':配列([0.78595656、0.21404342]、DTYPE =のfloat32)、 'logits':配列([ - 1.3007226]、DTYPEを=配列([0])、配列([ 0.21404341]、dtype = float32)}

どうすれば読むことができますか?

答えて

1

新しいラベルを予測するために、shuffle=Falseを設定する必要があるため、データの順序を維持する必要があります。

以下は予測を実行するためのコードです(テストしました)。入力ファイルはテストデータ(csv)と似ていますが、ラベル列はありません。



    predict_file_name = 'tutorials/data/adult.predict' 
    results = m.predict(
     input_fn=predict_input_fn(predict_file_name) 
    ) 
    for result in results: 
     print 'result: {}'.format(result) 

つのサンプルの予測結果は以下の通りです:



    { 
     'probabilities': array([0.78595656, 0.21404342], dtype = float32), 
     'logits': array([-1.3007226], dtype = float32), 
     'classes': array(['0'], dtype = object), 
     'class_ids': array([0]), 
     'logistic': array([0.21404341], dtype = float32) 
    } 

各フィールドの手段が

  • '確率' は、どのような:それを呼び出すために

    
    
        def predict_input_fn(data_file): 
        global CSV_COLUMNS 
        CSV_COLUMNS = CSV_COLUMNS[:-1] 
        df_data = pd.read_csv(
         tf.gfile.Open(data_file), 
         names=CSV_COLUMNS, 
         skipinitialspace=True, 
         engine='python', 
         skiprows=1 
        ) 
    
        # remove NaN elements 
        df_data = df_data.dropna(how='any', axis=0) 
    
        return tf.estimator.inputs.pandas_input_fn(
         x=df_data, 
         num_epochs=1, 
         shuffle=False 
        ) 
    
    

    アレイ([0.78595656,0.21404342]、d type = float32)。 - 式中のZの
    値アレイ([1.3007226]、DTYPE =のfloat32):
    それは予測出力ラベルは、クラス0は0.78595656

  • 'logits' 安心して(この場合< = 50Kで)であります1 /(1 + e ^( - z))は-1.3である。
  • 'クラス':配列([ '0']、DTYPE =オブジェクト)
    クラスラベルは0
あります
関連する問題