Skip to content

ZJCODE/Tensorflow-Template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Tensorflow Framework

Note :

编辑 conf 目录下的文件进行数据、特征、模型配置

运行 utils/conf.py 查看参数配制情况

运行 input_fn.py 查看输入的数据情况以及自动生成的特征概况

运行 run.py 训练模型

模型预测代码在 do_predict.py

模型serving相关代码在 serving 目录

构建模型各种特征的基本函数在 utils/feature.py

构建模型结构的基本函数在 utils/layers.py

Main Structure

Structure
|
|------ conf 
|    |--- data.yaml         [训练数据信息配置](需要编辑)
|    |--- feature.yaml      [特征自动生成配置](需要编辑)
|    |--- model.yaml        [模型训练参数配置](需要编辑)
|
|------ code
|    |--- process.py        [数据预处理,例如自动生成vocabulary文件]
|    |--- features.py       [自动生成特征的代]
|    |--- input_fn.py       [构建数据输入pipeline]
|    |--- model_fn.py       [构建模型结构,主要改写 model_fn_core 和 get_loss](需要编辑)
|    |--- run.py            [训练并导出模型,需要针对性改写feature_spec](需要编辑)
|    |--- utils
|    |  |-- conf.py         [解析配置文件]
|       |-- data.py         [提供数据处理和数据统计的模块]
|       |-- feature.py      [提供抽取特征的各种函数]
|       |-- layer.py        [提供构建模型所需的各种模型结构]
|       |-- model.py        [提供基于estimator训练和使用模型需要的一些接口]
|       |-- util.py         [提供一些常用函数]
|     
|------ data
|    |--- train             [存放训练数据,支持多个文件]
|    |--- eval              [存放验证数据,支持多个文件]
|    |--- map               [存放扩展特征使用的文件]
|    |--- vocabulary        [存放需要embedding的特征的vocabulary,一般通过process.py自动生成]
|    |--- vector            [需要将本地向量导入模型,可将meta和vec文件放入该目录]
|    |--- weight            [模型训练后,从模型中获取的权重矩阵可以存放在该目录]
|  
|------ model
|    |--- model_check       [模型的checkpoint文件]
|    |--- export            [模型的pb文件]
|
|------ serving
|    |--- README.md         [模型serving相关的简介]
|    |--- serving_cli.sh    [cli工具的使用,用于通常用来检查输出的pb文件]
|    |--- java_client       [模型serving时的java client代码示例]
|
|------ README.md           [项目简介]

More About feature.yaml

按如下方式填写配置文件,便可自动生成特征

col_name:
  type: xxx
  transform: xxx
  parameter: xxx

支持如下方式的特征自动生成

type : continuous
|
|---transform : bucket
|            |--parameter : boundaries
|---transform : original
|            |--parameter :

type : category
|
|---transform :file_one_hot
|            |--parameter : file_path
|---transform :hash_ont_hot
|            |--parameter : hash_size
|---transform : file_embedding
|            |--parameter : file_path
|            |--parameter : embedding_size (-1 means auto)
|---transform : hash_embedding
|            |--parameter : hash_size
|            |--parameter : embedding_size (-1 means auto)
|---transform : local_vec
|            |--parameter : vec_dim
|            |--parameter : meta_path
|            |--parameter : vec_path
|---transform : extend_feature
|            |--parameter : file_path
|            |--parameter : cols_name
|            |--parameter : extend_data_sep

type : sequence
|
|---transform : file_one_hot
|            |--parameter : file_path
|---transform : hash_ont_hot
|            |--parameter : hash_size
|---transform : file_embedding
|            |--parameter : file_path
|            |--parameter : embedding_size (-1 means auto)
|---transform : hash_embedding
|            |--parameter : hash_size
|            |--parameter : embedding_size (-1 means auto)
|---transform : file_multi_hot
|            |--parameter : file_path
|---transform : hash_multi_hot
|            |--parameter : hash_size
|---transform : local_vec
|            |--parameter : vec_dim
|            |--parameter : meta_path
|            |--parameter : vec_path
|---transform : extend_feature
|            |--parameter : file_path
|            |--parameter : cols_name
|            |--parameter : extend_data_sep

以下给出几个例子

col1:
  type: continuous
  transform: original
  parameter:
col2:
  type: continuous
  transform: bucket
  parameter:
    boundaries: [0,5,10]
col4:
  type: category
  transform: file_embedding
  parameter:
    file_path: '../data/vocabulary/vocabulary_col4'
    embedding_size: 4
col7:
  type: category
  transform: local_vec
  parameter:
    meta_path: '../data/vector/meta_sample'
    vec_path: '../data/vector/vec_sample'
col8:
  type: sequence
  transform: file_embedding
  parameter:
    file_path: '../data/vocabulary/vocabulary_col8'
    embedding_size: 4

其中extend_feature模块比较特殊,需要按照如下格式填写

col_name_[extend]:
  type: xxx
  transform: xxx
  parameter:
    file_path: xxx
    cols_name: xxx
    extend_data_sep: xxx

例如当我们写了

col7_[extend]:
  type: category
  transform: extend_feature
  parameter:
    file_path: '../data/map/extend_data_sample'
    cols_name: ['map_id', 'extend_1', 'extend_2']
    extend_data_sep: ' '

那么我们就自动获取了 col7_extend_1 , col7_extend_2 这个两列,并可以对他提取新的特征

col7_extend_1:
  type: category
  transform: file_embedding
  parameter:
    file_path: '../data/vocabulary/vocabulary_extend_1'
    embedding_size: -1
col7_extend_2:
  type: category
  transform: file_embedding
  parameter:
    file_path: '../data/vocabulary/vocabulary_extend_2'
    embedding_size: -1

注 : 配置完成后,可以通过跑 input_fn.py 来查看配置的特征生成后有哪些,并且shape和name如何

About

可配置化,快速实现各种常见模型

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published