APP下载

基于Keras框架的普朗克常数计算方法研究

2023-12-25高海林李阳费宛莹席文静李雪

电脑知识与技术 2023年31期
关键词:光电效应深度学习

高海林 李阳 费宛莹 席文静 李雪

摘要:光电效应实验是物理学习过程中的一个重要实验,通过光电效应实验可以对普朗克常数进行计算。当数据量较少时,计算结果和真实值之间往往存在较大误差。随着机器学习和人工智能的快速发展,物理数值计算也可以使用不同的神经网络框架进行解决。文章介绍了光电效应方程对普朗克常数计算的理论依据,采用深度学习的Keras框架对110个数据样本进行了不同批次训练,研究了损失函数对普朗克常数计算精度的影响。基于深度学习Keras框架的普朗克常数计算方法研究为物理常数的计算提供了新的思路。

关键词:光电效应;普朗克常数;深度学习;Keras框架

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2023)31-0022-03

开放科学(资源服务)标识码(OSID) :

0 引言

普朗克常数是一个物理常数[1],记为[h]。1900年,马克斯·普朗克在研究物体热辐射的规律时,提出了一个全新的黑体辐射公式,即:

[Mλ(T)=2πhc2λ-51exp(hcλkT)-1]  (1)

公式(1) 也被称为普朗克公式。其中,[c]和[λ]分别表示光速和波长,[k]和[T]分别表示玻尔兹曼常数和绝对温度,[h]为普朗克常数。普朗克在对上述公式寻找理论解释时,提出了著名的量子假设。

1 普朗克常数计算实验原理

某些金属在受到适当频率的光照射时,金属中的自由电子会获得能量而逸出金属表面,这种现象被称为光电效应[2]。光电效应的实验原理装置如图1所示。

图1中,[A]为光电管阳极,[K]为光电管阴极。当适当频率为[υ]的单色光入射到光电管阴极上时,电子从阴极逸出后向阳极运动,形成光电流。

当[UAK=UA-UK]为正值时,[UAK]越大,光电流[IAK]越大,但当电压[UAK]达到某一数值时,光电流达到饱和。若在阳极和阴极间施加反向电压,光电流则逐渐减小,直到[UAK]达到某一负值[US]时,光电流变为零,此时[US]称为遏止电位或截止电压。从场的角度可以对此进行解释,这是因为从阴极逸出的具有最大初动能的电子不能穿过反向电场到达阳极,即

[eUs=12mv2]         (2)

爱因斯坦在对光电效应寻求理论解释时,提出了著名的光电效应方程,即:

[hυ=12mv2+A]         (3)

其中,[12mv2]為电子最大初动能,[A]为逸出功。

将(2) 式代入(3) 式得:

[hυ=e|Us|+A]        (4)

当利用不同频率的单色光照射光电管阴极时,有:

[hυ1=e|Us1|+A]        (5)

[hυ2=e|Us2|+A]        (6)

……

其中,[v1]和[v2]分别表示两种不用频率的单色光。

联立上述任意两个方程,得:

[h=e(Usi-Usj)υi-υj]        (7)

其中,[Usi]是入射光频率为[υi]时,对应的截止电压。

由公式(7) 可知,爱因斯坦光电效应方程提供了一种测量普朗克常数的方法[3-5]。如果从实验数据所得的[|Us|-υ]关系曲线如图2所示,那么直线斜率的物理含义应该是:

[k=he]              (8)

其中,[e]为电子电荷,数值为[1.602 176 634×10-19C]。

求出直线斜率[k],然后乘以元电荷[e]即为普朗克常数[h]。

在大学实验中,光电效应实验是一个很重要的实验。通过该实验,可以加深学生对于光电效应方程的理解,提高动手能力,同时锻炼数据分析与处理的能力。

以南京医科大学康达学院为例,学生在利用长春市长城教学仪器有限公司生产的GD-IIIA型普朗克常数测定仪进行光电实验时,仪器可以提供的滤色片仅仅有5种,对应的波长分别为365.0 nm、404.7 nm、436.8 nm、546.1 nm和577.0 nm,这也就相当于图2 [|Us|-υ]关系图中仅仅有5个点。计算拟合直线斜率的方法通常有2种,一种是先绘制标准坐标轴,然后在二维坐标系中描绘出数据点,再绘出拟合的直线(离散的点尽量均匀分布在直线两侧),最后计算直线斜率。另一种方法是每相邻两数据之间计算斜率,最后再求出斜率的平均值。虽然可以通过多次测量减少误差,但实际计算结果和普朗克常数的真实值之间往往存在较大的误差。

2 基于Keras框架的普朗克常数计算

2.1 Keras框架简介

Keras是一个由Python语言编写的开源人工神经网络库,它通常以TensorFlow、CNTK或者Theano作为后端运行,可以对深度学习的模型进行设计、调试、评估和可视化等[6-14]。

Keras在代码结构上由面向对象方法编写,完全模块化并具有可扩展性。Keras支持现代人工智能领域的主流算法,包括前馈结构和递归结构的神经网络,也可以通过封装参与构建统计学习模型。

2.2 软件简介

利用Keras框架进行普朗克常数计算需要用到的软件主要有Anaconda Navigator和Pycharm。

Anaconda是一个安装、管理Python相关包的软件,还自带Python、Jupyter Notebook、Spyder等。在计算中,Anaconda Navigator主要用来管理环境以及安装Python、Pycharm软件及keras、numpy、matplotlib等第三方库。

Pycharm软件主要分为社区版和专业版,是一款由JetBrains公司开发的Python集成开发环境(IDE) 。Pycharm软件的功能十分强大,并且多平台支持(Windows/MacOS/Linux) 。Pycharm软件还可用于支持Django框架下的专业Web开发,具有很多高级功能。目前官方提供社区开源版本。本次用来计算普朗克常数的Pycharm软件版本为免费的社区版。

2.3 计算过程

2.3.1 模型构建

利用Keras框架进行普朗克常数计算的过程主要有准备数据集、构建模型、编译模型、训练模型、评估模型、保存模型、调用模型等步骤。

数据集采用的是某班级做光电效应物理实验的实验数据,实验仪器为长春市长城教学仪器有限公司生产的GD-IIIA型普朗克常数测定仪。实际参与训练的数据集里有110个样本。该样本记录在Excel数据表格中,第一列数值为频率值,第二列数值为对应的反向截止电压值。程序里通过调用pandas库读取Excel表格,并将数据转换为一维张量。

模型构建是影响普朗克常数计算正确与否的关键因素。Keras框架通常有2种类型的模型,分别为函数式模型(Model) 和序贯模型(Sequential) 。函数式模型(Model) 的特点是多输入多输出,层与层之间是任意连接的。这种模型的典型特点是编译速度慢。而序贯模型(Sequential) 的特点是单输入单输出,即层与层之间只是相邻关系,没有跨层连接,输入和输出之间是一条路通到底。这种模型编译速度快,操作也比较简单。本次计算普朗克常数采用的是序贯模型。反向截止电压和频率可以认为是线性回归的关系,因此采用序贯模型建模时仅仅需要在模型中添加一个全连接层就可以了。对于这个全连接层而言,输入张量的维度为1维,输出张量的维度也是1维。调用model.summary()方法可以对构建的序贯模型参数进行观测。模型具体参数如3所示。

由图3可知,建立序贯模型参数的数目为两个,分别表示权重[w]和偏置[b]。调用model.compile()方法可以實现对Keras模型的编译。本次计算中,编译设置的优化器算法为sgd(随机梯度算法),损失函数为mse(均方误差),学习率设置成0.01。训练模型采用的方法是model.fit(),其中batch_size为单次传递给程序用以训练的数据(样本)个数,也被称为单次训练的批次,设置为32。epochs为迭代周期,也称为训练的轮回数。训练完模型后,获得的权重值[w]即为[|Us|-υ]直线的斜率,之后再乘以元电子[e]就可以计算出普朗克常数。评估模型采用的方法是model.evaluate()。

2.3.2 不同批次训练

下面对使用Keras框架搭建的模型进行不同轮次的训练,训练轮次分别为1 000、3 000、5 000、7 000、9 000和11 000。训练完模型后,读取模型权重值,并计算出普朗克常量。为了证明模型计算的准确性,需要在每次训练完模型后计算出普朗克常量的相对误差。对于普朗克常量,现在的公认值为[6.626 070 15×10-34J·s](自第26届国际计量大会(CGPM)表决通过为精确数)。相对误差采用的计算公式为:

[E=|X--X公认|X公认×100%]    (9)

相对误差仅仅是用于展示出数值计算的准确性,需要人工读取并记录数值,模型并不对误差进行学习。在数值计算中,为保证精度,计算出的普朗克常量取6位有效数字,训练数据后计算的相对误差取3位有效数字。训练轮次和计算出的普朗克常量数值以及相对误差E的对应关系如表1所示。

由表1可知,训练次数为1 000时,计算出的相对误差数值最大。训练次数超过1 000时,相对误差值均小于1%,可以计算出普朗克常数的大致范围。训练次数为3 000时,此时计算出的普朗克常量数值为[6.640 07×10-34J·s],较接近公认值。训练次数越多并一定能提高准确率。训练次数为9 000时,计算出的相对误差数值大于训练7 000时的计算值。训练次数为3 000时,原始数据和拟合的回归曲线如图4所示,损失率的变化情况如图5所示。

2.3.3 不同损失函数的训练

在机器学习中,损失函数通常被用于模型的参数估计,即通过最小化损失函数进行求解和评估模型。

在Keras框架下,反向截止电压和频率的关系为线性回归问题。为了研究不同损失函数对普朗克常数计算精度的计算影响,下面对搭建的序贯模型进行不同损失函数的测试。测试的损失函数分别为mean_absolute_error(平均绝对误差)、mean_squared_logarithmic_error(均方对数误差)、mean_absolute_percentage_error(百分比平均绝对误差)和logcosh(对数双曲余弦函数)。训练轮次统一设置成3 000次,学习率统一设置成0.01。

由表2可知,相比较其他损失函数,在mse(均方误差)损失函数下,计算出的相对误差值较低,数值为0.212%。损失方法采用均方对数误差计算出的普朗克常数的相对误差值最大,数值为403%。

2.3.4 保存模型

在确定损失函数和训练次数的前提下,可以调用model.save()函数保存训练好的模型,以便于后续调用模型评估新的测量数据的可信度。

3 结论

对于物理线性回归的问题,可以使用深度学习进行尝试解决。本文采用深度学习的Keras框架,对普朗克常量进行了计算,本质上是基于物理实验对物理常数的检验与计算。在样本量为110,优化器算法为sgd(随机梯度算法),损失函数为mse(均方误差),学习率为0.01时,计算出的普朗克常量数值接近于真实值。基于深度学习Keras框架的普朗克常数计算方法研究为物理常数的计算提供了新的思路,具有新的意义。

参考文献:

[1] 于春波.铁矿石物相分析检测方法的研究与应用[J].中国检验检测,2018,26(2):18-22,51.

[2] 郎集会,范雯琦.基于光电效应的普朗克常数的测定与分析[J].吉林师范大学学报(自然科学版),2015,36(1):104-106.

[3] 罗兵,陈妍,徐中辉.单层2H-MoTe2光电效应的理论研究[J].人工晶体学报,2021,50(3):504-508.

[4] 张艳,杨庆余.爱因斯坦与普朗克——纪念光电效应获奖100周年[J].大学物理,2022,41(5):35-40.

[5] 杨莹,张文攀,张计才.基于自制暗箱测量光电效应中光强与光电流的关系[J].大学物理,2022,41(2):63-66.

[6] 苏金树,张博锋,徐昕.基于机器学习的文本分类技术研究进展[J].软件学报,2006,17(9):1848-1859.

[7] 周飞燕,金林鹏,董军.卷积神经网络研究综述[J].计算机学报,2017,40(6):1229-1251.

[8] 孙艳丰,齐光磊,胡永利,等.基于改进Fisher准则的深度卷积神经网络识别算法[J].北京工业大学学报,2015,41(6):835-841.

[9] ABADI M,BARHAM P,CHEN J M,et al.TensorFlow:a system for large-scale machine learning[EB/OL].[2022-06-20].2016:arXiv:1605.08695.https://arxiv.org/abs/1605.08695.pdf.

[10] ABADI M.TensorFlow:learning functions at scale[C]//Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming.New York,NY,USA:ACM,2016.

[11] 厲智,孙玉宝,王枫,等.基于深度卷积神经网络的服装图像分类检索算法[J].计算机工程,2016,42(11):309-315.

[12] 曹大有,胥帅.基于TensorFlow预训练模型快速、精准的图像分类器[J].汉江师范学院学报,2017,37(3):27-32.

[13] 彭博,杜尚耕,周云帆,等.以卷积神经网络数据采集方法拓宽真空教学实验[J].物理实验,2023,43(3):13-21.

[14] 张敏,许廷发.基于Gabor小波纹理特征的目标识别新方法[J].物理实验,2004,24(4):12-15.

【通联编辑:唐一东】

猜你喜欢

光电效应深度学习
光电效应中的“三图”问题求解策略
掺杂半导体硅材料电阻率测量的光电效应和热效应
有体验的学习才是有意义的学习
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
高中物理光电效应复习的重点问题探讨
光电效应测普朗克常数新数据处理方法
对光电效应的几点认识
全面准确理解光电效应的规律