关于实验编程遇到的问题和解答
- 解决error的通用方法
复制关键报错信息,直接用百度等搜索工具搜索,找其他人遇到相同错误的解决方案。一定要找到准确的报错信息搜索才可以!遇到报错不要慌,先去搜索解决,自己摸索解决的问题印象更深,理解更深,解决多了下次遇到相同的、类似的、甚至是不同的错误都能直接排除。
- 必须要掌握的四种库:numpy(pandas)、matplotlib、sklearn、tensorflow(pytorch)
最主要的是学会有哪些常用函数和函数常用的参数及意义,视频教程为主,手把手跟着学敲代码,官方文档为辅,学习常用参数和意义。学习的时候要对着视频用pycharm敲代码,不要用jupyter notebook,使用pycharm敲代码方便,提示丰富。看视频教程的时候建议使用2倍速观看。
【只要认真学习视频教程和参考官方文档,并实践编程掌握了,在编程中只有error没有question】
1.numpy(pandas)用于数据处理。
因为之后的机器学习深度学习框架都是基于numpy和pandas的数据格式的,必须先学习numpy和pandas。掌握了numpy、pandas之后就能按照自己的想法随意处理数据集了。
| numpy官方文档 | 英文https://numpy.org/doc/stable/user/quickstart.html 中文https://www.numpy.org.cn/user/quickstart.html |
| numpy视频教程 | https://www.bilibili.com/video/BV1hx411d7jb |
| numpy文字教程 | http://www.numpy.org.cn/article/basics/python_numpy_tutorial.html https://www.runoob.com/numpy/numpy-tutorial.html |
| pandas官方文档 | 中文https://www.pypandas.cn/docs/getting_started/10min.html 英文https://pandas.pydata.org/docs/getting_started/intro_tutorials/ 02_read_write.html |
| pandas视频教程 | https://www.bilibili.com/video/BV1hx411d7jb |
| pandas文字教程 | https://tutswiki.com/pandas-cookbook/chapter1/ https://www.runoob.com/pandas/pandas-tutorial.html |
2.matplotlib用于画图。
在实验中一般把实验数据保存下来,然后用matplotlib单独画图,论文中也需要单独字体颜色的美观图片,都需要matplotlib画。
| matplotlib官方文档 | 英文https://matplotlib.org/stable/tutorials/index.html 中文http://www.matplotlib.org.cn/tutorials/ |
| matplotlib视频教程 | https://www.bilibili.com/video/BV1hx411d7jb |
| matplotlib文字教程 | https://www.runoob.com/numpy/numpy-matplotlib.html |
3.sklearn用于机器学习和计算评价指标。
做对比实验决策树、随机森林、SVM等方法会用到sklearn,并且计算混淆矩阵,计算离线数据的评价指标也需要用到sklearn。视频教程根据个人能力挑重点观看。
| sklearn官方文档 | 英文https://scikit-learn.org/stable/user_guide.html 中文 https://www.scikitlearn.com.cn/ |
| sklearn视频教程 | 上https://www.bilibili.com/video/BV1Ch411x7xB 中https://www.bilibili.com/video/BV1WL4y1H7rD 下 https://www.bilibili.com/video/BV1Ng411K7H6 编程练习题https://www.bilibili.com/video/BV1QP4y1t76A |
| sklearn文字教程 | https://www.sklearncn.cn/51/ https://www.cntofu.com/book/170/index.html |
4.tensorflow2(Pytorch)用于搭建自定义深度学习模型。
| tensorflow2官方文档 | https://tensorflow.google.cn/tutorials https://tensorflow.google.cn/guide |
| tensorflow2视频教程 | https://www.bilibili.com/video/BV1HV411q7xD |
| tensorflow2文字教程 | https://zhuanlan.zhihu.com/p/59507137 |
| pytorch官方文档 | https://pytorch.org/tutorials/beginner/basics/quickstart_tutorial.html |
| pytorch视频教程 | https://www.bilibili.com/video/BV1J44y1i734/ |
| pytorch文字教程 | https://www.pytorch123.com/SecondSection/what_is_pytorch/ |
一、环境搭建
1.如何安装python以及第三方库?建议使用anaconda的虚拟环境
- 本机直接安装Python环境:
四种方法https://zhuanlan.zhihu.com/p/129651314?ivk_sa=1024320u
【方法一:pip指令在线下载】
【方法二:在https://pypi.org/离线下载whl安装包后,使用pip手动安装pip install xxxx.whl】
- 虚拟环境:anaconda
官方文档:https://docs.anaconda.com/anaconda/user-guide/
文字教程:https://zhuanlan.zhihu.com/p/32925500
https://www.jianshu.com/p/62f155eb6ac5
视频教程:https://www.bilibili.com/video/BV1K7411c7E
2.如何配置某一特定版本的python和第三方库?
重要的是确定版本号,先在anaconda中创建特定python版本的虚拟环境,然后再依次使用conda或者pip安装相应的特定版本第三方库,根据第三方库(pythorch、tensorflow)的版本安装兼容的cuda和cudnn。
深度学习环境配置教程Anaconda+Pycharm+CUDA+CUdnn+PyTorch+Tensorflow: https://www.bilibili.com/video/BV1ov41137Z8
3.如何配置特定版本的GPU运行环境?
先要有一块NVIDIA GTX GPU或者NVIDIA RTX GPU,只有https://developer.nvidia.com/cuda-gpus中列出的显卡型号才被tensorflow和pytorch使用。再查找使用的tensorflow(pytorch)版本相对应兼容的CUDA和cuDNN版本,安装CUDA和cuDNN。
https://blog.csdn.net/qq_27825451/article/details/89082978
https://tensorflow.google.cn/install/source_windows#gpu

二、数据预处理
1.如何获取数据集?
只要知道数据集的名称,就用数据集名称在百度或者谷歌搜索引擎上搜索,下载就是的了。数据集名称一般在论文中会说明。
2.如何对数据集中的数据(文本集合,图片,特征数据集)进行处理,转换为模型可用的输入格式(python,opencv,numpy)?
第一步要知道模型的输入格式是什么,是向量还是矩阵?是一个向量还是多个向量?是一个矩阵还是多个矩阵?一般我们使用的数据集都是本地数据集,第二步就是根据模型输入格式将数据集中的数据一一转换后保存至本地即可。
如果要输入向量,一般用numpy进行处理,如果要矩阵一般用opencv进行处理。认真学习numpy和opencv能解决大部分数据处理问题。
3.如何划分数据集,如何将数据导入模型,如何根据自己的数据集分类数量,调整模型的输入输出?
如何划分数据集:使用python基本语法切片功能切分列表或者用numpy的切分功能切分矩阵array数据。sklearn中也有切分数据集的函数。
如何将数据导入模型,学习sklearn、tensorflow或者pytorch如何创建模型如何训练模型,就知道如何导入模型了。情况太多,一般是把数据变量填入模型训练函数的参数中即可。最重要的是会使用训练模型的函数。
如何根据数据集模型分类数量调整模型输入输出:在自定义模型时,将第一层和最后一层的神经元个数和输入shape设为变量,在构建模型之前给变量赋值(赋上输入数据的shape形状和分类个数),这样就能自动创建出特定分类的模型。最重要的是学会如何自定义模型。
三、自定义模型搭建
1.如何自定义自己设计的tensorflow模型?
tensorflow2.0自定义模型的三种方法总结:Sequential model、Functional model、Subclassing model 模型子类化。建议使用第三种方法,继承Model类,重写前向传播函数call函数。
https://blog.csdn.net/weixin_45147782/article/details/108588178
2.如何自定义自己设计的pytorch模型?
继承nn.Module类,重载forward方法
https://blog.csdn.net/qq_27825451/article/details/90550890
https://blog.csdn.net/olizxq/article/details/118057627
https://www.cnblogs.com/leimu/p/13230723.html
3.如何自定义训练速度、损失函数、评价指标?
查询官方文档,其中一定有自定义learning_rate、loss_function、metrics的函数和类。如果是函数就改写参数,如果是类就继承,重载类函数。
四、评价指标计算
1.tensorflow、pytorch、sklearn中的评价指标计算函数?
在视频教程和官方文档中有评价指标计算函数,了解函数中的重要参数的意义。或者继承超类自定义评价指标函数。
五、数据可视化
1.在线数据可视化方法?
利用tensorflow和pytorch中自带的运行时数据可视化函数方法。学习视频教程和参考官方文档。
2.数据保存后如何可视化?(matplotlib)
一般实验我们要把实验结果(每一epoch的loss和评价指标和最后的预测向量或者是预测矩阵)保存至本地文件,不要仅仅只是输出到控制台。输出到控制台是一次性的,只有把实验结果保存至本地文件才是永久性保存,就算程序结束运行清除控制台,我们也能根据本地文件画出各式各样的图表。一般使用matplotlib制图,学习matplotlib问题即可解决。