当前位置: 首页 > 后端技术 > Python

DKTProgramLearning

时间:2023-03-26 18:38:44 Python

在DeepKnowledgeTracking(DKT)方面,看了很多论文,对其中的一些模型有了简单的了解。于是在此基础上,调试研究了一个已有的DKT程序。本文主要是学习和总结训练模型的过程。环境调整在调试程序时,遇到的第一个问题就是环境不能满足程序的运行。虽然配置环境不难,但是很容易到处出问题。python版本的选择首先是python版本的问题。在下载程序之前,我的电脑上有一个python版本。但是根据程序需要的版本和我本地机器上的不一样,又不想删除原来的python版本,所以这就需要python版本切换的设计。这里使用的开发工具是pycharm。下载对应版本的python后,通过设置选择对应的版本:使用这个工具的好处是我不用改环境变量,直接切换我需要的版本即可。同时不会影响其他程序使用的版本问题。tensorflowtensorflow-cpu和tensorflow-gpu的选择。一般处理小数据量时,两种选择差别不大,但在进行大数据量计算时,cpu版本的计算时间会明显增加。基于编程数据量比较大,这里我们选择使用gpu版本。安装tensorflow-gpu直接使用python包管理安装工具pip安装。pipinstalltensorflow-gpu==1.10.0注意:如果安装过程中出现pip版本问题,将pip更新到最新版本即可。因为上面CUDA选择了tensorflow-gpu==1.10.0,所以对CUDA版本有相应的要求,和我之前的版本有冲突。tensorflow:ImportError:Couldnotfind'cudart64_90.dll'accordingtotheerrorreport提示一下,导入tensorflow需要CUDA9的版本。从官网下载CUDA9后,在配置环境变量时,一定要将CUDA_PATH设置为9版本的路径。CUDNN安装CUDA后,仍然会出现错误:ImportError:Couldnotfind'cudnn64_7.dll'错误信息提示导入需要cudnn7的支持。在官网找到对应CUDA9版本的cudnn,然后下载解压,将对应的文件放在安装的cuda文件夹下:bin\cudnn64_7.dll放到\bin目录下。将include\cudnn.h放在\include目录下。将lib\x64\cudnn.lib放在\lib\x64目录下。Numpy继续报错:ValueError:numpy.ufuncsizechanged,mayindicatebinaryincompatibility。Expected216fromCheader,got192fromPyObject这个错误的主要原因是numpy的版本不对,需要更新numpy的版本到1.16.0。pipinstall-Unumpy==1.16.0updatenumpy,直接用pip更新。更新pipshownumpy后,查看numpy的版本,成功更新到1.16.0:InsufficientvideomemoryResourceExhaustedError:OOMwhenallocatingtensorwithshape[512]andtypefloaton/job:localhost这个错误的原因是网络tensor太大,训练时参数太多,导致显存不足,资源耗尽。因为根据训练要求,训练参数是不能修改的,所以求解的时候要把batch_size改小一点。在tensorflow中,batch_size是每个trainingbatch的大小,主要影响完成每个epoch(全数据集)所需的时间和每次迭代(iteration)之间梯度的平滑度。一般来说,在合理范围内适当增加batch_size可以提高内存利用率,提高大矩阵乘法的并行效率。这减少了完成每个时期的时间。但同时增加batch_size也可能导致内存容量不足,这就是导致我们上面问题的原因。解决方法:1、减小batch_size:程序开始时设置batch_size的大小为16,减半后问题无法解决。继续减少它。最后,将其设置为4.2。关闭电脑中正在运行的其他无关程序:其他正在运行的程序也会在一定程度上占用内存,所以关闭这些程序也可以增加一些可用内存。tensorflow.saver在训练周期内定时调用saver.save()方法,将包含当前模型所有可训练变量的checkpoint文件写入该文件夹。saver.save(sess,FLAGS.train_dir,global_step=step)其中sess是tensorflow中的会话控制(session);FLAGS.train_dir是trainingcheckpoint的存放位置;global_step是指训练步骤。每次训练会出现下面三个文件,第一次训练会出现checkpoint文件,每次都会在这个文件中创建一个checkpoint。注意:save方法中的路径不能自动创建,所以保存前必须先创建对应的文件夹。相关参考:https://blog.csdn.net/u011311291/article/details/81393933https://blog.csdn.net/zhaotun123/article/details/99680151https://blog.csdn.net/qq_37099552/article/details/105023680https://stackoverflow.com/questions/60323366/valueerror-numpy-ufunc-size-changed-may-indicate-binary-incompatibility-expechttps://blog.csdn.net/winycg/article/details/78572438https://blog.csdn.net/hl1hl/article/details/85638276