HuangAnqi
理论相关
cp2k
cp2k参数
CP2K输入文件模板
Matlab批量计算CP2K的差分电荷的代码
全波电磁仿真
VESTA:制作差分电荷&导出图片
Oringin制作气泡能带图+DOS图
VASP
vasp+机器学习计算AlN的势函数
vsap机器学习
vasp算微波介电常数
VASP计算参数
vaspkit功能
VASP算bader电荷
计算带格林内森参数投影的高温声子谱
脚本合集
PWmat
用pwmat计算缺陷形成能
Hefei-NAMD
Quantum ESPRESSO
qe算声子谱
CALYPSO结构搜索
Oringin
Yambo
QE+yambo算光吸收虚部
Yambo 光吸收计算后处理
Yambo报错和解决办法
知识点
代码
佛祖保佑
心跳(html)
洛伦兹吸引子
用pandas读取excel 画dos图
用Matplotlib画折线图
蒙特卡洛方法求Π
TensorFlow 代码
罗盘时钟
MATLAB代码
批量重命名图片代码
用Pr将序列帧图片转成视频
蒙特卡洛方法模拟二维平面上的原子沉积和扩散
PyTorch
OVITO
Latex安装与使用
wannier+VASP拟合能带
VASP算有效质量
liuyaoze.com-文档系统
-
+
首页
vasp+机器学习计算AlN的势函数
## **deepmd安装**(在服务器的conda中安装) 参考网址:https://github.com/deepmodeling/deepmd-kit/blob/master/doc/install/easy-install.md  只安装CPU版本,此处只用了deepkit,创建了一个名为deepmd的新环境 安装前可能会提示更新conda,创建环境后则会提示初始化conda 这个环境用`conda activate deepmd`激活,用`conda deactivate`关闭 ## 1.准备数据集 基于神经网络的机器学习,需要准备训练集和测试集数据,可以用不同温度或者不同初始构型的动力学数据。 1.vasp跑AIMD,得到OUTCAR 2.激活deepmd环境,安装dpdata胞:`pip install dpdata` 3.准备转换数据的脚本change.py: ```python import dpdata dsys = dpdata.LabeledSystem('OUTCAR') dsys.to('deepmd/npy','deepmd_data',set_size = dsys.get_nframes()) ``` 运行`python change.py` 得到 deepmd_data文件夹即为数据集。 跑了若干个AIMD则重复以上步骤得到多个deepmd_data文件夹 ## 2.势函数训练 [知乎链接:分子动力学中势函数和力场的区别](https://zhuanlan.zhihu.com/p/520462197 "分子动力学中势函数和力场的区别") 1.准备文件:Data(包括几次MD后,用不同OUTCAR转成的deepmd_data文件,重命名后复制进来) se_e2_a(输入参数文件input.json,提交脚本文件,dp.pbs,CPU的) 下载链接:[dp.pbs](http://pan.liuyaoze.com/s/V3iJ "dp.pbs") [input.json](http://pan.liuyaoze.com/s/XDU4 "input.json") 2.修改输入文件:input.josn文件,要修改训练集和测试级的路径;激活deepmd环境后提交作业(不激活也能提交) ## 3.势函数验证 1.冻结deepmd的势函数: 主要识别ckpt文件,在计算完后的se_e2_a目录下:运行: `dp freeze -o graph.pb`(graph自定义名字) 2.test模型:`dp test -m graph.pb -s /path/to/system -n 2000 -d out` out:代表将能量和力输出名字;2000代表2000帧,帧数越多下方作图的范围越大,大约有帧数*100个点;一般验证的时候,输出全部训练集,路径选择验证的数据集的文件夹的路径。 会反馈力和能量的根均方误差RMSE  3.画图: 执行`python 1rms.py`;将lcurve.out中rmse(偏差)画出(每一步的偏差) ```python import numpy as np import matplotlib.pyplot as plt data = np.genfromtxt("lcurve.out", names=True) for name in data.dtype.names[1:-1]: plt.plot(data['step'], data[name], label=name) plt.legend() plt.xlabel('Step') plt.ylabel('Loss') plt.xscale('symlog') plt.yscale('log') plt.grid() plt.show() ```  再根据out.e.out和out.f.out中的实际(fx,fy,fz,e)数据和预测数据作图 运行plot4.py可以直接作图查看,`python ploy4.py`: ```python import numpy as np import matplotlib.pyplot as plt data_e = np.loadtxt('out.e.out') data_f = np.loadtxt('out.f.out') print(np.max(data_e[:,0])) e_min = np.min(data_e[:,0])-10 e_max = np.max(data_e[:,0])+10 rems_e = float(np.sqrt(np.sum((data_e[:,1]-data_e[:,0])**2)/len(data_e[:,0]))) rems_fx = float(np.sqrt(np.sum((data_f[:,3]-data_f[:,0])**2)/len(data_f[:,0]))) rems_fy = float(np.sqrt(np.sum((data_f[:,4]-data_f[:,1])**2)/len(data_f[:,0]))) rems_fz = float(np.sqrt(np.sum((data_f[:,5]-data_f[:,2])**2)/len(data_f[:,0]))) x_e = [float(i) for i in np.arange(e_min,e_max,0.1)] y_e = [float(i) for i in np.arange(e_min,e_max,0.1)] plt.figure plt.subplot(2,2,1) plt.scatter(x_e,y_e,marker = '.',color = 'k',linewidths = 1,label = 'rems = {}'.format(rems_e)) plt.scatter(data_e[:,0],data_e[:,1],marker = ',',color = 'r',label = 'Energy',linewidths = 0.5) # plt.hold() plt.legend() plt.xlabel('data_e') plt.ylabel('pred_e') plt.xlim([np.min(data_e[:,0])-10,np.max(data_e[:,1])+10]) plt.ylim([np.min(data_e[:,0])-10,np.max(data_e[:,1])+10]) plt.subplot(2,2,2) fx_min = np.min(data_f[:,0])-5 fx_max = np.max(data_f[:,0])+5 x_e = [float(i) for i in np.arange(fx_min,fx_max,0.1)] y_e = [float(i) for i in np.arange(fx_min,fx_max,0.1)] plt.scatter(x_e,y_e,marker = '.',color = 'k',linewidths = 1,label = 'rems = {}'.format(rems_fx)) plt.scatter(data_f[:,0],data_f[:,3],marker = ',',color = 'r',label = 'fx',linewidths = 0.5) plt.legend() plt.xlabel('data_fx') plt.ylabel('pred_fx') plt.xlim([np.min(data_f[:,0])-4,np.max(data_f[:,0])+4]) plt.ylim([np.min(data_f[:,0])-4,np.max(data_f[:,0])+4]) plt.subplot(2,2,3) fy_min = np.min(data_f[:,1])-5 fy_max = np.max(data_f[:,1])+5 x_e = [float(i) for i in np.arange(fy_min,fy_max,0.1)] y_e = [float(i) for i in np.arange(fy_min,fy_max,0.1)] plt.scatter(x_e,y_e,marker = '.',color = 'k',linewidths = 1,label = 'rems = {}'.format(rems_fy)) plt.scatter(data_f[:,1],data_f[:,4],marker = ',',color = 'r',label = 'fy',linewidths = 0.5) plt.legend() plt.xlabel('data_fy') plt.ylabel('pred_fy') plt.xlim([np.min(data_f[:,1])-4,np.max(data_f[:,1])+4]) plt.ylim([np.min(data_f[:,1])-4,np.max(data_f[:,1])+4]) plt.subplot(2,2,4) fz_min = np.min(data_f[:,2])-5 fz_max = np.max(data_f[:,2])+5 x_e = [float(i) for i in np.arange(fz_min,fz_max,0.1)] y_e = [float(i) for i in np.arange(fz_min,fz_max,0.1)] plt.scatter(x_e,y_e,marker = '.',color = 'k',linewidths = 1,label = 'rems = {}'.format(rems_fz)) plt.scatter(data_f[:,2],data_f[:,5],marker = ',',color = 'r',label = 'fz',linewidths = 0.5) plt.legend() plt.xlabel('data_fz') plt.ylabel('pred_fz') plt.xlim([np.min(data_f[:,2])-4,np.max(data_f[:,2])+4]) plt.ylim([np.min(data_f[:,2])-4,np.max(data_f[:,2])+4]) plt.show() ```  导出数据到Origin重新作图 
huanganqi
2023年1月7日 15:19
90
0 条评论
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
【温馨提示:本站文档可配置可见范围,如登录后可见、对特定群组可见等,看不到就是没权限】
注册码获取邮箱
work@liuyaoze.com
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期