Python tensorflow馈送列表功能(多热)到tf.estimator
某些要素列的数据类型为Python tensorflow馈送列表功能(多热)到tf.estimator,python,tensorflow,machine-learning,neural-network,deep-learning,Python,Tensorflow,Machine Learning,Neural Network,Deep Learning,某些要素列的数据类型为list。它们的长度可以不同。我想将此列编码为一个多热点分类功能,并将其提供给tf.estimator。我尝试了以下操作,但错误无法获取显示为字节的元素。我认为这是深度学习中的常见做法,尤其是推荐系统,例如深度和广度模型。我发现了一个相关的问题,但它没有显示如何反馈给估计器 import pandas as pd import tensorflow as tf OUTDIR = "./data" data = {"x": [["a", "c"], ["a", "b"],
list
。它们的长度可以不同。我想将此列编码为一个多热点分类功能,并将其提供给tf.estimator
。我尝试了以下操作,但错误无法获取显示为字节的元素。我认为这是深度学习中的常见做法,尤其是推荐系统,例如深度和广度模型。我发现了一个相关的问题,但它没有显示如何反馈给估计器
import pandas as pd
import tensorflow as tf
OUTDIR = "./data"
data = {"x": [["a", "c"], ["a", "b"], ["b", "c"]], "y": ["x", "y", "z"]}
df = pd.DataFrame(data)
Y = df["y"]
X = df.drop("y", axis=1)
indicator_features = [
tf.feature_column.indicator_column(
categorical_column=tf.feature_column.categorical_column_with_vocabulary_list(
key="x", vocabulary_list=["a", "b", "c"]
)
)
]
model = tf.estimator.LinearClassifier(
feature_columns=indicator_features, model_dir=OUTDIR
)
training_input_fn = tf.estimator.inputs.pandas_input_fn(
x=X, y=Y, batch_size=64, shuffle=True, num_epochs=None
)
model.train(input_fn=training_input_fn)
出现以下错误:
信息:tensorflow:使用默认配置。信息:tensorflow:使用配置:
{u model_dir':'testalg','u tf_random_seed':无,
“_save_summary_steps”:100“_save_checkpoints_steps”:无,
“\u保存\u检查点\u秒”:600“\u会话\u配置”:无,
“保持检查点最多”:5,“保持检查点每小时”:10000,
“\u日志\u步骤\u计数\u步骤”:100“\u序列\u分布”:无“\u设备\u fn”:
无,“\u服务”:无,“\u群集\u规范”:
,“\u任务\u类型”:“工作者”,“\u任务\u id”:0,
“\u集群中的\u全局\u id\u”:0,“\u主节点”:”“评估\u主节点”:”,
“_is_chief”:True“_num_ps_replications”:0“_num_worker_replications”:1}”
信息:tensorflow:正在调用模型\u fn。信息:tensorflow:完成呼叫
型号(fn)。信息:tensorflow:创建检查点SaveRhook。
信息:tensorflow:图表已定稿。信息:tensorflow:正在运行
local_init_op.INFO:tensorflow:已完成运行local_init_op。
信息:tensorflow:向协调员报告的错误:,无法
以字节形式获取元素。信息:tensorflow:正在将0的检查点保存到
testalg/model.ckpt。
-------------------------------------------------------内部错误回溯(最后一次最近调用)
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py
在_do_call(self,fn,*args)1321中尝试:
->1322返回fn(*args)1323,错误除外。操作错误为e:
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py
in_run_fn(feed_dict、fetch_list、target_list、options、run_元数据)
1306返回self.\u调用\u tf\u会话运行(
->1307选项、提要、获取列表、目标列表、运行元数据)1308
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py
在调用会话运行中(self、options、feed、dict、fetch、list、,
目标\u列表,运行\u元数据)1408 self.\u会话,选项,
提要、获取列表、目标列表、,
->1409运行_元数据)1410其他:
InternalError:无法获取作为字节的元素
在处理上述异常期间,发生了另一个异常:
内部错误回溯(最后一次最近调用)
在()
44
45
--->46型号.列车(输入\u fn=培训\u输入\u fn)
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py
列车内(自我、输入、挂钩、步数、最大步数、保存侦听器)
364
365保存侦听器=\u检查侦听器\u类型(保存侦听器)
-->366损失=自我训练模型(输入、挂钩、保存侦听器)
367 logging.info('最后一步丢失:%s',丢失)
368回归自我
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py
在列车模型中(自我、输入、钩子、保存侦听器)1117
返回自。\列车\模型\分布式(输入\ fn、挂钩、,
保存_侦听器)1118其他:
->1119返回self.\u train\u model\u default(输入、钩子、保存侦听器)1120 1121 def\u train\u model\u default(self,
输入\u fn、挂钩、保存\u侦听器):
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py
在默认情况下(自我、输入、挂钩、保存侦听器)
1133带估计器规范(估计器规范、,
工人钩,1134
hooks,全局步进张量,
->1135保存侦听器)1136 1137定义列车模型分布式(自身、输入、挂钩、,
保存(U侦听器):
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py
带估计器规格的列车(自身、估计器规格、工人挂钩、,
hooks,全局\u步长\u张量,保存\u侦听器)1334损失=无
1335而不是周一。是否应停止()
->1336 u,损耗=单次运行([estimator_spec.train_op,estimator_spec.loss])1337返回损耗1338
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/training/monitored_session.py
在退出中(自身、异常类型、异常值、回溯)
687如果在[errors.OutOfRangeError,StopIteration]中键入异常:
688异常类型=无
-->689自关闭内部(例外类型)
690#退出应返回True以抑制异常。
691返回异常类型为“无”
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/training/monitored_session.py
内部(自身、异常类型)
724如果self.\u sess为无:
725 raise RUNTIMERROR('会话已关闭')
-->726自我评估结束()
727最后:
728 self.\u sess=无
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/training/monitored_session.py
近距离(自我)
972如果自评:
973尝试:
-->974自我评估结束()
975除_抢占_错误外:
976通行证
/home/yinan.li1/anaconda3/lib/python3.6/site-packages/tensorflow/python/training/monitored_session.py
密切(自我)1116自我合作加入(1117
停止\u宽限期\u秒=自我。\u停止\u宽限期\u秒,
->1118忽略\u活动\u线程=Tru
X2= pd.DataFrame(X['x'].values.tolist(), columns=['x1','x2'])
feat1 = tf.feature_column.categorical_column_with_vocabulary_list(
key="x1", vocabulary_list=["a", "b", "c"]
)
feat2 = tf.feature_column.categorical_column_with_vocabulary_list(
key="x2", vocabulary_list=["a", "b", "c"]
)
indicator_features = [
tf.feature_column.indicator_column(
categorical_column=feat1
),tf.feature_column.indicator_column(
categorical_column=feat2
)
]
training_input_fn = tf.estimator.inputs.pandas_input_fn(
x=X2, y=Y, batch_size=64, shuffle=True, num_epochs=None
)