Vulcan(匠神)项目是基于tensorflow的深度学习复用框架,旨在封装深度模型搭建过程中的复用部分(pre-processing、evaluate和validate等),提高搭建模型的效率,更聚焦与模型本身。
Vulcan使用配置(.yml)控制训练、预测流程,封装训练、预测参数,复用只需更改配置,简单快捷。
需要安装到的库
tqdm
pyyaml
numpy
pandas
tensorflow
在多个设备上运行本项目,多个设备上的数据集路径可能不同时,请配置 config/glob/config.py 中的DATASET_ROOT,运行项目时在train配置文件中的reader.dataset使用最后一个文件夹名即可。
如果不需多设备频繁切换,则可以忽略配置本项,在train配置文件中的reader.dataset使用绝对路径即可。
# 本地数据集路径
DATASET_ROOT = get_dataset_path([
'D:\\dl_data\\sample',
'F:\\data_deeplearning\\sample_data'
])
构建一个单层dnn作为样例
一般放在定义的net结构放在 model/net 路径下,定义的结构如下:
def net(self):
with tf.name_scope('fc_1'):
layer1 = fc_layer(self.xs, 10, activation_func=tf.nn.softmax) # 隐藏层
with tf.name_scope('fc_2'):
self.y_pred = fc_layer(layer1, 10, activation_func=tf.nn.softmax) # 隐藏层
注意:形参必须写self,输入写self.xs即可,最终的输出一定要赋给self.y_pred,输入的shape和dtype暂不关注,后续会在配置文件中配置。
配置文件的含义和限制还在项目中查看 config/core/train/templet.yml和readme文档。
#--- dataset.reader模块配置----
reader:
dataset: 'mnist'
module: 'dataset.reader.mnist_reader'
#--- model.net配置-----
net:
module: 'model.net.dnn.single_layer.single_layer'
#--- model初始化配置-----
xs_shape: [784]
xs_dtype: 'float'
ys_shape: [10]
ys_dtype: 'float'
#--- model train配置-----
epoch: 2
batch_size: 60
# 保存配置
save:
is_save: false
# 损失函数
optimizer:
name: sgd
#--- common配置-----
module: 'model.net.dnn.single_layer.single_layer'
xs_shape: [784] # xs shape
#--- predict配置-----
load_model_dir: "data/model/dnn/single_layer/10151326/model"
predict_mod: 'model.predict.default_predict'
将train的配置文件传给train(),一键即可训练。
from base.main import train
if __name__ == '__main__':
train('config/core/train/single_layer.yml')
将predict的配置文件传给predict(),一键即可训练。
from base.main import predict
if __name__ == '__main__':
# 一行预测
y_pred = predict('config/core/predict/single_layer.yml', x)
# 打印结果
print('\033[35my:{}, y_pred:{}'.format(np.argmax(y, axis=1), np.argmax(y_pred, axis=1)))
项目日志如下
会自动在浏览器弹出tensorboard,截图如下
项目融合了embedding(词嵌入)、pre_process(预处理)、dataset(tf.data.Dataset)等模块。
其中各个模块均抽取出可自定义的部分,可以通过配置直接选择已定义好的,或者自行写代码定义,在配置中配置即可。详细文档请移步本项目Wiki。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。