新增训练过程生成曲线功能
This commit is contained in:
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -270,3 +270,9 @@ Epoch 260 | Train Loss: 0.0623 | Test Loss: 0.1268 | Loss Factor: 0.49:1
|
||||
Epoch 270 | Train Loss: 0.0623 | Test Loss: 0.1269 | Loss Factor: 0.49:1
|
||||
Epoch 280 | Train Loss: 0.0622 | Test Loss: 0.1271 | Loss Factor: 0.49:1
|
||||
Epoch 290 | Train Loss: 0.0622 | Test Loss: 0.1271 | Loss Factor: 0.49:1
|
||||
Epoch 0 | Train Loss: 0.2575 | Test Loss: 0.2492 | Loss Factor: 1.03:1
|
||||
Epoch 10 | Train Loss: 0.1152 | Test Loss: 0.1740 | Loss Factor: 0.66:1
|
||||
Epoch 20 | Train Loss: 0.0915 | Test Loss: 0.1562 | Loss Factor: 0.59:1
|
||||
Epoch 0 | Train Loss: 0.3483 | Test Loss: 0.1410 | Loss Factor: 2.47:1
|
||||
Epoch 10 | Train Loss: 0.1358 | Test Loss: 0.1807 | Loss Factor: 0.75:1
|
||||
Epoch 20 | Train Loss: 0.1086 | Test Loss: 0.1600 | Loss Factor: 0.68:1
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"studyPercent": 0.001,
|
||||
"stepCounts": 3,
|
||||
"roundPrint": 10,
|
||||
"round": 300,
|
||||
"round": 30,
|
||||
"preDisposeData": true,
|
||||
"disposeMethod": "minmax",
|
||||
"dataNoOrder": true
|
||||
|
||||
@@ -38,6 +38,8 @@ import argparse
|
||||
import sys
|
||||
import os
|
||||
|
||||
from FC_ML_Model.Model_Train_Curve_Data import TrainCurveData
|
||||
|
||||
# 获取当前脚本(Data_Load.py)所在的目录
|
||||
current_script_dir = os.path.dirname(__file__) # 结果:/home/app/model/ModelTrainingPython/FC_ML_Baseline/FC_ML_Baseline_Data_Handler
|
||||
|
||||
@@ -63,6 +65,8 @@ if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description='代理模型训练参数输入')
|
||||
parser.add_argument('--param', default='D:\liyong\project\ModelTrainingPython\FC_ML_Baseline\FC_ML_Baseline_Test\Train\param.json',
|
||||
help='配置参数文件绝对路径')
|
||||
parser.add_argument('--export', default='curve.json',
|
||||
help='导出JSON文件名')
|
||||
args = parser.parse_args()
|
||||
params = parse_json_file(args.param)
|
||||
print(params)
|
||||
@@ -123,6 +127,16 @@ if __name__ == '__main__':
|
||||
# 在训练循环前初始化损失记录列表
|
||||
train_losses = []
|
||||
test_losses = []
|
||||
train_curve_data = TrainCurveData()
|
||||
train_curve_data.source_curve_data["legend"].append("Train Loss")
|
||||
train_curve_data.source_curve_data["legend"].append("Test Loss")
|
||||
serie_test = {}
|
||||
serie_test["name"] = "Test Loss"
|
||||
serie_test["data"] = []
|
||||
serie_train = {}
|
||||
serie_train["name"] = "Train Loss"
|
||||
serie_train["data"] = []
|
||||
|
||||
for epoch in range(round_count):
|
||||
#模型启用训练模式
|
||||
epoch_train_loss = 0
|
||||
@@ -154,10 +168,18 @@ if __name__ == '__main__':
|
||||
test_losses.append(avg_test_loss)
|
||||
#每100次迭代输出一次损失数值
|
||||
if epoch % round_print == 0:
|
||||
train_curve_data.source_curve_data["xAxis"].append(epoch)
|
||||
serie_test["data"].append(avg_test_loss)
|
||||
serie_train["data"].append(avg_train_loss)
|
||||
train_curve_data.source_curve_data["series"].clear()
|
||||
train_curve_data.source_curve_data["series"].append(serie_test)
|
||||
train_curve_data.source_curve_data["series"].append(serie_train)
|
||||
print(
|
||||
f"Epoch {epoch} | Train Loss: {avg_train_loss:.4f} | Test Loss: {avg_test_loss:.4f} | Loss Factor: {avg_train_loss / avg_test_loss:.2f}:1")
|
||||
with open(source_dir + "training.log", "a") as f:
|
||||
f.write(f"Epoch {epoch} | Train Loss: {avg_train_loss:.4f} | Test Loss: {avg_test_loss:.4f} | Loss Factor: {avg_train_loss / avg_test_loss:.2f}:1\n") # 自动换行追加
|
||||
with open(params["path"] + "/" + args.export, 'w') as f:
|
||||
f.write(train_curve_data.to_json()) # 写
|
||||
#导出训练后的模型
|
||||
export_model(model,source_dir,"model",export_format,torch.randn(1, input_Size))
|
||||
|
||||
|
||||
25
FC_ML_Model/Model_Train_Curve_Data.py
Normal file
25
FC_ML_Model/Model_Train_Curve_Data.py
Normal file
@@ -0,0 +1,25 @@
|
||||
import json
|
||||
|
||||
class TrainCurveData:
|
||||
def __init__(self):
|
||||
"""
|
||||
初始化车辆数据类
|
||||
参数与之前保持一致
|
||||
"""
|
||||
self.source_curve_data = {}
|
||||
self.source_curve_data["legend"] = []
|
||||
self.source_curve_data["xAxis"] = []
|
||||
self.source_curve_data["series"] = []
|
||||
|
||||
def to_dict(self):
|
||||
"""将类实例转换为字典格式"""
|
||||
return {
|
||||
'source_curve_data': self.source_curve_data
|
||||
}
|
||||
|
||||
def to_json(self, indent=None):
|
||||
"""将类实例序列化为JSON字符串"""
|
||||
return json.dumps(self.to_dict(), indent=indent, ensure_ascii=False)
|
||||
|
||||
# 保留原有获取数据的方法
|
||||
def get_curve_data(self): return self.source_curve_data
|
||||
Reference in New Issue
Block a user