关于如何学习别人训练好的模型

最近因为工作需要在学习神经网络(本人工作10年了,主要做服务器相关的业务),现在是和其他AI部门合作相关能力,本人自己也对这块感兴趣,我的疑问是: 别人的模型对自己学习是否有借鉴意义 ———我理解应该是的,可以看别人的模型参数设置,甚至可以直接拿来设置给自己的数据训练用对吧。?这块具体该如何操作呢,感觉有好几个可视化的方法,到具体怎么操作,我就不太理解了,另外,该如何评估对方的模型是否具备优化空间。?

把别人训练好的网络模型参数拿过来作为自己的初始化参数,可以更快,更好的训练网络模型,这个叫做微调,就是在人家的基础上用自己的数据再跑几遍就好了;

并不涉及到可视化,可视化指的是看这个模型的结构什么的,比如用了多少个卷积层,池化层什么的;

至于你说的优化就是调参了,修改一下网络结构,参数,学习率什么的,效果怎么样和数据集,训练过程,你的参数什么的都有关系,还可能涉及到欠拟合,过拟合什么的

正对不同模型结构和数据集,可以加载一些机构开源的预训练模型,即加载预训练权重,例如人脸识别,眼睛、鼻子、嘴巴的权重经过别人超大数据集训练后会确定出不同的权重,就可以用到自己的人脸识别数据集训练中。

模型结果调优无非增加、优化数据集、修改模型结构、添加dropout层、norm层、动态修改学习率、根据loss和acc变化趋势调整卷积核数量、batchsize等,根据实际需要更换adam、sgd等优化函数。。。。

具体可以私信

   

   mxnet的可视化代码:

     sym, arg_params, aux_params = mx.model.load_checkpoint(prefix, epoch)
    mx.viz.plot_network(sym).view()

tesnsorflow的可视化代码:

方法1:

from keras.utils.vis_utils import plot_model

plot_model(model,to_file='model1.png',show_shapes=True,show_layer_names=True,rankdir='TB')

方法2:

使用tensorboard

1、先用tf.summary.FileWriter生成tensorboard 文件
with tf.Session(graph=tf.Graph()) as sess:
    sess.run(tf.global_variables_initializer())
    tf.saved_model.loader.load(sess, ["serve"], "./data/model/merge/")
    writer = tf.summary.FileWriter('./path', sess.graph)
2.执行 tensorboard --logdir=path
 

其它的pytorch等肯定也有对应的可视化方法。

       如果想学习深度学习可以先多看一些论文,学习cnn的话,经典CNN网络(Lenet、Alexnet、GooleNet、VGG、ResNet、DenseNet)的论文肯定是要看的。

      论文看多了,底下就是实践了,到时我相信你就可以看懂别人的模型了,而且可以把自己想法加进去了。