博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对论文中模型进行编程实现时的注意要求和总结
阅读量:2051 次
发布时间:2019-04-28

本文共 1583 字,大约阅读时间需要 5 分钟。

看论文时,如果论文中有对自己研究方向有帮助或者具有实际用处的模型时,不免通过编程对其进行实现。如果是一个简单的模型,用个caffe、tensorflow之类的框架跑跑就出来的那就无所谓了,但是如果是一个稍微复杂,或者以后会用来做对比实验之类的模型,要是随随便便用个jupyter或者记事本写了出来连个注释都没有,那么当你要用到的时候就该后悔了。现在我就是遇到了这种情况。。。。所以想整理下编程实现模型的经验和总结,为以后能养成一个比较好的习惯打下基础。

1、注释

写代码时加注释这个说起来简单但是做起来难的习惯就不多说了,做个web项目或者app之类的都要加注释,就不用说那种全是计算、求导和公式的模型了,说不定哪天用上了光理解这个模型的时间就够重新写了。之前看了老师写过的一个聚类算法,没有注释,然后就光理解这个算法就用了一个寒假。

2、封装

封装的目的也很明确了,既然能作为面向对象的三大特性之一,那么封装的好处肯定是从古人到现在都有目共睹的。那么说下在对模型实现过程中对封装的体现:

  • 模型内部的模块化。关于这一点主要就是模型内部的一些功能的封装,一些重复调用的部分用一个函数进行封装。好处不用多说了。
  • 模型的封装。对模型整体进行封装主要还是方便调用和以后的使用。对比两个场景,一个是直接写在了一个py文件中了,从上到下执行,另一个通过一个class进行了封装,在另一个文件中可能会使用到这个模型,直接复制粘贴过去当然可以,但是还得对这粘贴的部分进行修改才能调用,如果通过了一个class封装的话,直接import一下然后一个构造函数调用就可以了,二者对比好处不言而喻。

再多说下对模型进行封装的好处,还是举个例子,自己辛辛苦苦写出了个聚类算法,或者是在论文中进行模型浮现的聚类算法,后面正好自己又打算写一个聚类算法的论文,之前写过的代码既没有封装又没有注释的话,岂不是这些工作又要再花上一些时间了。相反,如果封装的很好的话,直接换上数据进行调用就可以了。

3、实验数据处理

在做实验时,肯定会对数据进行读取啊,数据进行训练集、测试集划分啊,还有就是训练、测试次数的设置之类的。如果一个个进行修改也不是很费力,但是如果对实验数据也做一个类似的封装的话,每次只需在main中调用时修改就可以了,就不需要每次在函数内部或者参数上进行修改了。还是举个例子:有三个模型,三组数据,每组数据的训练和测试集长度、名称、训练次数等信息不一样,如果封装一个类似如下,通过这个class进行调用的话,直接修改参数,然后将这个对象作为参数传递到模型中调用就方便多了。

class Data(object):    def __init__(self, path, name, train_num, train_len, test_len):        self.path = path        self.name = name        self.train_len = train_len        self.test_len = test_len        self.train_num = train_num

4、实验结果记录

在做实验时,好不容易跑出了个结果然后结果全打印在了控制台上,一不小心将控制台的内容清空了就傻眼了。

所以说实验结果最好写在一个日志文件中。也可以通过封装一个类,将每次要打印的信息,如每次迭代的结果、准确率、收益之类的写入这个文件中。文件要以append形式写入。

5、代码编写(追加)

写代码实现模型时,一个最最最重要的问题我竟然忽略了,一个谁都明白的道理——不要写错了。在做模型时,一定要写完一部分就测试一下是否存在什么低级的bug,否则都实现好了或者实验结果都出来了再改代码就炸了。

以后总结出新的想法和得到的教训再追加。

转载地址:http://euklf.baihongyu.com/

你可能感兴趣的文章
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【Python】Python 读取csv的某行或某列数据
查看>>
【Loadrunner】性能测试:通过服务器日志获取性能需求
查看>>
【Python】接口自动化测试-Fidder的使用(未完待续……)
查看>>
【Python】自动化测试框架-共通方法汇总
查看>>
【Python】if相关知识点
查看>>
【Python】xpath中为什么粘贴进去代码后老报错?如何在定位元素的时候准确找到定位切入点?...
查看>>
Loadrunner解决启动浏览器后页面显示空白
查看>>
【Python】唯品会购买商品
查看>>
【JMeter】如何录制创建及得到曲线图
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST07~08-----P5~6
查看>>
solver及其配置
查看>>