2017-06-15 12 views
0

60列のデータセット(FEATURES = 59列(整数と浮動小数点の混合))、LABEL = TARGETという名前の列を0 /モデルに合うようにしようとしているときに1つの値)Tensorflow DNNClassifier.fitエラー:TypeError: 'tuple'オブジェクトが呼び出し可能ではありません

私は次のエラーを取得:後

TypeError: 'tuple' object is not callable

が使用するコードです:

from __future__ import absolute_import 
from __future__ import division 
from __future__ import print_function 

import os 
import urllib 

import itertools 

import pandas as pd 
import numpy as np 
import tensorflow as tf 

tf.logging.set_verbosity(tf.logging.INFO) 

COLUMNS = ["DEMAdmNo","target","PEV_30","PEV_365","lhlos","LTSD","LNOSD","comorbidity_index","AdmD_3","AdmD_7","AdmD_8","AdmD_9","AdmD_11","AdmD_13","AdmD_14","AdmD_15","AdmD_16","AdmD_18","AdmD_20","AdmD_21","AdmD_22","AdmD_23","AdmD_26","AdmD_27","AdmD_28","AdmD_30","AdmD_31","AdmD_32","AdmD_33","AdmD_36","DisP_1","DisP_2","DisP_4","DisP_5","DisP_6","DisP_7","DisP_11","DisP_12","DisP_13","DisP_14","DisP_16","Disc_8","Disc_10","Disc_11","Disc_12","Disc_14","Disc_15","Disc_17","Disc_21","Disc_22","Disc_23","Disc_24","Disc_25","Disc_26","Disc_27","Disc_28","Disc_29"] 

FEATURES = ["DEMAdmNo","PEV_30","PEV_365","lhlos","LTSD","LNOSD","comorbidity_index","AdmD_3","AdmD_7","AdmD_8","AdmD_9","AdmD_11","AdmD_13","AdmD_14","AdmD_15","AdmD_16","AdmD_18","AdmD_20","AdmD_21","AdmD_22","AdmD_23","AdmD_26","AdmD_27","AdmD_28","AdmD_30","AdmD_31","AdmD_32","AdmD_33","AdmD_36","DisP_1","DisP_2","DisP_4","DisP_5","DisP_6","DisP_7","DisP_11","DisP_12","DisP_13","DisP_14","DisP_16","Disc_8","Disc_10","Disc_11","Disc_12","Disc_14","Disc_15","Disc_17","Disc_21","Disc_22","Disc_23","Disc_24","Disc_25","Disc_26","Disc_27","Disc_28","Disc_29"] 

LABEL = "target" 

# Load datasets 
training_set = pd.read_csv("Performance_train_jun5.csv", skipinitialspace=True,skiprows=1, names=COLUMNS) 
test_set = pd.read_csv("Performance_test_jun5.csv", skipinitialspace=True,skiprows=1, names=COLUMNS) 

def my_input_fn(data_set): 
    feature_cols = {k: tf.constant(data_set[k].values) 
        for k in FEATURES} 
    labels = tf.constant(data_set[LABEL].values) 
    return feature_cols, labels 

classifier = 
    tf.contrib.learn.DNNClassifier(feature_columns=my_input_fn(training_set), 
               hidden_units=[10, 20, 10], 
               n_classes=2, 
               model_dir="/tmp/h_model") 

     INFO:tensorflow:Using default config. 
INFO:tensorflow:Using config: {'_evaluation_master': '', '_task_type': None, '_num_ps_replicas': 0, '_keep_checkpoint_every_n_hours': 10000, '_master': '', '_num_worker_replicas': 0, '_save_checkpoints_steps': None, '_model_dir': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x000000000DA51908>, '_keep_checkpoint_max': 5, '_save_checkpoints_secs': 600, '_tf_config': gpu_options { 
    per_process_gpu_memory_fraction: 1 
} 
, '_tf_random_seed': None, '_task_id': 0, '_environment': 'local', '_save_summary_steps': 100, '_is_chief': True} 


classifier.fit(input_fn=my_input_fn(training_set), steps=2000) 

TypeError: 'tuple' object is not callable 

私は上記のコードに関して次のような質問をしています:

1)私の機能はint型とfloat型の混在しているので、テンソルに変換する際に問題が発生しますか?

2)私の理解では、classifier.fitのmy_input_fn呼び出しは、フィーチャーとターゲット・データの両方を読み取る必要があります。ここに何もないのですか?

答えて

0

最初に、エラー:TypeError: 'tuple' object is not callableこれは、タプルへの間違ったアクセスのための標準的なPythonエラーです。例:

タプルを作成します。my_tuple = ('elem1','elem2')

方法でアクセスして:my_tuple[0]
アウト[0]
[0]で'elem1'

アクセスそれは悪い方法で:
my_tuple(0)(括弧注)
アウト[1]TypeError: 'tuple' object is not callable

ので、そのエラーが唯一のあなたとタプル値アクセスにしようとしていることを語っている[1]ではかっこの代わりに正方形のbraquetsが行く方法です。

質問

1)うまく前処理されていない場合はい、それは問題の原因となります。あなたの問題が浮動小数点型関数をキャストする可能性はありますか?多分あなたはそのアプローチを試すことができます。

2)機能が正しいかどうかは確認しませんでしたあなたはより多くの助けが必要な場合は、あなたのcsvファイル( 'Performance_train_jun5を掲示:物事が機能はタプルを返し、あなたは正しい方法(上記公開)

注記の値にアクセスする必要があるということです。CSVは、関数呼び出しの戻り値、関数オブジェクト(すなわち、input_fn = my_input_fn)をしませ受けなければならないinput_fn 『')どこかTensorflowのマニュアル、パラメータによると、多くに

+0

私はint機能をfloatにキャストしようとしましたが、動作するようです。私は前処理をさらに進めます。入力いただきありがとうございます! –

0

に役立つだろう』。これはあなたのTypeErrorが 'fit'を持つ理由です。 input_fnパラメーターのパラメーターを持つ関数を使用する方法については、次のリンクを参照してください。 https://www.tensorflow.org/get_started/input_fn