sannp.propの書式¶
sannp.propのテンプレートは、 sannp --temp で出力できます。
行頭が#または!の行はコメントとして扱われます。
- restart
- デフォルト:
0
0の場合、最初から学習を実行します。1の場合、ニューラルネットワークの情報を
sannp.data、sannp.data_eまたはsannp.data_qから読み込み、学習を再開します。
- insituTest
- デフォルト:
0
1の場合、学習中の各epochで、テストデータに対するRSMEを計算して出力するin-situテストを行います。0の場合、in-situテストを行いません。
- withCharge
- デフォルト:
0
電荷の計算を行う(1)か行わない(0)かの指定です。
- withHDNNP
- デフォルト:
1
系全体のエネルギーを教師データとするHDNNP法を使う(1)か、各原子に分割したエネルギーを教師データとするSANNP法を使う(0)かの指定です。
- withLJlike
- デフォルト:
0
LJ-like力場とニューラルネットワーク力場を組み合わせたΔ-NNPを使う(1)か使わない(0)かの指定です。ReaxFFを用いた Δ-NNPとは併用できません。
withClassical 1でもwithLJlike 1と同じ設定になります。
- withReaxFF
- デフォルト:
0
ReaxFFとニューラルネットワーク力場を組み合わせたΔ-NNPを使う(1)か使わない(0)かの指定です。ReaxFFを使う場合、パラメータ定義ファイル
ffield.reaxが必要です。LJ-like力場を用いた Δ-NNPとは併用できません。withClassical 2でもwithReaxFF 1と同じ設定になります。
- rcutReaxFF
- デフォルト:
5.0
ReaxFFを用いた Δ-NNPで、ReaxFFのカットオフ半径(Å)を指定します。
- rateReaxFF
- デフォルト:
0.5
ReaxFFを用いた Δ-NNPで、エネルギーと力を計算する際のReaxFFの寄与(混合率)を指定します。
- directSF
- デフォルト:
-1
対称関数の正規化をミニバッチ内で行う(1)か、サンプル全体で行う(0)かの指定です。負の値を指定した場合、Behler対称関数ならサンプル全体、Many-Body対称関数ならミニバッチ内になります。
- regularElem
- デフォルト:
1
教師データ中の元素名の後に文字が続く場合(例:Fe1、Fe2)、学習時に同じ元素として扱う(1)か、別の元素として扱う(0)かの指定です。
- maxForce
- デフォルト:
10.0
教師データに含まれる、力が大きすぎる外れ値を除外するための閾値(eV/Å)です。0以下の値を指定した場合、除外を行いません。
- minEDev
- デフォルト:
0.5
原子のエネルギーの正規化に使う分散の下限値(eV)を指定します。
- maxEDev
- デフォルト:
10
原子のエネルギーの正規化に使う分散の上限値(eV)を指定します。
- minQDev
- デフォルト:
0.1
原子の電荷の正規化に使う分散の下限値(e)を指定します。
- maxQDev
- デフォルト:
10
原子の電荷の正規化に使う分散の上限値(e)を指定します。
- symmFunc
- デフォルト:
chebyshev
対称関数を指定します。behler、chebyshev、many-bodyが指定できます。
- elemWeight
- デフォルト:
1
重み付き対称関数を使う(1)か、使わない(0)かの指定です。Behler対称関数、Chebyshev対称関数で使用可能です。
- tanhCutoff
- デフォルト:
1
カットオフ関数
としてtanhを使った関数を使う(1)か、cosを使った関数を使う(0)かの指定です。
- m2
- デフォルト:
100
Many-Body対称関数のパラメータ M2 です。
- m3
- デフォルト:
10
Many-Body対称関数のパラメータ M3 です。
- rinner
- デフォルト:
0.0
Many-Body対称関数のパラメータ Rinner (Å)です。
- router
- デフォルト:
6.0
Many-Body対称関数のパラメータ Router (Å)です。
- numRadius
- デフォルト:
50
Chebyshev対称関数の動径成分の数を指定します。
- numAngle
- デフォルト:
30
Chebyshev対称関数の角度成分の数を指定します。
- rcutRadius
- デフォルト:
6.0
Chebyshev対称関数の動径成分のカットオフ距離 Rc (Å)を指定します。
- rcutAngle
- デフォルト:
6.0
Chebyshev対称関数の角度成分のカットオフ距離 Rc (Å)を指定します。
- models
- デフォルト:
16
指定した数のニューラルネットワークモデルを作り、同時並行で学習させます。力場として使う際は、各ニューラルネットワークが出力したエネルギー・力の平均値を力場の出力とします。1を指定すると、1つのニューラルネットワークモデルで力場を定義する従来の手法になります。
- layers
- デフォルト:
2
ニューラルネットワークの隠れ層の層数です。
- nodes
- デフォルト:
40
ニューラルネットワークのノード数です。
- activ
- デフォルト:
twtanh
ニューラルネットワークの活性化関数です。asis(使用しない)、sigmoid、tanh、twtanh(twisted tanh)、eLU、GELUが指定できます。
- lbfgs
- デフォルト:
32
学習時の最適化アルゴリズムの指定です。0を指定すると、Adam法を使用します。1以上の値を指定すると、その値を履歴数とするL-BFGS法を使用します。
- lineSearch
- デフォルト:
more-thuente
L-BFGS法で使用する直線探索のアルゴリズムです。more-thuente、armijo、wolfe、strong-wolfeが指定できます。
- lineSteps
- デフォルト:
32
L-BFGS法で使用する直線探索の試行回数の最大値です。
- batchs
- デフォルト:
0
学習時のミニバッチサイズです。0以下の値を指定した場合、ミニバッチは使用せず、フルバッチ(サンプル全体)で学習を行います。
- epochs
- デフォルト:
500
学習時の繰り返し回数(epoch)の上限です。
- epochsStore
- デフォルト:
1000
学習中にニューラルネットワークのデータをファイルに保存する間隔を設定します。0以下の値を設定すると終了時のみ保存します。
- epochsOnlyE
- デフォルト:
250
学習時の繰り返し回数(epoch)がこの数字より小さいうちはエネルギーのみを使って学習を行います。それ以降はエネルギーと原子に働く力の両方を使って学習を行います。
- epochsApproxF
- デフォルト:
500
エネルギーから原子に働く力の誤差を計算する際、繰り返し回数(epoch)がこの数字より小さいうちはDouble Backward法による近似的な微分法を使います。それ以降は厳密に微分を計算します。
- superEpochs
- デフォルト:
0
教師データを複数のサブセットに分割して、各サブセットを使った学習処理を順次実行するSuper Epoch法の設定です。
分割するサブセット数(=Super Epochの数)を指定します。0以下の値を指定した場合、geomsEpochを元に自動的に値が設定されます。
- geomsEpoch
- デフォルト:
500(GPU版
sannp_gpuでは2500)
Super Epochあたりの教師データ数を指定します。0以下の値を指定した場合、または教師データ数よりも値が大きかった場合は、自動的に教師データ数と同じ値に設定されます。
- sqrtLoss
- デフォルト:
0
損失関数のスケール係数を絶対値で設定する(1)か、2乗値で設定する(0)かの指定です。
- renormLoss
- デフォルト:
0
損失関数の正規化を行う(1)か行わない(0)かの指定です。
- approxForce
- デフォルト:
0
エネルギーから原子に働く力の誤差を計算する際、epochsApproxFを使って近似的な微分と厳密な微分を切り替える(0)か、常に近似的な微分法を使う(1)か設定します。
- rmseEnergy
- デフォルト:
0.01
学習が収束したか判定するためのエネルギー残差(RMS)の閾値(eV/atom)です。
- rmseForce
- デフォルト:
0.10
学習が収束したか判定するための力の残差(RMS)の閾値(eV/Å)です。
- rmseCharge
- デフォルト:
0.01
学習が収束したか判定するための電荷の残差(RMS)の閾値(e)です。
- coefEnergy
- デフォルト:
1.00
エネルギーの損失関数のスケール係数(1/eV または 1/eV2)です。
- coefForce
- デフォルト:
1.00
力の損失関数のスケール係数(Å/eV または (Å/eV)2)です。
- coefCharge
- デフォルト:
1.00
電荷の損失関数のスケール係数(1/e または 1/e2)です。
- learnRate
- デフォルト:
1.0e-4
学習率の初期値です。
- learnRateFinal
- デフォルト:
1.0e-4
学習率の下限値です。
- learnRateDecay
- デフォルト:
0.9999
学習率の減衰率です。
- adamBeta1
- デフォルト:
0.9
学習時のハイパーパラメータ(Adam法のβ1)です。
- adamBeta2
- デフォルト:
0.999
学習時のハイパーパラメータ(Adam法のβ2)です。
- classicalTry
- デフォルト:
64
Δ-NNPで使用する古典力場を最適化する際の繰り返し回数の上限です。
- classicalLower
- デフォルト:
-50.0
Δ-NNPで使用する古典力場を最適化する際、ここで指定した値(eV)よりも小さいエネルギーが現れにくくなるように、ペナルティ関数を適用して最適化します。
- gpuThreads
- デフォルト:
256
(GPU版)CUDAのブロック当たりのスレッド数です。上限は1024(CUDAの仕様)です。32(ワープサイズ)の倍数を推奨します。
GPU上で生成するスレッドに関する設定で、CPUのスレッド並列(OpenMP並列)とは関係ありません。
- gpuAtomBlock
- デフォルト:
512
(GPU版)対称関数をGPUで計算するときに、ここで指定した数の原子ごとにまとめて処理を行います。
- endProperty
以降のファイル内容はコメントとして扱われます。