Tensorflow DNNClassifier.fit错误:类型错误:';元组';对象不可调用

Tensorflow DNNClassifier.fit错误:类型错误:';元组';对象不可调用,tensorflow,classification,Tensorflow,Classification,我试图分析一个有60列的数据集(FEATURES=59列(整数和浮点的混合),LABEL=TARGET的列,值为0/1) 我在尝试拟合模型时出现以下错误: TypeError:“tuple”对象不可调用 以下是使用的代码: from __future__ import absolute_import from __future__ import division from __future__ import print_function import os import urllib imp

我试图分析一个有60列的数据集(FEATURES=59列(整数和浮点的混合),LABEL=TARGET的列,值为0/1)

我在尝试拟合模型时出现以下错误:

TypeError:“tuple”对象不可调用

以下是使用的代码:

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
来自未来导入绝对导入
来自未来进口部
来自未来导入打印功能
导入操作系统
导入URL库
进口itertools
作为pd进口熊猫
将numpy作为np导入
导入tensorflow作为tf
tf.logging.set_详细性(tf.logging.INFO)
柱=[[“Demadm诺”、“目标”、“PEV研究30”、“PEV研究30”、“PEV研究30”、“PEV研究30”、“PEV研究365”、“洛洛洛洛”、“LTSD”、“LNOSD”、“LNOSD”、“LNOSDD”、“LNOSDD”、“非非政府主义”、“非政府主义”、“目标”、“目标”、“目标”、“目标”、“目标”、“目标”、“目标”、“目标”、“目标”、“非政府发展”、“共病指数”、“共病指数”、“共病病指数”、“共病指数”、“共病指数”、“共病指数”、“共病病指数”、“共病指数”、“共病指数指数”、“ADMD3”、“再再再再再三”、“ADM指数”、“ADM指数”、“ADM指数”、“ADM指数”、“ADM指数指数”、“再再再再三”、“再三”、“再三”、“再三”、“再三”、“再三”、“再三”、“再三”、“再三”、“再三”、“再三”、“再三”、“再再再再再三”、“22”、“22”、“再再再再再再再再再三”、“22”、“第21”、“22”、“再再再再再再再再"5",,“磁盘6”、“磁盘7”、“磁盘11”、“磁盘12”、“磁盘13”、“磁盘14”、“磁盘16”、“磁盘8”、“磁盘10”、“磁盘11”、“磁盘12”、“磁盘14”、“磁盘15”、“磁盘17”、“磁盘21”、“磁盘22”、“磁盘23”、“磁盘24”、“磁盘25”、“磁盘26”、“磁盘27”、“磁盘28”、“磁盘29”]
特征=[[“Demadm诺”、“PEV研究30”、“PEV研究30”、“PEV研究30”、“PEV研究365”、“研究者们”、“非诺萨德”、“共病性指数”、“共病性指数”、“共病病指数”、“ADM研究者们”、“共病特征特征”特征=[[上述特征的特征:这些特征包括:这些特征包括:德梅梅诺”、“德梅德莫”、“你们们”、“你们们们们”、“研究”、“研究”、“共病”、“共病病指数”、“共病病患指数”、“共病患指数”、“共病患指数”、“共病患指数”、“ADM D 3”、“ADM研究3”、“3”、“ADM D 3”、“3”、“3”、“3”、“3”、“3”、“3”、“3”、“3”、“3”、“3”、“3”、“3”、“3”、“10”、“22”、“22”、“22”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“22”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“10”、“22”、“10”、“10”、“10”、“10”、“22”、“10”、“10”、“10”、“10”、“ADU 5,“DisP_6”盘7、盘11、盘12、盘13、盘14、盘16、盘8、盘10、盘11、盘12、盘14、盘15、盘17、盘21、盘22、盘23、盘24、盘25、盘26、盘27、盘28、盘29]
LABEL=“target”
#加载数据集
training\u set=pd.read\u csv(“Performance\u train\u jun5.csv”,skipinitialspace=True,skiprows=1,name=COLUMNS)
test\u set=pd.read\u csv(“Performance\u test\u jun5.csv”,skipinitialspace=True,skiprows=1,name=COLUMNS)
定义我的输入(数据集):
feature_cols={k:tf.constant(数据集[k].值)
对于k in FEATURES}
labels=tf.常量(数据集[LABEL].值)
返回特征列、标签
分类器=
tf.contrib.learn.DNNClassifier(功能列=我的输入(训练集)),
隐藏单位=[10,20,10],
n_类=2,
model_dir=“/tmp/h_model”)
信息:tensorflow:使用默认配置。
信息:tensorflow:使用配置:{“U评估主控”:0,“U任务类型”:无,“U数量ps副本”:0,“U每小时保留一次检查点”:10000,“U主控”:0,“U数量工作者副本”:0,“U保存检查点”步骤:无,“U模型”目录:无,“U集群”规范:5,“U保存检查点”:600,“U tf配置”选项{
每处理器gpu内存分数:1
}
,“\u tf\u random\u seed”:无,“\u task\u id”:0,“\u environment”:本地,“\u save\u summary\u steps”:100,“\u is\u chief”:True}
fit(input_fn=my_input_fn(training_set),steps=2000)
TypeError:“tuple”对象不可调用
关于上述代码,我有以下问题:

1) 因为我的特性是int和float数据类型的混合。它们在转换为张量时会引起问题吗


2) 我的理解是,classifier.fit中的My_input_fn调用应该同时读取功能和目标数据。我在这里遗漏了什么吗?

首先,错误:
TypeError:“tuple”对象不可调用
这只是由于对元组的错误访问而导致的标准python错误。例如:

创建一个元组:
my_tuple=('elem1','elem2')

右侧的方式访问它:
在[0]:
我的元组[0]

Out[0]:
'elem1'

以不良的方式访问它:
在[1]:
我的元组(0)
(注意括号)
Out[1]:
TypeError:“tuple”对象不可调用

因此,该错误只是告诉您,您试图用括号而不是方括号来访问元组值。

问题

1) 是的,如果没有很好的预处理,它会导致一个问题。你的问题有可能将int特性转换为float?也许你可以尝试这种方法

2) 我没有检查函数是否正确,但是是的,它应该这样做。问题是函数返回一个元组,您必须以正确的方式访问值(见上文)


注意:如果您需要更多帮助,将您的csv文件('Performance\u train\u jun5.csv')发布到某个地方会有很大帮助。

根据Tensorflow的文档,参数'input\u fn'必须接收函数对象(即input\u fn=my\u input\u fn),而不是函数调用的返回值。这是“fit”出现TypeError的原因。请查看以下链接,了解如何使用带有参数的函数作为输入参数。

我曾尝试将int功能转换为float,但似乎有效。我将进一步进行预处理。感谢您的输入!