Airflow TFX Trainer组件未将模型输出到文件系统的问题
首先,我使用的是TFX版本0.21.2和Tensorflow版本2.1 我已经按照Chigaco出租车的例子建造了一条管道。执行培训师组件时,我可以在日志中看到以下内容: 信息-培训完成。模型写入/root/aiffair/tfx/pipelines/fish/Trainer/Model/9/serving\u Model\u dir 当检查上述目录时,它是空的。我错过了什么 这是我的DAG定义文件(导入语句省略): 这是我的模块文件:Airflow TFX Trainer组件未将模型输出到文件系统的问题,airflow,tensorflow-estimator,tfx,Airflow,Tensorflow Estimator,Tfx,首先,我使用的是TFX版本0.21.2和Tensorflow版本2.1 我已经按照Chigaco出租车的例子建造了一条管道。执行培训师组件时,我可以在日志中看到以下内容: 信息-培训完成。模型写入/root/aiffair/tfx/pipelines/fish/Trainer/Model/9/serving\u Model\u dir 当检查上述目录时,它是空的。我错过了什么 这是我的DAG定义文件(导入语句省略): 这是我的模块文件: _DENSE_FLOAT_FEATURE_KEYS = [
_DENSE_FLOAT_FEATURE_KEYS = ['length']
real_valued_columns = [tf.feature_column.numeric_column('length')]
def _eval_input_receiver_fn():
serialized_tf_example = tf.compat.v1.placeholder(
dtype=tf.string, shape=[None], name='input_example_tensor')
features = tf.io.parse_example(
serialized=serialized_tf_example,
features={
'length': tf.io.FixedLenFeature([], tf.float32),
'label': tf.io.FixedLenFeature([], tf.int64),
})
receiver_tensors = {'examples': serialized_tf_example}
return tfma.export.EvalInputReceiver(
features={'length' : features['length']},
receiver_tensors=receiver_tensors,
labels= features['label'],
)
def parser(serialized_example):
features = tf.io.parse_single_example(
serialized_example,
features={
'length': tf.io.FixedLenFeature([], tf.float32),
'label': tf.io.FixedLenFeature([], tf.int64),
})
return ({'length' : features['length']}, features['label'])
def _input_fn(filenames):
# TFRecordDataset doesn't directly accept paths with wildcards
filenames = tf.data.Dataset.list_files(filenames)
dataset = tf.data.TFRecordDataset(filenames, 'GZIP')
dataset = dataset.map(parser)
dataset = dataset.shuffle(2000)
dataset = dataset.batch(40)
dataset = dataset.repeat(10)
return dataset
def trainer_fn(trainer_fn_args, schema):
estimator = tf.estimator.LinearClassifier(feature_columns=real_valued_columns)
train_input_fn = lambda: _input_fn(trainer_fn_args.train_files)
train_spec = tf.estimator.TrainSpec(
train_input_fn,
max_steps=trainer_fn_args.train_steps)
eval_input_fn = lambda: _input_fn(trainer_fn_args.eval_files)
eval_spec = tf.estimator.EvalSpec(
eval_input_fn,
steps=trainer_fn_args.eval_steps,
name='fish-eval')
receiver_fn = lambda: _eval_input_receiver_fn()
return {
'estimator': estimator,
'train_spec': train_spec,
'eval_spec': eval_spec,
'eval_input_receiver_fn': receiver_fn
}
提前感谢您的帮助 为与我面临相同问题的任何人发布解决方案 模型没有写入文件系统的原因是估计器需要一个配置参数来知道在哪里写入模型 以下对trainer_fn功能的修改应能解决该问题
run_config = tf.estimator.RunConfig(save_checkpoints_steps=999, keep_checkpoint_max=1)
run_config = run_config.replace(model_dir=trainer_fn_args.serving_model_dir)
estimator=tf.estimator.LinearClassifier(feature_columns=real_valued_columns,config=run_config)
run_config = tf.estimator.RunConfig(save_checkpoints_steps=999, keep_checkpoint_max=1)
run_config = run_config.replace(model_dir=trainer_fn_args.serving_model_dir)
estimator=tf.estimator.LinearClassifier(feature_columns=real_valued_columns,config=run_config)