master
wangchunlin 2 years ago
commit e903ba49d0

Binary file not shown.

@ -0,0 +1,80 @@
from pydantic import BaseModel
import requests
import pandas as pd
import os
from utils.data_process import preprocess_data, convert_to_list
def download_file(data_file_info, save_dir):
"""
下载文件并保存到指定目录
参数:
data_file_info (dict): 包含文件信息的字典,可能包含"model_file_url""log_file_url""data_file_url"等字段
save_dir (str): 文件保存的目录路径
"""
# 下载日志文件
if "log_file_url" in data_file_info:
log_file_url = data_file_info["log_file_url"]
log_save_path = os.path.join(save_dir, "log.txt")
response = requests.get(log_file_url)
with open(log_save_path, 'wb') as file:
file.write(response.content)
print(f"Log file saved to: {log_save_path}")
else:
print("无法获取日志文件信息")
# 下载数据文件
if "data_file_url" in data_file_info:
data_file_url = data_file_info["data_file_url"]
data_save_path = os.path.join(save_dir, "data.xlsx")
response = requests.get(data_file_url)
with open(data_save_path, 'wb') as file:
file.write(response.content)
print(f"Data file saved to: {data_save_path}")
else:
print("无法获取数据文件信息")
def classify_features(features_data_list):
"""
发送特征数据到服务端进行分类,并获取分类结果
参数:
features_data_list (list): 包含特征数据的列表
返回:
dict: 包含分类结果和模型文件信息的字典
"""
response = requests.post("http://127.0.0.1:3397/evaluate/", json=features_data_list)
if response.status_code == 200:
results = response.json()
print("Precision:", results["classification_result"]["precision"])
print("Recall:", results["classification_result"]["recall"])
print("F1:", results["classification_result"]["f1"])
print("Wrong Percentage:", results["classification_result"]["wrong_percentage"])
data_file_info = results["data_file"]
data_save_dir = os.path.dirname(__file__)
download_file(data_file_info, data_save_dir)
return results
else:
print("请求失败:", response.text)
return None
if __name__ == "__main__":
# 读取原始数据表
df_src = pd.read_excel("data/data_src.xlsx")
df_leave = pd.read_excel("data_processed/Leave_Record_RES.xlsx")
df_dropout_warning = pd.read_excel("data_processed/Dropout_Warning_RES.xlsx")
# 数据预处理
df = preprocess_data(df_src, df_leave, df_dropout_warning)
# 转换成数据列表
features_data_list = convert_to_list(df)
# 发送 POST 请求并处理结果
results = classify_features(features_data_list)
if results:
print("Classification results:", results)

@ -0,0 +1,97 @@
from pydantic import BaseModel
if __name__ == "__main__":
import requests
# 模拟发送的特征数据
features_data1 = {
"somatization": 0.5,
"obsessive_compulsive": 0.3,
"interpersonal_sensitivity": 0.7,
"depression": 0.6,
"anxiety": 0.8,
"hostility": 0.4,
"terror": 0.2,
"paranoia": 0.1,
"psychoticism": 0.9,
"other": 0.2,
"father_parenting_style": 2,
"mother_parenting_style": 3,
"self_assessed_family_economic_condition": 4,
"history_of_psychological_counseling": 1,
"absenteeism_above_average": True,
"academic_warning": False,
"label": -1
}
features_data2 = {
"somatization": 4.3,
"obsessive_compulsive": 4.1,
"interpersonal_sensitivity": 3.8,
"depression": 4,
"anxiety": 4.2,
"hostility": 4.2,
"terror": 4,
"paranoia": 4.2,
"psychoticism": 3.8,
"other": 3.6,
"father_parenting_style": 1,
"mother_parenting_style": 0,
"self_assessed_family_economic_condition": 0,
"history_of_psychological_counseling": False,
"absenteeism_above_average": True,
"academic_warning": True,
"label": -1
}
features_data3 = {
"somatization": 1.1,
"obsessive_compulsive": 2.3,
"interpersonal_sensitivity": 2.6,
"depression": 2.2,
"anxiety": 1.6,
"hostility": 1.5,
"terror": 1.6,
"paranoia": 1.5,
"psychoticism": 1.2,
"other": 1.3,
"father_parenting_style": 1,
"mother_parenting_style": 1,
"self_assessed_family_economic_condition": 1,
"history_of_psychological_counseling": False,
"absenteeism_above_average": False,
"academic_warning": False,
"label": -1
}
features_data4 = {
"somatization": 1.5,
"obsessive_compulsive": 2.4,
"interpersonal_sensitivity": 2.2,
"depression": 3.2,
"anxiety": 1.6,
"hostility": 1.5,
"terror": 3.1,
"paranoia": 1.5,
"psychoticism": 1.9,
"other": 2.6,
"father_parenting_style": 1,
"mother_parenting_style": 1,
"self_assessed_family_economic_condition": 0,
"history_of_psychological_counseling": False,
"absenteeism_above_average": False,
"academic_warning": False,
"label": -1
}
# 必须是features_list, 前面出现了只有一个样本时测不准,考虑是用了样本间归一化的原因,现在么有用了
# features_data_list = [features_data3]
features_data_list = [features_data4, features_data2, features_data3, features_data1]
# 发送 POST 请求
response = requests.post("http://127.0.0.1:3397/inference/", json=features_data_list)
if response.status_code == 200:
# 获取分类结果列表
classified_results = response.json()
print(classified_results) # 这里的 classified_results 就是返回的列表对象
else:
print("请求失败:", response.text)

@ -0,0 +1,89 @@
import requests
import pandas as pd
import os
from utils.data_process import preprocess_data, convert_to_list
def download_file(data_file_info, save_dir):
"""
下载文件并保存到指定目录
参数:
data_file_info (dict): 包含文件信息的字典,可能包含"model_file_url""log_file_url""data_file_url"等字段
save_dir (str): 文件保存的目录路径
"""
# 下载模型文件
if "model_file_url" in data_file_info:
model_file_url = data_file_info["model_file_url"]
model_save_path = os.path.join(save_dir, "model.pth")
response = requests.get(model_file_url)
with open(model_save_path, 'wb') as file:
file.write(response.content)
print(f"Model saved to: {model_save_path}")
else:
print("无法获取模型文件信息")
# 下载日志文件
if "log_file_url" in data_file_info:
log_file_url = data_file_info["log_file_url"]
log_save_path = os.path.join(save_dir, "log.txt")
response = requests.get(log_file_url)
with open(log_save_path, 'wb') as file:
file.write(response.content)
print(f"Log file saved to: {log_save_path}")
else:
print("无法获取日志文件信息")
# 下载数据文件
if "data_file_url" in data_file_info:
data_file_url = data_file_info["data_file_url"]
data_save_path = os.path.join(save_dir, "data.xlsx")
response = requests.get(data_file_url)
with open(data_save_path, 'wb') as file:
file.write(response.content)
print(f"Data file saved to: {data_save_path}")
else:
print("无法获取数据文件信息")
def classify_features(features_data_list):
"""
发送特征数据到服务端进行分类,并获取分类结果
参数:
features_data_list (list): 包含特征数据的列表
返回:
dict: 包含分类结果和模型文件信息的字典
"""
response = requests.post("http://127.0.0.1:3397/train/", json=features_data_list)
if response.status_code == 200:
results = response.json()
print("Precision:", results["classification_result"]["precision"])
print("Recall:", results["classification_result"]["recall"])
print("F1:", results["classification_result"]["f1"])
print("Wrong Percentage:", results["classification_result"]["wrong_percentage"])
data_file_info = results["data_file"]
data_save_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "client"))
download_file(data_file_info, data_save_dir)
return results
else:
print("请求失败:", response.text)
return None
if __name__ == "__main__":
# 读取原始数据表
df_src = pd.read_excel("data/data_src.xlsx")
df_leave = pd.read_excel("data_processed/Leave_Record_RES.xlsx")
df_dropout_warning = pd.read_excel("data_processed/Dropout_Warning_RES.xlsx")
# 数据预处理
df = preprocess_data(df_src, df_leave, df_dropout_warning)
# 转换成数据列表
features_data_list = convert_to_list(df)
# 发送 POST 请求并处理结果
results = classify_features(features_data_list)
if results:
print("Classification results:", results)

Binary file not shown.

@ -0,0 +1,764 @@
2024-05-29 00:58:42 INFO: config:
2024-05-29 00:58:45 INFO: Class weights: tensor([21.1878, 3.1149, 0.7420, 0.4378], device='cuda:0')
2024-05-29 00:58:47 INFO: Epoch 001 | Train Loss: 0.6145 | Train Accuracy: 0.8024 | Validation Loss: 0.3530 | Validation Accuracy: 0.8666 | Validation Mean Precision: 0.7371 | Validation Mean Recall: 0.8382 | Validation Mean F1_score: 0.7780
2024-05-29 00:58:49 INFO: Epoch 002 | Train Loss: 0.3780 | Train Accuracy: 0.8802 | Validation Loss: 0.4015 | Validation Accuracy: 0.8146 | Validation Mean Precision: 0.6750 | Validation Mean Recall: 0.8230 | Validation Mean F1_score: 0.7243
2024-05-29 00:58:50 INFO: Epoch 003 | Train Loss: 0.3667 | Train Accuracy: 0.8861 | Validation Loss: 0.3302 | Validation Accuracy: 0.8826 | Validation Mean Precision: 0.7854 | Validation Mean Recall: 0.8465 | Validation Mean F1_score: 0.8125
2024-05-29 00:58:52 INFO: Epoch 004 | Train Loss: 0.3590 | Train Accuracy: 0.8887 | Validation Loss: 0.3236 | Validation Accuracy: 0.8996 | Validation Mean Precision: 0.8327 | Validation Mean Recall: 0.8399 | Validation Mean F1_score: 0.8350
2024-05-29 00:58:54 INFO: Epoch 005 | Train Loss: 0.3563 | Train Accuracy: 0.8892 | Validation Loss: 0.3271 | Validation Accuracy: 0.9011 | Validation Mean Precision: 0.7866 | Validation Mean Recall: 0.8377 | Validation Mean F1_score: 0.8014
2024-05-29 00:58:55 INFO: Epoch 006 | Train Loss: 0.3603 | Train Accuracy: 0.8912 | Validation Loss: 0.3489 | Validation Accuracy: 0.8941 | Validation Mean Precision: 0.7863 | Validation Mean Recall: 0.8253 | Validation Mean F1_score: 0.7933
2024-05-29 00:58:57 INFO: Epoch 007 | Train Loss: 0.3615 | Train Accuracy: 0.8899 | Validation Loss: 0.3224 | Validation Accuracy: 0.9128 | Validation Mean Precision: 0.8498 | Validation Mean Recall: 0.8398 | Validation Mean F1_score: 0.8445
2024-05-29 00:58:58 INFO: Epoch 008 | Train Loss: 0.3472 | Train Accuracy: 0.8936 | Validation Loss: 0.3202 | Validation Accuracy: 0.9087 | Validation Mean Precision: 0.8409 | Validation Mean Recall: 0.8421 | Validation Mean F1_score: 0.8408
2024-05-29 00:59:00 INFO: Epoch 009 | Train Loss: 0.3446 | Train Accuracy: 0.8995 | Validation Loss: 0.3466 | Validation Accuracy: 0.9020 | Validation Mean Precision: 0.7918 | Validation Mean Recall: 0.8389 | Validation Mean F1_score: 0.7942
2024-05-29 00:59:01 INFO: Epoch 010 | Train Loss: 0.3402 | Train Accuracy: 0.8976 | Validation Loss: 0.3259 | Validation Accuracy: 0.9149 | Validation Mean Precision: 0.8842 | Validation Mean Recall: 0.8261 | Validation Mean F1_score: 0.8511
2024-05-29 00:59:03 INFO: Epoch 011 | Train Loss: 0.3389 | Train Accuracy: 0.9001 | Validation Loss: 0.3203 | Validation Accuracy: 0.8862 | Validation Mean Precision: 0.7839 | Validation Mean Recall: 0.8474 | Validation Mean F1_score: 0.8105
2024-05-29 00:59:04 INFO: Epoch 012 | Train Loss: 0.3345 | Train Accuracy: 0.9002 | Validation Loss: 0.3031 | Validation Accuracy: 0.9157 | Validation Mean Precision: 0.8425 | Validation Mean Recall: 0.8488 | Validation Mean F1_score: 0.8452
2024-05-29 00:59:06 INFO: Epoch 013 | Train Loss: 0.3312 | Train Accuracy: 0.9037 | Validation Loss: 0.3071 | Validation Accuracy: 0.9008 | Validation Mean Precision: 0.7963 | Validation Mean Recall: 0.8467 | Validation Mean F1_score: 0.8113
2024-05-29 00:59:07 INFO: Epoch 014 | Train Loss: 0.3318 | Train Accuracy: 0.9047 | Validation Loss: 0.3138 | Validation Accuracy: 0.9018 | Validation Mean Precision: 0.7624 | Validation Mean Recall: 0.8601 | Validation Mean F1_score: 0.7981
2024-05-29 00:59:09 INFO: Epoch 015 | Train Loss: 0.3252 | Train Accuracy: 0.9086 | Validation Loss: 0.2973 | Validation Accuracy: 0.9111 | Validation Mean Precision: 0.8332 | Validation Mean Recall: 0.8528 | Validation Mean F1_score: 0.8409
2024-05-29 00:59:10 INFO: Epoch 016 | Train Loss: 0.3242 | Train Accuracy: 0.9077 | Validation Loss: 0.2943 | Validation Accuracy: 0.9130 | Validation Mean Precision: 0.8474 | Validation Mean Recall: 0.8502 | Validation Mean F1_score: 0.8474
2024-05-29 00:59:12 INFO: Epoch 017 | Train Loss: 0.3225 | Train Accuracy: 0.9069 | Validation Loss: 0.3049 | Validation Accuracy: 0.9142 | Validation Mean Precision: 0.8105 | Validation Mean Recall: 0.8539 | Validation Mean F1_score: 0.8275
2024-05-29 00:59:13 INFO: Epoch 018 | Train Loss: 0.3232 | Train Accuracy: 0.9078 | Validation Loss: 0.3142 | Validation Accuracy: 0.8831 | Validation Mean Precision: 0.7624 | Validation Mean Recall: 0.8533 | Validation Mean F1_score: 0.7997
2024-05-29 00:59:14 INFO: Epoch 019 | Train Loss: 0.3191 | Train Accuracy: 0.9108 | Validation Loss: 0.2926 | Validation Accuracy: 0.9212 | Validation Mean Precision: 0.8754 | Validation Mean Recall: 0.8612 | Validation Mean F1_score: 0.8681
2024-05-29 00:59:16 INFO: Epoch 020 | Train Loss: 0.3177 | Train Accuracy: 0.9152 | Validation Loss: 0.2906 | Validation Accuracy: 0.9164 | Validation Mean Precision: 0.7893 | Validation Mean Recall: 0.8658 | Validation Mean F1_score: 0.8178
2024-05-29 00:59:17 INFO: Epoch 021 | Train Loss: 0.3189 | Train Accuracy: 0.9145 | Validation Loss: 0.2837 | Validation Accuracy: 0.9267 | Validation Mean Precision: 0.8602 | Validation Mean Recall: 0.8654 | Validation Mean F1_score: 0.8618
2024-05-29 00:59:19 INFO: Epoch 022 | Train Loss: 0.3152 | Train Accuracy: 0.9141 | Validation Loss: 0.2781 | Validation Accuracy: 0.9205 | Validation Mean Precision: 0.8329 | Validation Mean Recall: 0.8657 | Validation Mean F1_score: 0.8480
2024-05-29 00:59:20 INFO: Epoch 023 | Train Loss: 0.3114 | Train Accuracy: 0.9151 | Validation Loss: 0.2808 | Validation Accuracy: 0.9279 | Validation Mean Precision: 0.8559 | Validation Mean Recall: 0.8620 | Validation Mean F1_score: 0.8584
2024-05-29 00:59:21 INFO: Epoch 024 | Train Loss: 0.3089 | Train Accuracy: 0.9146 | Validation Loss: 0.3037 | Validation Accuracy: 0.9051 | Validation Mean Precision: 0.7702 | Validation Mean Recall: 0.8667 | Validation Mean F1_score: 0.8087
2024-05-29 00:59:23 INFO: Epoch 025 | Train Loss: 0.3131 | Train Accuracy: 0.9159 | Validation Loss: 0.2844 | Validation Accuracy: 0.9063 | Validation Mean Precision: 0.8446 | Validation Mean Recall: 0.8616 | Validation Mean F1_score: 0.8520
2024-05-29 00:59:24 INFO: Epoch 026 | Train Loss: 0.3083 | Train Accuracy: 0.9187 | Validation Loss: 0.2789 | Validation Accuracy: 0.9126 | Validation Mean Precision: 0.8120 | Validation Mean Recall: 0.8610 | Validation Mean F1_score: 0.8344
2024-05-29 00:59:26 INFO: Epoch 027 | Train Loss: 0.3031 | Train Accuracy: 0.9231 | Validation Loss: 0.2845 | Validation Accuracy: 0.9025 | Validation Mean Precision: 0.7914 | Validation Mean Recall: 0.8660 | Validation Mean F1_score: 0.8225
2024-05-29 00:59:27 INFO: Epoch 028 | Train Loss: 0.3065 | Train Accuracy: 0.9188 | Validation Loss: 0.2807 | Validation Accuracy: 0.9087 | Validation Mean Precision: 0.8178 | Validation Mean Recall: 0.8595 | Validation Mean F1_score: 0.8364
2024-05-29 00:59:29 INFO: Epoch 029 | Train Loss: 0.2994 | Train Accuracy: 0.9185 | Validation Loss: 0.2913 | Validation Accuracy: 0.9169 | Validation Mean Precision: 0.7855 | Validation Mean Recall: 0.8691 | Validation Mean F1_score: 0.8162
2024-05-29 00:59:30 INFO: Epoch 030 | Train Loss: 0.2980 | Train Accuracy: 0.9225 | Validation Loss: 0.2720 | Validation Accuracy: 0.9224 | Validation Mean Precision: 0.8211 | Validation Mean Recall: 0.8657 | Validation Mean F1_score: 0.8414
2024-05-29 00:59:32 INFO: Epoch 031 | Train Loss: 0.3008 | Train Accuracy: 0.9190 | Validation Loss: 0.2733 | Validation Accuracy: 0.9327 | Validation Mean Precision: 0.8689 | Validation Mean Recall: 0.8712 | Validation Mean F1_score: 0.8697
2024-05-29 00:59:33 INFO: Epoch 032 | Train Loss: 0.2979 | Train Accuracy: 0.9204 | Validation Loss: 0.2776 | Validation Accuracy: 0.9255 | Validation Mean Precision: 0.8200 | Validation Mean Recall: 0.8756 | Validation Mean F1_score: 0.8420
2024-05-29 00:59:35 INFO: Epoch 033 | Train Loss: 0.3003 | Train Accuracy: 0.9208 | Validation Loss: 0.2710 | Validation Accuracy: 0.9260 | Validation Mean Precision: 0.8219 | Validation Mean Recall: 0.8711 | Validation Mean F1_score: 0.8420
2024-05-29 00:59:37 INFO: Epoch 034 | Train Loss: 0.2946 | Train Accuracy: 0.9223 | Validation Loss: 0.2855 | Validation Accuracy: 0.9226 | Validation Mean Precision: 0.8080 | Validation Mean Recall: 0.8608 | Validation Mean F1_score: 0.8287
2024-05-29 00:59:38 INFO: Epoch 035 | Train Loss: 0.2869 | Train Accuracy: 0.9250 | Validation Loss: 0.2886 | Validation Accuracy: 0.9310 | Validation Mean Precision: 0.8492 | Validation Mean Recall: 0.8662 | Validation Mean F1_score: 0.8544
2024-05-29 00:59:40 INFO: Epoch 036 | Train Loss: 0.2866 | Train Accuracy: 0.9248 | Validation Loss: 0.3234 | Validation Accuracy: 0.8915 | Validation Mean Precision: 0.7333 | Validation Mean Recall: 0.8630 | Validation Mean F1_score: 0.7779
2024-05-29 00:59:42 INFO: Epoch 037 | Train Loss: 0.2879 | Train Accuracy: 0.9267 | Validation Loss: 0.2788 | Validation Accuracy: 0.9212 | Validation Mean Precision: 0.8358 | Validation Mean Recall: 0.8697 | Validation Mean F1_score: 0.8511
2024-05-29 00:59:43 INFO: Epoch 038 | Train Loss: 0.2871 | Train Accuracy: 0.9266 | Validation Loss: 0.2770 | Validation Accuracy: 0.9358 | Validation Mean Precision: 0.8449 | Validation Mean Recall: 0.8763 | Validation Mean F1_score: 0.8522
2024-05-29 00:59:45 INFO: Epoch 039 | Train Loss: 0.2925 | Train Accuracy: 0.9211 | Validation Loss: 0.2752 | Validation Accuracy: 0.9197 | Validation Mean Precision: 0.8059 | Validation Mean Recall: 0.8702 | Validation Mean F1_score: 0.8336
2024-05-29 00:59:47 INFO: Epoch 040 | Train Loss: 0.2828 | Train Accuracy: 0.9284 | Validation Loss: 0.2897 | Validation Accuracy: 0.9023 | Validation Mean Precision: 0.8541 | Validation Mean Recall: 0.8528 | Validation Mean F1_score: 0.8502
2024-05-29 00:59:48 INFO: Epoch 041 | Train Loss: 0.2808 | Train Accuracy: 0.9286 | Validation Loss: 0.2939 | Validation Accuracy: 0.8967 | Validation Mean Precision: 0.8299 | Validation Mean Recall: 0.8616 | Validation Mean F1_score: 0.8440
2024-05-29 00:59:50 INFO: Epoch 042 | Train Loss: 0.2822 | Train Accuracy: 0.9250 | Validation Loss: 0.2620 | Validation Accuracy: 0.9276 | Validation Mean Precision: 0.8283 | Validation Mean Recall: 0.8691 | Validation Mean F1_score: 0.8457
2024-05-29 00:59:52 INFO: Epoch 043 | Train Loss: 0.2771 | Train Accuracy: 0.9282 | Validation Loss: 0.2604 | Validation Accuracy: 0.9288 | Validation Mean Precision: 0.8361 | Validation Mean Recall: 0.8706 | Validation Mean F1_score: 0.8511
2024-05-29 00:59:53 INFO: Epoch 044 | Train Loss: 0.2765 | Train Accuracy: 0.9276 | Validation Loss: 0.2745 | Validation Accuracy: 0.9250 | Validation Mean Precision: 0.8826 | Validation Mean Recall: 0.8622 | Validation Mean F1_score: 0.8716
2024-05-29 00:59:55 INFO: Epoch 045 | Train Loss: 0.2796 | Train Accuracy: 0.9262 | Validation Loss: 0.2621 | Validation Accuracy: 0.9322 | Validation Mean Precision: 0.8378 | Validation Mean Recall: 0.8689 | Validation Mean F1_score: 0.8501
2024-05-29 00:59:56 INFO: Epoch 046 | Train Loss: 0.2721 | Train Accuracy: 0.9300 | Validation Loss: 0.2635 | Validation Accuracy: 0.9238 | Validation Mean Precision: 0.8548 | Validation Mean Recall: 0.8703 | Validation Mean F1_score: 0.8607
2024-05-29 00:59:58 INFO: Epoch 047 | Train Loss: 0.2794 | Train Accuracy: 0.9229 | Validation Loss: 0.2885 | Validation Accuracy: 0.9106 | Validation Mean Precision: 0.8250 | Validation Mean Recall: 0.8616 | Validation Mean F1_score: 0.8411
2024-05-29 00:59:59 INFO: Epoch 048 | Train Loss: 0.2702 | Train Accuracy: 0.9275 | Validation Loss: 0.2639 | Validation Accuracy: 0.9241 | Validation Mean Precision: 0.8274 | Validation Mean Recall: 0.8713 | Validation Mean F1_score: 0.8461
2024-05-29 01:00:01 INFO: Epoch 049 | Train Loss: 0.2695 | Train Accuracy: 0.9298 | Validation Loss: 0.2643 | Validation Accuracy: 0.9248 | Validation Mean Precision: 0.8663 | Validation Mean Recall: 0.8723 | Validation Mean F1_score: 0.8670
2024-05-29 01:00:02 INFO: Epoch 050 | Train Loss: 0.2681 | Train Accuracy: 0.9298 | Validation Loss: 0.2695 | Validation Accuracy: 0.9320 | Validation Mean Precision: 0.8449 | Validation Mean Recall: 0.8665 | Validation Mean F1_score: 0.8521
2024-05-29 01:00:03 INFO: Epoch 051 | Train Loss: 0.2759 | Train Accuracy: 0.9291 | Validation Loss: 0.2627 | Validation Accuracy: 0.9312 | Validation Mean Precision: 0.8293 | Validation Mean Recall: 0.8677 | Validation Mean F1_score: 0.8445
2024-05-29 01:00:05 INFO: Epoch 052 | Train Loss: 0.2605 | Train Accuracy: 0.9304 | Validation Loss: 0.2969 | Validation Accuracy: 0.9006 | Validation Mean Precision: 0.8115 | Validation Mean Recall: 0.8689 | Validation Mean F1_score: 0.8339
2024-05-29 01:00:06 INFO: Epoch 053 | Train Loss: 0.2672 | Train Accuracy: 0.9291 | Validation Loss: 0.2632 | Validation Accuracy: 0.9205 | Validation Mean Precision: 0.8498 | Validation Mean Recall: 0.8763 | Validation Mean F1_score: 0.8624
2024-05-29 01:00:08 INFO: Epoch 054 | Train Loss: 0.2725 | Train Accuracy: 0.9272 | Validation Loss: 0.2702 | Validation Accuracy: 0.9188 | Validation Mean Precision: 0.8314 | Validation Mean Recall: 0.8739 | Validation Mean F1_score: 0.8499
2024-05-29 01:00:09 INFO: Epoch 055 | Train Loss: 0.2600 | Train Accuracy: 0.9307 | Validation Loss: 0.2599 | Validation Accuracy: 0.9327 | Validation Mean Precision: 0.8917 | Validation Mean Recall: 0.8613 | Validation Mean F1_score: 0.8725
2024-05-29 01:00:11 INFO: Epoch 056 | Train Loss: 0.2596 | Train Accuracy: 0.9298 | Validation Loss: 0.2648 | Validation Accuracy: 0.9327 | Validation Mean Precision: 0.8541 | Validation Mean Recall: 0.8724 | Validation Mean F1_score: 0.8595
2024-05-29 01:00:13 INFO: Epoch 057 | Train Loss: 0.2652 | Train Accuracy: 0.9296 | Validation Loss: 0.2570 | Validation Accuracy: 0.9356 | Validation Mean Precision: 0.8567 | Validation Mean Recall: 0.8808 | Validation Mean F1_score: 0.8669
2024-05-29 01:00:15 INFO: Epoch 058 | Train Loss: 0.2580 | Train Accuracy: 0.9300 | Validation Loss: 0.2556 | Validation Accuracy: 0.9368 | Validation Mean Precision: 0.8718 | Validation Mean Recall: 0.8763 | Validation Mean F1_score: 0.8732
2024-05-29 01:00:16 INFO: Epoch 059 | Train Loss: 0.2627 | Train Accuracy: 0.9309 | Validation Loss: 0.2856 | Validation Accuracy: 0.9133 | Validation Mean Precision: 0.8033 | Validation Mean Recall: 0.8742 | Validation Mean F1_score: 0.8343
2024-05-29 01:00:18 INFO: Epoch 060 | Train Loss: 0.2592 | Train Accuracy: 0.9309 | Validation Loss: 0.2570 | Validation Accuracy: 0.9351 | Validation Mean Precision: 0.8610 | Validation Mean Recall: 0.8768 | Validation Mean F1_score: 0.8679
2024-05-29 01:00:19 INFO: Epoch 061 | Train Loss: 0.2617 | Train Accuracy: 0.9296 | Validation Loss: 0.2571 | Validation Accuracy: 0.9279 | Validation Mean Precision: 0.8443 | Validation Mean Recall: 0.8789 | Validation Mean F1_score: 0.8601
2024-05-29 01:00:21 INFO: Epoch 062 | Train Loss: 0.2633 | Train Accuracy: 0.9292 | Validation Loss: 0.2664 | Validation Accuracy: 0.9233 | Validation Mean Precision: 0.8598 | Validation Mean Recall: 0.8711 | Validation Mean F1_score: 0.8631
2024-05-29 01:00:22 INFO: Epoch 063 | Train Loss: 0.2592 | Train Accuracy: 0.9284 | Validation Loss: 0.2704 | Validation Accuracy: 0.9336 | Validation Mean Precision: 0.9117 | Validation Mean Recall: 0.8574 | Validation Mean F1_score: 0.8807
2024-05-29 01:00:23 INFO: Epoch 064 | Train Loss: 0.2568 | Train Accuracy: 0.9311 | Validation Loss: 0.2605 | Validation Accuracy: 0.9399 | Validation Mean Precision: 0.9033 | Validation Mean Recall: 0.8751 | Validation Mean F1_score: 0.8886
2024-05-29 01:00:25 INFO: Epoch 065 | Train Loss: 0.2619 | Train Accuracy: 0.9311 | Validation Loss: 0.2578 | Validation Accuracy: 0.9375 | Validation Mean Precision: 0.8894 | Validation Mean Recall: 0.8710 | Validation Mean F1_score: 0.8791
2024-05-29 01:00:26 INFO: Epoch 066 | Train Loss: 0.2595 | Train Accuracy: 0.9323 | Validation Loss: 0.2837 | Validation Accuracy: 0.9310 | Validation Mean Precision: 0.8411 | Validation Mean Recall: 0.8659 | Validation Mean F1_score: 0.8461
2024-05-29 01:00:28 INFO: Epoch 067 | Train Loss: 0.2605 | Train Accuracy: 0.9321 | Validation Loss: 0.2581 | Validation Accuracy: 0.9382 | Validation Mean Precision: 0.8721 | Validation Mean Recall: 0.8798 | Validation Mean F1_score: 0.8747
2024-05-29 01:00:29 INFO: Epoch 068 | Train Loss: 0.2570 | Train Accuracy: 0.9329 | Validation Loss: 0.2592 | Validation Accuracy: 0.9358 | Validation Mean Precision: 0.8555 | Validation Mean Recall: 0.8761 | Validation Mean F1_score: 0.8629
2024-05-29 01:00:31 INFO: Epoch 069 | Train Loss: 0.2562 | Train Accuracy: 0.9334 | Validation Loss: 0.2578 | Validation Accuracy: 0.9346 | Validation Mean Precision: 0.8833 | Validation Mean Recall: 0.8799 | Validation Mean F1_score: 0.8811
2024-05-29 01:00:33 INFO: Epoch 070 | Train Loss: 0.2506 | Train Accuracy: 0.9334 | Validation Loss: 0.2591 | Validation Accuracy: 0.9255 | Validation Mean Precision: 0.8314 | Validation Mean Recall: 0.8705 | Validation Mean F1_score: 0.8485
2024-05-29 01:00:34 INFO: Epoch 071 | Train Loss: 0.2561 | Train Accuracy: 0.9318 | Validation Loss: 0.2544 | Validation Accuracy: 0.9262 | Validation Mean Precision: 0.8376 | Validation Mean Recall: 0.8759 | Validation Mean F1_score: 0.8546
2024-05-29 01:00:36 INFO: Epoch 072 | Train Loss: 0.2603 | Train Accuracy: 0.9325 | Validation Loss: 0.2500 | Validation Accuracy: 0.9344 | Validation Mean Precision: 0.8699 | Validation Mean Recall: 0.8731 | Validation Mean F1_score: 0.8713
2024-05-29 01:00:38 INFO: Epoch 073 | Train Loss: 0.2558 | Train Accuracy: 0.9300 | Validation Loss: 0.2603 | Validation Accuracy: 0.9293 | Validation Mean Precision: 0.8274 | Validation Mean Recall: 0.8768 | Validation Mean F1_score: 0.8475
2024-05-29 01:00:39 INFO: Epoch 074 | Train Loss: 0.2508 | Train Accuracy: 0.9341 | Validation Loss: 0.2723 | Validation Accuracy: 0.9406 | Validation Mean Precision: 0.8890 | Validation Mean Recall: 0.8800 | Validation Mean F1_score: 0.8838
2024-05-29 01:00:40 INFO: Epoch 075 | Train Loss: 0.2550 | Train Accuracy: 0.9333 | Validation Loss: 0.2568 | Validation Accuracy: 0.9264 | Validation Mean Precision: 0.8473 | Validation Mean Recall: 0.8822 | Validation Mean F1_score: 0.8633
2024-05-29 01:00:42 INFO: Epoch 076 | Train Loss: 0.2540 | Train Accuracy: 0.9315 | Validation Loss: 0.2620 | Validation Accuracy: 0.9384 | Validation Mean Precision: 0.8983 | Validation Mean Recall: 0.8661 | Validation Mean F1_score: 0.8805
2024-05-29 01:00:43 INFO: Epoch 077 | Train Loss: 0.2533 | Train Accuracy: 0.9357 | Validation Loss: 0.2530 | Validation Accuracy: 0.9356 | Validation Mean Precision: 0.8686 | Validation Mean Recall: 0.8737 | Validation Mean F1_score: 0.8705
2024-05-29 01:00:45 INFO: Epoch 078 | Train Loss: 0.2521 | Train Accuracy: 0.9336 | Validation Loss: 0.2615 | Validation Accuracy: 0.9279 | Validation Mean Precision: 0.8313 | Validation Mean Recall: 0.8729 | Validation Mean F1_score: 0.8497
2024-05-29 01:00:46 INFO: Epoch 079 | Train Loss: 0.2519 | Train Accuracy: 0.9333 | Validation Loss: 0.2690 | Validation Accuracy: 0.9181 | Validation Mean Precision: 0.8014 | Validation Mean Recall: 0.8720 | Validation Mean F1_score: 0.8309
2024-05-29 01:00:48 INFO: Epoch 080 | Train Loss: 0.2493 | Train Accuracy: 0.9335 | Validation Loss: 0.2732 | Validation Accuracy: 0.9135 | Validation Mean Precision: 0.8572 | Validation Mean Recall: 0.8625 | Validation Mean F1_score: 0.8575
2024-05-29 01:00:49 INFO: Epoch 081 | Train Loss: 0.2490 | Train Accuracy: 0.9335 | Validation Loss: 0.2803 | Validation Accuracy: 0.9142 | Validation Mean Precision: 0.7852 | Validation Mean Recall: 0.8712 | Validation Mean F1_score: 0.8198
2024-05-29 01:00:51 INFO: Epoch 082 | Train Loss: 0.2561 | Train Accuracy: 0.9322 | Validation Loss: 0.2584 | Validation Accuracy: 0.9260 | Validation Mean Precision: 0.8644 | Validation Mean Recall: 0.8733 | Validation Mean F1_score: 0.8670
2024-05-29 01:00:53 INFO: Epoch 083 | Train Loss: 0.2505 | Train Accuracy: 0.9365 | Validation Loss: 0.2807 | Validation Accuracy: 0.9243 | Validation Mean Precision: 0.7914 | Validation Mean Recall: 0.8726 | Validation Mean F1_score: 0.8221
2024-05-29 01:00:54 INFO: Epoch 084 | Train Loss: 0.2485 | Train Accuracy: 0.9336 | Validation Loss: 0.2518 | Validation Accuracy: 0.9377 | Validation Mean Precision: 0.8889 | Validation Mean Recall: 0.8652 | Validation Mean F1_score: 0.8755
2024-05-29 01:00:56 INFO: Epoch 085 | Train Loss: 0.2520 | Train Accuracy: 0.9339 | Validation Loss: 0.2629 | Validation Accuracy: 0.9394 | Validation Mean Precision: 0.8759 | Validation Mean Recall: 0.8828 | Validation Mean F1_score: 0.8783
2024-05-29 01:00:57 INFO: Epoch 086 | Train Loss: 0.2460 | Train Accuracy: 0.9365 | Validation Loss: 0.2648 | Validation Accuracy: 0.9293 | Validation Mean Precision: 0.8120 | Validation Mean Recall: 0.8745 | Validation Mean F1_score: 0.8352
2024-05-29 01:00:59 INFO: Epoch 087 | Train Loss: 0.2496 | Train Accuracy: 0.9341 | Validation Loss: 0.2573 | Validation Accuracy: 0.9269 | Validation Mean Precision: 0.8199 | Validation Mean Recall: 0.8756 | Validation Mean F1_score: 0.8432
2024-05-29 01:01:00 INFO: Epoch 088 | Train Loss: 0.2592 | Train Accuracy: 0.9297 | Validation Loss: 0.2606 | Validation Accuracy: 0.9276 | Validation Mean Precision: 0.8542 | Validation Mean Recall: 0.8776 | Validation Mean F1_score: 0.8643
2024-05-29 01:01:02 INFO: Epoch 089 | Train Loss: 0.2444 | Train Accuracy: 0.9353 | Validation Loss: 0.2626 | Validation Accuracy: 0.9233 | Validation Mean Precision: 0.8302 | Validation Mean Recall: 0.8795 | Validation Mean F1_score: 0.8527
2024-05-29 01:01:03 INFO: Epoch 090 | Train Loss: 0.2501 | Train Accuracy: 0.9348 | Validation Loss: 0.2577 | Validation Accuracy: 0.9425 | Validation Mean Precision: 0.8875 | Validation Mean Recall: 0.8787 | Validation Mean F1_score: 0.8821
2024-05-29 01:01:05 INFO: Epoch 091 | Train Loss: 0.2539 | Train Accuracy: 0.9325 | Validation Loss: 0.2718 | Validation Accuracy: 0.9305 | Validation Mean Precision: 0.8204 | Validation Mean Recall: 0.8721 | Validation Mean F1_score: 0.8400
2024-05-29 01:01:06 INFO: Epoch 092 | Train Loss: 0.2406 | Train Accuracy: 0.9371 | Validation Loss: 0.2697 | Validation Accuracy: 0.9284 | Validation Mean Precision: 0.8797 | Validation Mean Recall: 0.8662 | Validation Mean F1_score: 0.8709
2024-05-29 01:01:07 INFO: Epoch 093 | Train Loss: 0.2434 | Train Accuracy: 0.9379 | Validation Loss: 0.2591 | Validation Accuracy: 0.9372 | Validation Mean Precision: 0.8723 | Validation Mean Recall: 0.8627 | Validation Mean F1_score: 0.8666
2024-05-29 01:01:09 INFO: Epoch 094 | Train Loss: 0.2517 | Train Accuracy: 0.9347 | Validation Loss: 0.2551 | Validation Accuracy: 0.9315 | Validation Mean Precision: 0.8644 | Validation Mean Recall: 0.8765 | Validation Mean F1_score: 0.8699
2024-05-29 01:01:10 INFO: Epoch 095 | Train Loss: 0.2413 | Train Accuracy: 0.9376 | Validation Loss: 0.2566 | Validation Accuracy: 0.9351 | Validation Mean Precision: 0.8552 | Validation Mean Recall: 0.8802 | Validation Mean F1_score: 0.8648
2024-05-29 01:01:11 INFO: Epoch 096 | Train Loss: 0.2454 | Train Accuracy: 0.9342 | Validation Loss: 0.2567 | Validation Accuracy: 0.9399 | Validation Mean Precision: 0.8657 | Validation Mean Recall: 0.8786 | Validation Mean F1_score: 0.8695
2024-05-29 01:01:13 INFO: Epoch 097 | Train Loss: 0.2461 | Train Accuracy: 0.9351 | Validation Loss: 0.3030 | Validation Accuracy: 0.9159 | Validation Mean Precision: 0.8856 | Validation Mean Recall: 0.8438 | Validation Mean F1_score: 0.8617
2024-05-29 01:01:14 INFO: Epoch 098 | Train Loss: 0.2443 | Train Accuracy: 0.9351 | Validation Loss: 0.2589 | Validation Accuracy: 0.9411 | Validation Mean Precision: 0.8834 | Validation Mean Recall: 0.8875 | Validation Mean F1_score: 0.8847
2024-05-29 01:01:16 INFO: Epoch 099 | Train Loss: 0.2413 | Train Accuracy: 0.9374 | Validation Loss: 0.2525 | Validation Accuracy: 0.9379 | Validation Mean Precision: 0.8698 | Validation Mean Recall: 0.8768 | Validation Mean F1_score: 0.8722
2024-05-29 01:01:17 INFO: Epoch 100 | Train Loss: 0.2424 | Train Accuracy: 0.9357 | Validation Loss: 0.2651 | Validation Accuracy: 0.9442 | Validation Mean Precision: 0.9286 | Validation Mean Recall: 0.8631 | Validation Mean F1_score: 0.8917
2024-05-29 01:01:19 INFO: Epoch 101 | Train Loss: 0.2396 | Train Accuracy: 0.9378 | Validation Loss: 0.2523 | Validation Accuracy: 0.9379 | Validation Mean Precision: 0.8846 | Validation Mean Recall: 0.8693 | Validation Mean F1_score: 0.8761
2024-05-29 01:01:20 INFO: Epoch 102 | Train Loss: 0.2380 | Train Accuracy: 0.9372 | Validation Loss: 0.2550 | Validation Accuracy: 0.9288 | Validation Mean Precision: 0.8386 | Validation Mean Recall: 0.8814 | Validation Mean F1_score: 0.8580
2024-05-29 01:01:21 INFO: Epoch 103 | Train Loss: 0.2461 | Train Accuracy: 0.9358 | Validation Loss: 0.2683 | Validation Accuracy: 0.9236 | Validation Mean Precision: 0.8089 | Validation Mean Recall: 0.8717 | Validation Mean F1_score: 0.8343
2024-05-29 01:01:23 INFO: Epoch 104 | Train Loss: 0.2383 | Train Accuracy: 0.9374 | Validation Loss: 0.2654 | Validation Accuracy: 0.9262 | Validation Mean Precision: 0.8455 | Validation Mean Recall: 0.8824 | Validation Mean F1_score: 0.8628
2024-05-29 01:01:24 INFO: Epoch 105 | Train Loss: 0.2405 | Train Accuracy: 0.9378 | Validation Loss: 0.2620 | Validation Accuracy: 0.9205 | Validation Mean Precision: 0.8344 | Validation Mean Recall: 0.8782 | Validation Mean F1_score: 0.8540
2024-05-29 01:01:26 INFO: Epoch 106 | Train Loss: 0.2388 | Train Accuracy: 0.9363 | Validation Loss: 0.2658 | Validation Accuracy: 0.9274 | Validation Mean Precision: 0.8313 | Validation Mean Recall: 0.8789 | Validation Mean F1_score: 0.8508
2024-05-29 01:01:27 INFO: Epoch 107 | Train Loss: 0.2400 | Train Accuracy: 0.9388 | Validation Loss: 0.2534 | Validation Accuracy: 0.9375 | Validation Mean Precision: 0.8673 | Validation Mean Recall: 0.8875 | Validation Mean F1_score: 0.8765
2024-05-29 01:01:29 INFO: Epoch 108 | Train Loss: 0.2492 | Train Accuracy: 0.9371 | Validation Loss: 0.3316 | Validation Accuracy: 0.9161 | Validation Mean Precision: 0.7993 | Validation Mean Recall: 0.8617 | Validation Mean F1_score: 0.8212
2024-05-29 01:01:30 INFO: Epoch 109 | Train Loss: 0.2434 | Train Accuracy: 0.9389 | Validation Loss: 0.2547 | Validation Accuracy: 0.9358 | Validation Mean Precision: 0.8831 | Validation Mean Recall: 0.8750 | Validation Mean F1_score: 0.8783
2024-05-29 01:01:32 INFO: Epoch 110 | Train Loss: 0.2319 | Train Accuracy: 0.9397 | Validation Loss: 0.2541 | Validation Accuracy: 0.9344 | Validation Mean Precision: 0.8533 | Validation Mean Recall: 0.8842 | Validation Mean F1_score: 0.8674
2024-05-29 01:01:33 INFO: Epoch 111 | Train Loss: 0.2375 | Train Accuracy: 0.9370 | Validation Loss: 0.2620 | Validation Accuracy: 0.9406 | Validation Mean Precision: 0.8368 | Validation Mean Recall: 0.8768 | Validation Mean F1_score: 0.8466
2024-05-29 01:01:35 INFO: Epoch 112 | Train Loss: 0.2477 | Train Accuracy: 0.9350 | Validation Loss: 0.2724 | Validation Accuracy: 0.9269 | Validation Mean Precision: 0.8660 | Validation Mean Recall: 0.8627 | Validation Mean F1_score: 0.8613
2024-05-29 01:01:36 INFO: Epoch 113 | Train Loss: 0.2361 | Train Accuracy: 0.9403 | Validation Loss: 0.2572 | Validation Accuracy: 0.9360 | Validation Mean Precision: 0.8835 | Validation Mean Recall: 0.8674 | Validation Mean F1_score: 0.8739
2024-05-29 01:01:37 INFO: Epoch 114 | Train Loss: 0.2307 | Train Accuracy: 0.9402 | Validation Loss: 0.2482 | Validation Accuracy: 0.9377 | Validation Mean Precision: 0.8548 | Validation Mean Recall: 0.8835 | Validation Mean F1_score: 0.8673
2024-05-29 01:01:39 INFO: Epoch 115 | Train Loss: 0.2385 | Train Accuracy: 0.9396 | Validation Loss: 0.2630 | Validation Accuracy: 0.9442 | Validation Mean Precision: 0.9123 | Validation Mean Recall: 0.8697 | Validation Mean F1_score: 0.8888
2024-05-29 01:01:40 INFO: Epoch 116 | Train Loss: 0.2319 | Train Accuracy: 0.9393 | Validation Loss: 0.2572 | Validation Accuracy: 0.9370 | Validation Mean Precision: 0.8816 | Validation Mean Recall: 0.8704 | Validation Mean F1_score: 0.8749
2024-05-29 01:01:42 INFO: Epoch 117 | Train Loss: 0.2325 | Train Accuracy: 0.9407 | Validation Loss: 0.2674 | Validation Accuracy: 0.9394 | Validation Mean Precision: 0.8710 | Validation Mean Recall: 0.8817 | Validation Mean F1_score: 0.8750
2024-05-29 01:01:43 INFO: Epoch 118 | Train Loss: 0.2335 | Train Accuracy: 0.9382 | Validation Loss: 0.2692 | Validation Accuracy: 0.9401 | Validation Mean Precision: 0.8907 | Validation Mean Recall: 0.8643 | Validation Mean F1_score: 0.8760
2024-05-29 01:01:45 INFO: Epoch 119 | Train Loss: 0.2293 | Train Accuracy: 0.9404 | Validation Loss: 0.2504 | Validation Accuracy: 0.9363 | Validation Mean Precision: 0.8421 | Validation Mean Recall: 0.8743 | Validation Mean F1_score: 0.8553
2024-05-29 01:01:46 INFO: Epoch 120 | Train Loss: 0.2527 | Train Accuracy: 0.9344 | Validation Loss: 0.3017 | Validation Accuracy: 0.9243 | Validation Mean Precision: 0.7946 | Validation Mean Recall: 0.8720 | Validation Mean F1_score: 0.8214
2024-05-29 01:01:48 INFO: Epoch 121 | Train Loss: 0.2321 | Train Accuracy: 0.9409 | Validation Loss: 0.2578 | Validation Accuracy: 0.9368 | Validation Mean Precision: 0.8683 | Validation Mean Recall: 0.8816 | Validation Mean F1_score: 0.8743
2024-05-29 01:01:49 INFO: Epoch 122 | Train Loss: 0.2321 | Train Accuracy: 0.9400 | Validation Loss: 0.2715 | Validation Accuracy: 0.9449 | Validation Mean Precision: 0.8998 | Validation Mean Recall: 0.8672 | Validation Mean F1_score: 0.8825
2024-05-29 01:01:51 INFO: Epoch 123 | Train Loss: 0.2283 | Train Accuracy: 0.9411 | Validation Loss: 0.2629 | Validation Accuracy: 0.9389 | Validation Mean Precision: 0.8545 | Validation Mean Recall: 0.8817 | Validation Mean F1_score: 0.8652
2024-05-29 01:01:52 INFO: Epoch 124 | Train Loss: 0.2305 | Train Accuracy: 0.9410 | Validation Loss: 0.2689 | Validation Accuracy: 0.9197 | Validation Mean Precision: 0.8161 | Validation Mean Recall: 0.8753 | Validation Mean F1_score: 0.8423
2024-05-29 01:01:54 INFO: Epoch 125 | Train Loss: 0.2371 | Train Accuracy: 0.9391 | Validation Loss: 0.3554 | Validation Accuracy: 0.8994 | Validation Mean Precision: 0.7462 | Validation Mean Recall: 0.8548 | Validation Mean F1_score: 0.7785
2024-05-29 01:01:55 INFO: Epoch 126 | Train Loss: 0.2330 | Train Accuracy: 0.9403 | Validation Loss: 0.2541 | Validation Accuracy: 0.9408 | Validation Mean Precision: 0.8837 | Validation Mean Recall: 0.8811 | Validation Mean F1_score: 0.8817
2024-05-29 01:01:57 INFO: Epoch 127 | Train Loss: 0.2293 | Train Accuracy: 0.9411 | Validation Loss: 0.2689 | Validation Accuracy: 0.9391 | Validation Mean Precision: 0.8538 | Validation Mean Recall: 0.8781 | Validation Mean F1_score: 0.8616
2024-05-29 01:01:58 INFO: Epoch 128 | Train Loss: 0.2289 | Train Accuracy: 0.9405 | Validation Loss: 0.2716 | Validation Accuracy: 0.9308 | Validation Mean Precision: 0.8678 | Validation Mean Recall: 0.8692 | Validation Mean F1_score: 0.8668
2024-05-29 01:02:00 INFO: Epoch 129 | Train Loss: 0.2325 | Train Accuracy: 0.9418 | Validation Loss: 0.3116 | Validation Accuracy: 0.9236 | Validation Mean Precision: 0.8135 | Validation Mean Recall: 0.8565 | Validation Mean F1_score: 0.8228
2024-05-29 01:02:01 INFO: Epoch 130 | Train Loss: 0.2295 | Train Accuracy: 0.9396 | Validation Loss: 0.2617 | Validation Accuracy: 0.9329 | Validation Mean Precision: 0.8443 | Validation Mean Recall: 0.8818 | Validation Mean F1_score: 0.8612
2024-05-29 01:02:03 INFO: Epoch 131 | Train Loss: 0.2220 | Train Accuracy: 0.9438 | Validation Loss: 0.2818 | Validation Accuracy: 0.9305 | Validation Mean Precision: 0.8444 | Validation Mean Recall: 0.8767 | Validation Mean F1_score: 0.8583
2024-05-29 01:02:04 INFO: Epoch 132 | Train Loss: 0.2253 | Train Accuracy: 0.9420 | Validation Loss: 0.2535 | Validation Accuracy: 0.9408 | Validation Mean Precision: 0.8898 | Validation Mean Recall: 0.8748 | Validation Mean F1_score: 0.8813
2024-05-29 01:02:06 INFO: Epoch 133 | Train Loss: 0.2272 | Train Accuracy: 0.9397 | Validation Loss: 0.2705 | Validation Accuracy: 0.9356 | Validation Mean Precision: 0.8717 | Validation Mean Recall: 0.8769 | Validation Mean F1_score: 0.8730
2024-05-29 01:02:07 INFO: Epoch 134 | Train Loss: 0.2312 | Train Accuracy: 0.9393 | Validation Loss: 0.2865 | Validation Accuracy: 0.9312 | Validation Mean Precision: 0.8575 | Validation Mean Recall: 0.8658 | Validation Mean F1_score: 0.8603
2024-05-29 01:02:08 INFO: Epoch 135 | Train Loss: 0.2318 | Train Accuracy: 0.9402 | Validation Loss: 0.2541 | Validation Accuracy: 0.9363 | Validation Mean Precision: 0.8349 | Validation Mean Recall: 0.8838 | Validation Mean F1_score: 0.8546
2024-05-29 01:02:10 INFO: Epoch 136 | Train Loss: 0.2312 | Train Accuracy: 0.9400 | Validation Loss: 0.2632 | Validation Accuracy: 0.9255 | Validation Mean Precision: 0.8289 | Validation Mean Recall: 0.8741 | Validation Mean F1_score: 0.8495
2024-05-29 01:02:12 INFO: Epoch 137 | Train Loss: 0.2243 | Train Accuracy: 0.9415 | Validation Loss: 0.2806 | Validation Accuracy: 0.9399 | Validation Mean Precision: 0.8307 | Validation Mean Recall: 0.8806 | Validation Mean F1_score: 0.8476
2024-05-29 01:02:13 INFO: Epoch 138 | Train Loss: 0.2198 | Train Accuracy: 0.9430 | Validation Loss: 0.2474 | Validation Accuracy: 0.9466 | Validation Mean Precision: 0.8796 | Validation Mean Recall: 0.8836 | Validation Mean F1_score: 0.8803
2024-05-29 01:02:14 INFO: Epoch 139 | Train Loss: 0.2255 | Train Accuracy: 0.9415 | Validation Loss: 0.2539 | Validation Accuracy: 0.9384 | Validation Mean Precision: 0.8582 | Validation Mean Recall: 0.8851 | Validation Mean F1_score: 0.8700
2024-05-29 01:02:16 INFO: Epoch 140 | Train Loss: 0.2243 | Train Accuracy: 0.9421 | Validation Loss: 0.2745 | Validation Accuracy: 0.9454 | Validation Mean Precision: 0.9037 | Validation Mean Recall: 0.8690 | Validation Mean F1_score: 0.8847
2024-05-29 01:02:17 INFO: Epoch 141 | Train Loss: 0.2266 | Train Accuracy: 0.9432 | Validation Loss: 0.2637 | Validation Accuracy: 0.9432 | Validation Mean Precision: 0.8991 | Validation Mean Recall: 0.8691 | Validation Mean F1_score: 0.8823
2024-05-29 01:02:19 INFO: Epoch 142 | Train Loss: 0.2293 | Train Accuracy: 0.9433 | Validation Loss: 0.2581 | Validation Accuracy: 0.9324 | Validation Mean Precision: 0.8491 | Validation Mean Recall: 0.8835 | Validation Mean F1_score: 0.8649
2024-05-29 01:02:20 INFO: Epoch 143 | Train Loss: 0.2344 | Train Accuracy: 0.9409 | Validation Loss: 0.3203 | Validation Accuracy: 0.9375 | Validation Mean Precision: 0.8498 | Validation Mean Recall: 0.8791 | Validation Mean F1_score: 0.8630
2024-05-29 01:02:22 INFO: Epoch 144 | Train Loss: 0.2378 | Train Accuracy: 0.9412 | Validation Loss: 0.2588 | Validation Accuracy: 0.9341 | Validation Mean Precision: 0.8332 | Validation Mean Recall: 0.8803 | Validation Mean F1_score: 0.8535
2024-05-29 01:02:23 INFO: Epoch 145 | Train Loss: 0.2172 | Train Accuracy: 0.9448 | Validation Loss: 0.2573 | Validation Accuracy: 0.9468 | Validation Mean Precision: 0.9278 | Validation Mean Recall: 0.8642 | Validation Mean F1_score: 0.8903
2024-05-29 01:02:24 INFO: Epoch 146 | Train Loss: 0.2384 | Train Accuracy: 0.9400 | Validation Loss: 0.2536 | Validation Accuracy: 0.9466 | Validation Mean Precision: 0.8972 | Validation Mean Recall: 0.8735 | Validation Mean F1_score: 0.8848
2024-05-29 01:02:26 INFO: Epoch 147 | Train Loss: 0.2204 | Train Accuracy: 0.9432 | Validation Loss: 0.2689 | Validation Accuracy: 0.9408 | Validation Mean Precision: 0.8888 | Validation Mean Recall: 0.8755 | Validation Mean F1_score: 0.8808
2024-05-29 01:02:27 INFO: Epoch 148 | Train Loss: 0.2184 | Train Accuracy: 0.9441 | Validation Loss: 0.2586 | Validation Accuracy: 0.9423 | Validation Mean Precision: 0.8729 | Validation Mean Recall: 0.8793 | Validation Mean F1_score: 0.8736
2024-05-29 01:02:29 INFO: Epoch 149 | Train Loss: 0.2224 | Train Accuracy: 0.9430 | Validation Loss: 0.2547 | Validation Accuracy: 0.9425 | Validation Mean Precision: 0.8725 | Validation Mean Recall: 0.8788 | Validation Mean F1_score: 0.8726
2024-05-29 01:02:30 INFO: Epoch 150 | Train Loss: 0.2215 | Train Accuracy: 0.9454 | Validation Loss: 0.2538 | Validation Accuracy: 0.9435 | Validation Mean Precision: 0.8903 | Validation Mean Recall: 0.8740 | Validation Mean F1_score: 0.8812
2024-05-29 01:02:31 INFO: Early stopping at epoch 149 | Best epoch : 100
2024-05-29 01:02:31 INFO: Best Validation F1 Score (Macro): 0.8917
2024-05-29 01:02:31 INFO: Best Validation Recall (Macro): 0.8631
2024-05-29 01:02:31 INFO: Best Validation Precision (Macro): 0.9286
2024-05-29 01:02:31 INFO: Best Epoch: 100
2024-05-29 01:02:31 INFO: Infer Result:
2024-05-29 01:02:31 INFO: Prediction errors: 247
2024-05-29 01:02:31 INFO: Prediction error percentage: 4.73%
2024-05-29 01:02:31 INFO: Total samples: 5218
2024-05-29 01:02:31 INFO: Infer Result End:
2024-05-29 01:02:32 INFO: Class weights: tensor([21.1878, 3.1149, 0.7420, 0.4378], device='cuda:0')
2024-05-29 01:02:34 INFO: Epoch 001 | Train Loss: 0.6230 | Train Accuracy: 0.8188 | Validation Loss: 0.3941 | Validation Accuracy: 0.8261 | Validation Mean Precision: 0.7086 | Validation Mean Recall: 0.8409 | Validation Mean F1_score: 0.7566
2024-05-29 01:02:35 INFO: Epoch 002 | Train Loss: 0.3746 | Train Accuracy: 0.8786 | Validation Loss: 0.3428 | Validation Accuracy: 0.8807 | Validation Mean Precision: 0.7739 | Validation Mean Recall: 0.8528 | Validation Mean F1_score: 0.8073
2024-05-29 01:02:37 INFO: Epoch 003 | Train Loss: 0.3755 | Train Accuracy: 0.8800 | Validation Loss: 0.3365 | Validation Accuracy: 0.8793 | Validation Mean Precision: 0.7776 | Validation Mean Recall: 0.8531 | Validation Mean F1_score: 0.8095
2024-05-29 01:02:38 INFO: Epoch 004 | Train Loss: 0.3689 | Train Accuracy: 0.8843 | Validation Loss: 0.3382 | Validation Accuracy: 0.8790 | Validation Mean Precision: 0.7675 | Validation Mean Recall: 0.8547 | Validation Mean F1_score: 0.8040
2024-05-29 01:02:40 INFO: Epoch 005 | Train Loss: 0.3610 | Train Accuracy: 0.8857 | Validation Loss: 0.3346 | Validation Accuracy: 0.8898 | Validation Mean Precision: 0.8306 | Validation Mean Recall: 0.8497 | Validation Mean F1_score: 0.8378
2024-05-29 01:02:41 INFO: Epoch 006 | Train Loss: 0.3629 | Train Accuracy: 0.8899 | Validation Loss: 0.3527 | Validation Accuracy: 0.8948 | Validation Mean Precision: 0.7918 | Validation Mean Recall: 0.8539 | Validation Mean F1_score: 0.8099
2024-05-29 01:02:42 INFO: Epoch 007 | Train Loss: 0.3564 | Train Accuracy: 0.8890 | Validation Loss: 0.4176 | Validation Accuracy: 0.8773 | Validation Mean Precision: 0.7638 | Validation Mean Recall: 0.8255 | Validation Mean F1_score: 0.7698
2024-05-29 01:02:44 INFO: Epoch 008 | Train Loss: 0.3575 | Train Accuracy: 0.8914 | Validation Loss: 0.3340 | Validation Accuracy: 0.8946 | Validation Mean Precision: 0.7967 | Validation Mean Recall: 0.8548 | Validation Mean F1_score: 0.8191
2024-05-29 01:02:45 INFO: Epoch 009 | Train Loss: 0.3616 | Train Accuracy: 0.8893 | Validation Loss: 0.3304 | Validation Accuracy: 0.8896 | Validation Mean Precision: 0.8348 | Validation Mean Recall: 0.8549 | Validation Mean F1_score: 0.8437
2024-05-29 01:02:47 INFO: Epoch 010 | Train Loss: 0.3497 | Train Accuracy: 0.8881 | Validation Loss: 0.3684 | Validation Accuracy: 0.8807 | Validation Mean Precision: 0.7327 | Validation Mean Recall: 0.8472 | Validation Mean F1_score: 0.7700
2024-05-29 01:02:48 INFO: Epoch 011 | Train Loss: 0.3529 | Train Accuracy: 0.8885 | Validation Loss: 0.3257 | Validation Accuracy: 0.8979 | Validation Mean Precision: 0.8321 | Validation Mean Recall: 0.8566 | Validation Mean F1_score: 0.8434
2024-05-29 01:02:50 INFO: Epoch 012 | Train Loss: 0.3521 | Train Accuracy: 0.8906 | Validation Loss: 0.3237 | Validation Accuracy: 0.8977 | Validation Mean Precision: 0.8387 | Validation Mean Recall: 0.8607 | Validation Mean F1_score: 0.8485
2024-05-29 01:02:51 INFO: Epoch 013 | Train Loss: 0.3535 | Train Accuracy: 0.8934 | Validation Loss: 0.4121 | Validation Accuracy: 0.8991 | Validation Mean Precision: 0.8793 | Validation Mean Recall: 0.8274 | Validation Mean F1_score: 0.8467
2024-05-29 01:02:53 INFO: Epoch 014 | Train Loss: 0.3501 | Train Accuracy: 0.8945 | Validation Loss: 0.3446 | Validation Accuracy: 0.8955 | Validation Mean Precision: 0.7976 | Validation Mean Recall: 0.8575 | Validation Mean F1_score: 0.8168
2024-05-29 01:02:54 INFO: Epoch 015 | Train Loss: 0.3449 | Train Accuracy: 0.8937 | Validation Loss: 0.4116 | Validation Accuracy: 0.8819 | Validation Mean Precision: 0.8132 | Validation Mean Recall: 0.8347 | Validation Mean F1_score: 0.8073
2024-05-29 01:02:56 INFO: Epoch 016 | Train Loss: 0.3417 | Train Accuracy: 0.8954 | Validation Loss: 0.3427 | Validation Accuracy: 0.8939 | Validation Mean Precision: 0.7901 | Validation Mean Recall: 0.8548 | Validation Mean F1_score: 0.8130
2024-05-29 01:02:57 INFO: Epoch 017 | Train Loss: 0.3482 | Train Accuracy: 0.8916 | Validation Loss: 0.3341 | Validation Accuracy: 0.8960 | Validation Mean Precision: 0.8234 | Validation Mean Recall: 0.8584 | Validation Mean F1_score: 0.8379
2024-05-29 01:02:59 INFO: Epoch 018 | Train Loss: 0.3493 | Train Accuracy: 0.8918 | Validation Loss: 0.3313 | Validation Accuracy: 0.8678 | Validation Mean Precision: 0.7754 | Validation Mean Recall: 0.8562 | Validation Mean F1_score: 0.8102
2024-05-29 01:03:00 INFO: Epoch 019 | Train Loss: 0.3495 | Train Accuracy: 0.8912 | Validation Loss: 0.3546 | Validation Accuracy: 0.8977 | Validation Mean Precision: 0.8883 | Validation Mean Recall: 0.7999 | Validation Mean F1_score: 0.8297
2024-05-29 01:03:02 INFO: Epoch 020 | Train Loss: 0.3496 | Train Accuracy: 0.8928 | Validation Loss: 0.3410 | Validation Accuracy: 0.8814 | Validation Mean Precision: 0.7581 | Validation Mean Recall: 0.8599 | Validation Mean F1_score: 0.7982
2024-05-29 01:03:03 INFO: Epoch 021 | Train Loss: 0.3415 | Train Accuracy: 0.8946 | Validation Loss: 0.3203 | Validation Accuracy: 0.8987 | Validation Mean Precision: 0.8277 | Validation Mean Recall: 0.8585 | Validation Mean F1_score: 0.8414
2024-05-29 01:03:05 INFO: Epoch 022 | Train Loss: 0.3433 | Train Accuracy: 0.8942 | Validation Loss: 0.3252 | Validation Accuracy: 0.9025 | Validation Mean Precision: 0.8673 | Validation Mean Recall: 0.8499 | Validation Mean F1_score: 0.8583
2024-05-29 01:03:06 INFO: Epoch 023 | Train Loss: 0.3400 | Train Accuracy: 0.8917 | Validation Loss: 0.3357 | Validation Accuracy: 0.9018 | Validation Mean Precision: 0.8357 | Validation Mean Recall: 0.8502 | Validation Mean F1_score: 0.8394
2024-05-29 01:03:08 INFO: Epoch 024 | Train Loss: 0.3426 | Train Accuracy: 0.8960 | Validation Loss: 0.3205 | Validation Accuracy: 0.8924 | Validation Mean Precision: 0.8333 | Validation Mean Recall: 0.8609 | Validation Mean F1_score: 0.8443
2024-05-29 01:03:09 INFO: Epoch 025 | Train Loss: 0.3368 | Train Accuracy: 0.8960 | Validation Loss: 0.3230 | Validation Accuracy: 0.9023 | Validation Mean Precision: 0.8241 | Validation Mean Recall: 0.8590 | Validation Mean F1_score: 0.8384
2024-05-29 01:03:10 INFO: Epoch 026 | Train Loss: 0.3417 | Train Accuracy: 0.8957 | Validation Loss: 0.3641 | Validation Accuracy: 0.8402 | Validation Mean Precision: 0.7469 | Validation Mean Recall: 0.8519 | Validation Mean F1_score: 0.7881
2024-05-29 01:03:12 INFO: Epoch 027 | Train Loss: 0.3293 | Train Accuracy: 0.9018 | Validation Loss: 0.3141 | Validation Accuracy: 0.8955 | Validation Mean Precision: 0.8234 | Validation Mean Recall: 0.8672 | Validation Mean F1_score: 0.8432
2024-05-29 01:03:13 INFO: Epoch 028 | Train Loss: 0.3328 | Train Accuracy: 0.9007 | Validation Loss: 0.3713 | Validation Accuracy: 0.8529 | Validation Mean Precision: 0.7135 | Validation Mean Recall: 0.8502 | Validation Mean F1_score: 0.7624
2024-05-29 01:03:15 INFO: Epoch 029 | Train Loss: 0.3296 | Train Accuracy: 0.9051 | Validation Loss: 0.3009 | Validation Accuracy: 0.9114 | Validation Mean Precision: 0.8403 | Validation Mean Recall: 0.8750 | Validation Mean F1_score: 0.8561
2024-05-29 01:03:16 INFO: Epoch 030 | Train Loss: 0.3205 | Train Accuracy: 0.9056 | Validation Loss: 0.3173 | Validation Accuracy: 0.9080 | Validation Mean Precision: 0.8296 | Validation Mean Recall: 0.8585 | Validation Mean F1_score: 0.8380
2024-05-29 01:03:18 INFO: Epoch 031 | Train Loss: 0.3179 | Train Accuracy: 0.9112 | Validation Loss: 0.3199 | Validation Accuracy: 0.9140 | Validation Mean Precision: 0.8195 | Validation Mean Recall: 0.8617 | Validation Mean F1_score: 0.8299
2024-05-29 01:03:19 INFO: Epoch 032 | Train Loss: 0.3183 | Train Accuracy: 0.9083 | Validation Loss: 0.2977 | Validation Accuracy: 0.9051 | Validation Mean Precision: 0.8667 | Validation Mean Recall: 0.8705 | Validation Mean F1_score: 0.8680
2024-05-29 01:03:21 INFO: Epoch 033 | Train Loss: 0.3155 | Train Accuracy: 0.9120 | Validation Loss: 0.2921 | Validation Accuracy: 0.9284 | Validation Mean Precision: 0.8908 | Validation Mean Recall: 0.8707 | Validation Mean F1_score: 0.8800
2024-05-29 01:03:22 INFO: Epoch 034 | Train Loss: 0.2983 | Train Accuracy: 0.9138 | Validation Loss: 0.3168 | Validation Accuracy: 0.8816 | Validation Mean Precision: 0.7891 | Validation Mean Recall: 0.8734 | Validation Mean F1_score: 0.8254
2024-05-29 01:03:23 INFO: Epoch 035 | Train Loss: 0.3106 | Train Accuracy: 0.9117 | Validation Loss: 0.2900 | Validation Accuracy: 0.9310 | Validation Mean Precision: 0.8811 | Validation Mean Recall: 0.8843 | Validation Mean F1_score: 0.8816
2024-05-29 01:03:25 INFO: Epoch 036 | Train Loss: 0.3020 | Train Accuracy: 0.9173 | Validation Loss: 0.2761 | Validation Accuracy: 0.9226 | Validation Mean Precision: 0.8734 | Validation Mean Recall: 0.8803 | Validation Mean F1_score: 0.8751
2024-05-29 01:03:26 INFO: Epoch 037 | Train Loss: 0.2974 | Train Accuracy: 0.9162 | Validation Loss: 0.3555 | Validation Accuracy: 0.8989 | Validation Mean Precision: 0.9007 | Validation Mean Recall: 0.8045 | Validation Mean F1_score: 0.8344
2024-05-29 01:03:28 INFO: Epoch 038 | Train Loss: 0.2953 | Train Accuracy: 0.9161 | Validation Loss: 0.2763 | Validation Accuracy: 0.9310 | Validation Mean Precision: 0.8731 | Validation Mean Recall: 0.8896 | Validation Mean F1_score: 0.8803
2024-05-29 01:03:30 INFO: Epoch 039 | Train Loss: 0.2964 | Train Accuracy: 0.9166 | Validation Loss: 0.2851 | Validation Accuracy: 0.9329 | Validation Mean Precision: 0.9007 | Validation Mean Recall: 0.8588 | Validation Mean F1_score: 0.8754
2024-05-29 01:03:32 INFO: Epoch 040 | Train Loss: 0.2976 | Train Accuracy: 0.9191 | Validation Loss: 0.2695 | Validation Accuracy: 0.9281 | Validation Mean Precision: 0.8536 | Validation Mean Recall: 0.8890 | Validation Mean F1_score: 0.8693
2024-05-29 01:03:33 INFO: Epoch 041 | Train Loss: 0.2938 | Train Accuracy: 0.9177 | Validation Loss: 0.2826 | Validation Accuracy: 0.9142 | Validation Mean Precision: 0.8704 | Validation Mean Recall: 0.8789 | Validation Mean F1_score: 0.8742
2024-05-29 01:03:35 INFO: Epoch 042 | Train Loss: 0.2920 | Train Accuracy: 0.9186 | Validation Loss: 0.2732 | Validation Accuracy: 0.9126 | Validation Mean Precision: 0.8285 | Validation Mean Recall: 0.8821 | Validation Mean F1_score: 0.8523
2024-05-29 01:03:36 INFO: Epoch 043 | Train Loss: 0.2856 | Train Accuracy: 0.9218 | Validation Loss: 0.3002 | Validation Accuracy: 0.8833 | Validation Mean Precision: 0.8300 | Validation Mean Recall: 0.8422 | Validation Mean F1_score: 0.8237
2024-05-29 01:03:38 INFO: Epoch 044 | Train Loss: 0.2905 | Train Accuracy: 0.9187 | Validation Loss: 0.2734 | Validation Accuracy: 0.9166 | Validation Mean Precision: 0.8190 | Validation Mean Recall: 0.8840 | Validation Mean F1_score: 0.8467
2024-05-29 01:03:40 INFO: Epoch 045 | Train Loss: 0.2862 | Train Accuracy: 0.9202 | Validation Loss: 0.2652 | Validation Accuracy: 0.9229 | Validation Mean Precision: 0.8612 | Validation Mean Recall: 0.8824 | Validation Mean F1_score: 0.8696
2024-05-29 01:03:41 INFO: Epoch 046 | Train Loss: 0.2861 | Train Accuracy: 0.9209 | Validation Loss: 0.2617 | Validation Accuracy: 0.9264 | Validation Mean Precision: 0.8644 | Validation Mean Recall: 0.8890 | Validation Mean F1_score: 0.8760
2024-05-29 01:03:43 INFO: Epoch 047 | Train Loss: 0.2799 | Train Accuracy: 0.9230 | Validation Loss: 0.2645 | Validation Accuracy: 0.9219 | Validation Mean Precision: 0.8477 | Validation Mean Recall: 0.8874 | Validation Mean F1_score: 0.8660
2024-05-29 01:03:45 INFO: Epoch 048 | Train Loss: 0.2787 | Train Accuracy: 0.9235 | Validation Loss: 0.2699 | Validation Accuracy: 0.9365 | Validation Mean Precision: 0.8975 | Validation Mean Recall: 0.8880 | Validation Mean F1_score: 0.8925
2024-05-29 01:03:46 INFO: Epoch 049 | Train Loss: 0.2814 | Train Accuracy: 0.9218 | Validation Loss: 0.2767 | Validation Accuracy: 0.9274 | Validation Mean Precision: 0.8991 | Validation Mean Recall: 0.8748 | Validation Mean F1_score: 0.8857
2024-05-29 01:03:48 INFO: Epoch 050 | Train Loss: 0.2829 | Train Accuracy: 0.9229 | Validation Loss: 0.2670 | Validation Accuracy: 0.9329 | Validation Mean Precision: 0.8791 | Validation Mean Recall: 0.8910 | Validation Mean F1_score: 0.8839
2024-05-29 01:03:50 INFO: Epoch 051 | Train Loss: 0.2736 | Train Accuracy: 0.9251 | Validation Loss: 0.2754 | Validation Accuracy: 0.9368 | Validation Mean Precision: 0.8595 | Validation Mean Recall: 0.8903 | Validation Mean F1_score: 0.8710
2024-05-29 01:03:51 INFO: Epoch 052 | Train Loss: 0.2820 | Train Accuracy: 0.9217 | Validation Loss: 0.2783 | Validation Accuracy: 0.9322 | Validation Mean Precision: 0.8725 | Validation Mean Recall: 0.8903 | Validation Mean F1_score: 0.8790
2024-05-29 01:03:53 INFO: Epoch 053 | Train Loss: 0.2775 | Train Accuracy: 0.9254 | Validation Loss: 0.2740 | Validation Accuracy: 0.9185 | Validation Mean Precision: 0.8698 | Validation Mean Recall: 0.8618 | Validation Mean F1_score: 0.8579
2024-05-29 01:03:54 INFO: Epoch 054 | Train Loss: 0.2703 | Train Accuracy: 0.9263 | Validation Loss: 0.2961 | Validation Accuracy: 0.9118 | Validation Mean Precision: 0.8948 | Validation Mean Recall: 0.8543 | Validation Mean F1_score: 0.8696
2024-05-29 01:03:56 INFO: Epoch 055 | Train Loss: 0.2801 | Train Accuracy: 0.9256 | Validation Loss: 0.2665 | Validation Accuracy: 0.9324 | Validation Mean Precision: 0.8374 | Validation Mean Recall: 0.8936 | Validation Mean F1_score: 0.8596
2024-05-29 01:03:58 INFO: Epoch 056 | Train Loss: 0.2735 | Train Accuracy: 0.9246 | Validation Loss: 0.2576 | Validation Accuracy: 0.9403 | Validation Mean Precision: 0.9003 | Validation Mean Recall: 0.8925 | Validation Mean F1_score: 0.8962
2024-05-29 01:03:59 INFO: Epoch 057 | Train Loss: 0.2720 | Train Accuracy: 0.9288 | Validation Loss: 0.2678 | Validation Accuracy: 0.9138 | Validation Mean Precision: 0.8187 | Validation Mean Recall: 0.8812 | Validation Mean F1_score: 0.8446
2024-05-29 01:04:01 INFO: Epoch 058 | Train Loss: 0.2688 | Train Accuracy: 0.9264 | Validation Loss: 0.2632 | Validation Accuracy: 0.9219 | Validation Mean Precision: 0.8774 | Validation Mean Recall: 0.8900 | Validation Mean F1_score: 0.8835
2024-05-29 01:04:02 INFO: Epoch 059 | Train Loss: 0.2655 | Train Accuracy: 0.9280 | Validation Loss: 0.2650 | Validation Accuracy: 0.9305 | Validation Mean Precision: 0.8767 | Validation Mean Recall: 0.8828 | Validation Mean F1_score: 0.8776
2024-05-29 01:04:04 INFO: Epoch 060 | Train Loss: 0.2720 | Train Accuracy: 0.9267 | Validation Loss: 0.2806 | Validation Accuracy: 0.9322 | Validation Mean Precision: 0.8414 | Validation Mean Recall: 0.8895 | Validation Mean F1_score: 0.8588
2024-05-29 01:04:05 INFO: Epoch 061 | Train Loss: 0.2681 | Train Accuracy: 0.9302 | Validation Loss: 0.2590 | Validation Accuracy: 0.9269 | Validation Mean Precision: 0.8832 | Validation Mean Recall: 0.8881 | Validation Mean F1_score: 0.8855
2024-05-29 01:04:06 INFO: Epoch 062 | Train Loss: 0.2662 | Train Accuracy: 0.9279 | Validation Loss: 0.2689 | Validation Accuracy: 0.9391 | Validation Mean Precision: 0.8486 | Validation Mean Recall: 0.8925 | Validation Mean F1_score: 0.8635
2024-05-29 01:04:08 INFO: Epoch 063 | Train Loss: 0.2689 | Train Accuracy: 0.9278 | Validation Loss: 0.2622 | Validation Accuracy: 0.9413 | Validation Mean Precision: 0.8924 | Validation Mean Recall: 0.8973 | Validation Mean F1_score: 0.8934
2024-05-29 01:04:09 INFO: Epoch 064 | Train Loss: 0.2718 | Train Accuracy: 0.9299 | Validation Loss: 0.2504 | Validation Accuracy: 0.9365 | Validation Mean Precision: 0.8744 | Validation Mean Recall: 0.8976 | Validation Mean F1_score: 0.8846
2024-05-29 01:04:11 INFO: Epoch 065 | Train Loss: 0.2694 | Train Accuracy: 0.9299 | Validation Loss: 0.2519 | Validation Accuracy: 0.9298 | Validation Mean Precision: 0.8752 | Validation Mean Recall: 0.8913 | Validation Mean F1_score: 0.8819
2024-05-29 01:04:12 INFO: Epoch 066 | Train Loss: 0.2643 | Train Accuracy: 0.9305 | Validation Loss: 0.2553 | Validation Accuracy: 0.9181 | Validation Mean Precision: 0.8610 | Validation Mean Recall: 0.8899 | Validation Mean F1_score: 0.8747
2024-05-29 01:04:13 INFO: Epoch 067 | Train Loss: 0.2688 | Train Accuracy: 0.9282 | Validation Loss: 0.2536 | Validation Accuracy: 0.9303 | Validation Mean Precision: 0.8270 | Validation Mean Recall: 0.8939 | Validation Mean F1_score: 0.8547
2024-05-29 01:04:15 INFO: Epoch 068 | Train Loss: 0.2645 | Train Accuracy: 0.9294 | Validation Loss: 0.2642 | Validation Accuracy: 0.9166 | Validation Mean Precision: 0.8239 | Validation Mean Recall: 0.8882 | Validation Mean F1_score: 0.8518
2024-05-29 01:04:16 INFO: Epoch 069 | Train Loss: 0.2713 | Train Accuracy: 0.9269 | Validation Loss: 0.2617 | Validation Accuracy: 0.9197 | Validation Mean Precision: 0.8426 | Validation Mean Recall: 0.8934 | Validation Mean F1_score: 0.8652
2024-05-29 01:04:18 INFO: Epoch 070 | Train Loss: 0.2682 | Train Accuracy: 0.9293 | Validation Loss: 0.2513 | Validation Accuracy: 0.9267 | Validation Mean Precision: 0.8489 | Validation Mean Recall: 0.8937 | Validation Mean F1_score: 0.8694
2024-05-29 01:04:19 INFO: Epoch 071 | Train Loss: 0.2711 | Train Accuracy: 0.9255 | Validation Loss: 0.3099 | Validation Accuracy: 0.8951 | Validation Mean Precision: 0.8093 | Validation Mean Recall: 0.8795 | Validation Mean F1_score: 0.8399
2024-05-29 01:04:20 INFO: Epoch 072 | Train Loss: 0.2646 | Train Accuracy: 0.9293 | Validation Loss: 0.2576 | Validation Accuracy: 0.9272 | Validation Mean Precision: 0.8917 | Validation Mean Recall: 0.8741 | Validation Mean F1_score: 0.8798
2024-05-29 01:04:22 INFO: Epoch 073 | Train Loss: 0.2610 | Train Accuracy: 0.9309 | Validation Loss: 0.2520 | Validation Accuracy: 0.9202 | Validation Mean Precision: 0.8384 | Validation Mean Recall: 0.8868 | Validation Mean F1_score: 0.8607
2024-05-29 01:04:23 INFO: Epoch 074 | Train Loss: 0.2656 | Train Accuracy: 0.9324 | Validation Loss: 0.2593 | Validation Accuracy: 0.9432 | Validation Mean Precision: 0.8928 | Validation Mean Recall: 0.8934 | Validation Mean F1_score: 0.8917
2024-05-29 01:04:25 INFO: Epoch 075 | Train Loss: 0.2658 | Train Accuracy: 0.9341 | Validation Loss: 0.2527 | Validation Accuracy: 0.9320 | Validation Mean Precision: 0.8319 | Validation Mean Recall: 0.8893 | Validation Mean F1_score: 0.8559
2024-05-29 01:04:26 INFO: Epoch 076 | Train Loss: 0.2576 | Train Accuracy: 0.9326 | Validation Loss: 0.2565 | Validation Accuracy: 0.9298 | Validation Mean Precision: 0.8599 | Validation Mean Recall: 0.8925 | Validation Mean F1_score: 0.8720
2024-05-29 01:04:28 INFO: Epoch 077 | Train Loss: 0.2562 | Train Accuracy: 0.9329 | Validation Loss: 0.2490 | Validation Accuracy: 0.9399 | Validation Mean Precision: 0.8504 | Validation Mean Recall: 0.8994 | Validation Mean F1_score: 0.8703
2024-05-29 01:04:29 INFO: Epoch 078 | Train Loss: 0.2618 | Train Accuracy: 0.9305 | Validation Loss: 0.2480 | Validation Accuracy: 0.9291 | Validation Mean Precision: 0.8343 | Validation Mean Recall: 0.8897 | Validation Mean F1_score: 0.8582
2024-05-29 01:04:31 INFO: Epoch 079 | Train Loss: 0.2617 | Train Accuracy: 0.9349 | Validation Loss: 0.2889 | Validation Accuracy: 0.8840 | Validation Mean Precision: 0.7988 | Validation Mean Recall: 0.8796 | Validation Mean F1_score: 0.8339
2024-05-29 01:04:32 INFO: Epoch 080 | Train Loss: 0.2579 | Train Accuracy: 0.9344 | Validation Loss: 0.2594 | Validation Accuracy: 0.9279 | Validation Mean Precision: 0.8084 | Validation Mean Recall: 0.8874 | Validation Mean F1_score: 0.8391
2024-05-29 01:04:34 INFO: Epoch 081 | Train Loss: 0.2566 | Train Accuracy: 0.9348 | Validation Loss: 0.2457 | Validation Accuracy: 0.9288 | Validation Mean Precision: 0.8346 | Validation Mean Recall: 0.8909 | Validation Mean F1_score: 0.8589
2024-05-29 01:04:35 INFO: Epoch 082 | Train Loss: 0.2557 | Train Accuracy: 0.9325 | Validation Loss: 0.2460 | Validation Accuracy: 0.9418 | Validation Mean Precision: 0.8923 | Validation Mean Recall: 0.8923 | Validation Mean F1_score: 0.8915
2024-05-29 01:04:37 INFO: Epoch 083 | Train Loss: 0.2624 | Train Accuracy: 0.9323 | Validation Loss: 0.2452 | Validation Accuracy: 0.9406 | Validation Mean Precision: 0.8830 | Validation Mean Recall: 0.9006 | Validation Mean F1_score: 0.8908
2024-05-29 01:04:38 INFO: Epoch 084 | Train Loss: 0.2540 | Train Accuracy: 0.9347 | Validation Loss: 0.2938 | Validation Accuracy: 0.9118 | Validation Mean Precision: 0.8918 | Validation Mean Recall: 0.8535 | Validation Mean F1_score: 0.8709
2024-05-29 01:04:40 INFO: Epoch 085 | Train Loss: 0.2563 | Train Accuracy: 0.9332 | Validation Loss: 0.2402 | Validation Accuracy: 0.9415 | Validation Mean Precision: 0.8889 | Validation Mean Recall: 0.8983 | Validation Mean F1_score: 0.8928
2024-05-29 01:04:41 INFO: Epoch 086 | Train Loss: 0.2519 | Train Accuracy: 0.9367 | Validation Loss: 0.2536 | Validation Accuracy: 0.9451 | Validation Mean Precision: 0.8811 | Validation Mean Recall: 0.8987 | Validation Mean F1_score: 0.8873
2024-05-29 01:04:43 INFO: Epoch 087 | Train Loss: 0.2553 | Train Accuracy: 0.9340 | Validation Loss: 0.2428 | Validation Accuracy: 0.9418 | Validation Mean Precision: 0.8774 | Validation Mean Recall: 0.8980 | Validation Mean F1_score: 0.8869
2024-05-29 01:04:44 INFO: Epoch 088 | Train Loss: 0.2584 | Train Accuracy: 0.9344 | Validation Loss: 0.2470 | Validation Accuracy: 0.9248 | Validation Mean Precision: 0.8443 | Validation Mean Recall: 0.8950 | Validation Mean F1_score: 0.8673
2024-05-29 01:04:45 INFO: Epoch 089 | Train Loss: 0.2556 | Train Accuracy: 0.9326 | Validation Loss: 0.2541 | Validation Accuracy: 0.9456 | Validation Mean Precision: 0.8912 | Validation Mean Recall: 0.8988 | Validation Mean F1_score: 0.8931
2024-05-29 01:04:47 INFO: Epoch 090 | Train Loss: 0.2609 | Train Accuracy: 0.9334 | Validation Loss: 0.2643 | Validation Accuracy: 0.9219 | Validation Mean Precision: 0.8196 | Validation Mean Recall: 0.8870 | Validation Mean F1_score: 0.8441
2024-05-29 01:04:48 INFO: Epoch 091 | Train Loss: 0.2539 | Train Accuracy: 0.9358 | Validation Loss: 0.2637 | Validation Accuracy: 0.9432 | Validation Mean Precision: 0.9142 | Validation Mean Recall: 0.8870 | Validation Mean F1_score: 0.8993
2024-05-29 01:04:49 INFO: Epoch 092 | Train Loss: 0.2541 | Train Accuracy: 0.9374 | Validation Loss: 0.2457 | Validation Accuracy: 0.9303 | Validation Mean Precision: 0.8538 | Validation Mean Recall: 0.8972 | Validation Mean F1_score: 0.8726
2024-05-29 01:04:51 INFO: Epoch 093 | Train Loss: 0.2538 | Train Accuracy: 0.9348 | Validation Loss: 0.2574 | Validation Accuracy: 0.9317 | Validation Mean Precision: 0.8178 | Validation Mean Recall: 0.8883 | Validation Mean F1_score: 0.8441
2024-05-29 01:04:52 INFO: Epoch 094 | Train Loss: 0.2570 | Train Accuracy: 0.9333 | Validation Loss: 0.2707 | Validation Accuracy: 0.9454 | Validation Mean Precision: 0.9062 | Validation Mean Recall: 0.8899 | Validation Mean F1_score: 0.8964
2024-05-29 01:04:54 INFO: Epoch 095 | Train Loss: 0.2504 | Train Accuracy: 0.9367 | Validation Loss: 0.2614 | Validation Accuracy: 0.9078 | Validation Mean Precision: 0.8376 | Validation Mean Recall: 0.8897 | Validation Mean F1_score: 0.8612
2024-05-29 01:04:55 INFO: Epoch 096 | Train Loss: 0.2487 | Train Accuracy: 0.9381 | Validation Loss: 0.2437 | Validation Accuracy: 0.9334 | Validation Mean Precision: 0.8751 | Validation Mean Recall: 0.9001 | Validation Mean F1_score: 0.8870
2024-05-29 01:04:56 INFO: Epoch 097 | Train Loss: 0.2527 | Train Accuracy: 0.9362 | Validation Loss: 0.2728 | Validation Accuracy: 0.9370 | Validation Mean Precision: 0.8175 | Validation Mean Recall: 0.8876 | Validation Mean F1_score: 0.8417
2024-05-29 01:04:58 INFO: Epoch 098 | Train Loss: 0.2546 | Train Accuracy: 0.9374 | Validation Loss: 0.2435 | Validation Accuracy: 0.9499 | Validation Mean Precision: 0.8993 | Validation Mean Recall: 0.9050 | Validation Mean F1_score: 0.9010
2024-05-29 01:04:59 INFO: Epoch 099 | Train Loss: 0.2485 | Train Accuracy: 0.9376 | Validation Loss: 0.2409 | Validation Accuracy: 0.9449 | Validation Mean Precision: 0.9093 | Validation Mean Recall: 0.8978 | Validation Mean F1_score: 0.9021
2024-05-29 01:05:01 INFO: Epoch 100 | Train Loss: 0.2512 | Train Accuracy: 0.9371 | Validation Loss: 0.2515 | Validation Accuracy: 0.9322 | Validation Mean Precision: 0.8224 | Validation Mean Recall: 0.8932 | Validation Mean F1_score: 0.8509
2024-05-29 01:05:02 INFO: Epoch 101 | Train Loss: 0.2460 | Train Accuracy: 0.9393 | Validation Loss: 0.2383 | Validation Accuracy: 0.9375 | Validation Mean Precision: 0.8841 | Validation Mean Recall: 0.9019 | Validation Mean F1_score: 0.8926
2024-05-29 01:05:04 INFO: Epoch 102 | Train Loss: 0.2500 | Train Accuracy: 0.9375 | Validation Loss: 0.2340 | Validation Accuracy: 0.9384 | Validation Mean Precision: 0.8677 | Validation Mean Recall: 0.9005 | Validation Mean F1_score: 0.8822
2024-05-29 01:05:05 INFO: Epoch 103 | Train Loss: 0.2506 | Train Accuracy: 0.9370 | Validation Loss: 0.2504 | Validation Accuracy: 0.9451 | Validation Mean Precision: 0.8845 | Validation Mean Recall: 0.8995 | Validation Mean F1_score: 0.8897
2024-05-29 01:05:07 INFO: Epoch 104 | Train Loss: 0.2510 | Train Accuracy: 0.9368 | Validation Loss: 0.2443 | Validation Accuracy: 0.9276 | Validation Mean Precision: 0.8389 | Validation Mean Recall: 0.8981 | Validation Mean F1_score: 0.8649
2024-05-29 01:05:08 INFO: Epoch 105 | Train Loss: 0.2527 | Train Accuracy: 0.9376 | Validation Loss: 0.2544 | Validation Accuracy: 0.9334 | Validation Mean Precision: 0.8985 | Validation Mean Recall: 0.8926 | Validation Mean F1_score: 0.8944
2024-05-29 01:05:09 INFO: Epoch 106 | Train Loss: 0.2500 | Train Accuracy: 0.9364 | Validation Loss: 0.2334 | Validation Accuracy: 0.9423 | Validation Mean Precision: 0.8886 | Validation Mean Recall: 0.9002 | Validation Mean F1_score: 0.8940
2024-05-29 01:05:11 INFO: Epoch 107 | Train Loss: 0.2552 | Train Accuracy: 0.9357 | Validation Loss: 0.2488 | Validation Accuracy: 0.9257 | Validation Mean Precision: 0.8337 | Validation Mean Recall: 0.8966 | Validation Mean F1_score: 0.8611
2024-05-29 01:05:12 INFO: Epoch 108 | Train Loss: 0.2436 | Train Accuracy: 0.9412 | Validation Loss: 0.2525 | Validation Accuracy: 0.9377 | Validation Mean Precision: 0.8642 | Validation Mean Recall: 0.8972 | Validation Mean F1_score: 0.8751
2024-05-29 01:05:14 INFO: Epoch 109 | Train Loss: 0.2450 | Train Accuracy: 0.9388 | Validation Loss: 0.2574 | Validation Accuracy: 0.9348 | Validation Mean Precision: 0.8378 | Validation Mean Recall: 0.8865 | Validation Mean F1_score: 0.8565
2024-05-29 01:05:15 INFO: Epoch 110 | Train Loss: 0.2485 | Train Accuracy: 0.9380 | Validation Loss: 0.2350 | Validation Accuracy: 0.9324 | Validation Mean Precision: 0.8607 | Validation Mean Recall: 0.8979 | Validation Mean F1_score: 0.8778
2024-05-29 01:05:16 INFO: Epoch 111 | Train Loss: 0.2430 | Train Accuracy: 0.9386 | Validation Loss: 0.2396 | Validation Accuracy: 0.9370 | Validation Mean Precision: 0.8582 | Validation Mean Recall: 0.8986 | Validation Mean F1_score: 0.8758
2024-05-29 01:05:18 INFO: Epoch 112 | Train Loss: 0.2450 | Train Accuracy: 0.9401 | Validation Loss: 0.2348 | Validation Accuracy: 0.9483 | Validation Mean Precision: 0.9050 | Validation Mean Recall: 0.9019 | Validation Mean F1_score: 0.9032
2024-05-29 01:05:19 INFO: Epoch 113 | Train Loss: 0.2453 | Train Accuracy: 0.9393 | Validation Loss: 0.2299 | Validation Accuracy: 0.9478 | Validation Mean Precision: 0.9008 | Validation Mean Recall: 0.9071 | Validation Mean F1_score: 0.9035
2024-05-29 01:05:21 INFO: Epoch 114 | Train Loss: 0.2426 | Train Accuracy: 0.9391 | Validation Loss: 0.2407 | Validation Accuracy: 0.9459 | Validation Mean Precision: 0.8603 | Validation Mean Recall: 0.9017 | Validation Mean F1_score: 0.8755
2024-05-29 01:05:22 INFO: Epoch 115 | Train Loss: 0.2450 | Train Accuracy: 0.9390 | Validation Loss: 0.2473 | Validation Accuracy: 0.9336 | Validation Mean Precision: 0.8894 | Validation Mean Recall: 0.8754 | Validation Mean F1_score: 0.8798
2024-05-29 01:05:23 INFO: Epoch 116 | Train Loss: 0.2412 | Train Accuracy: 0.9404 | Validation Loss: 0.2356 | Validation Accuracy: 0.9461 | Validation Mean Precision: 0.8769 | Validation Mean Recall: 0.9003 | Validation Mean F1_score: 0.8863
2024-05-29 01:05:25 INFO: Epoch 117 | Train Loss: 0.2419 | Train Accuracy: 0.9392 | Validation Loss: 0.2348 | Validation Accuracy: 0.9315 | Validation Mean Precision: 0.8703 | Validation Mean Recall: 0.8954 | Validation Mean F1_score: 0.8820
2024-05-29 01:05:26 INFO: Epoch 118 | Train Loss: 0.2409 | Train Accuracy: 0.9394 | Validation Loss: 0.2333 | Validation Accuracy: 0.9430 | Validation Mean Precision: 0.8961 | Validation Mean Recall: 0.8900 | Validation Mean F1_score: 0.8926
2024-05-29 01:05:27 INFO: Epoch 119 | Train Loss: 0.2395 | Train Accuracy: 0.9397 | Validation Loss: 0.2334 | Validation Accuracy: 0.9432 | Validation Mean Precision: 0.8885 | Validation Mean Recall: 0.9005 | Validation Mean F1_score: 0.8940
2024-05-29 01:05:29 INFO: Epoch 120 | Train Loss: 0.2379 | Train Accuracy: 0.9411 | Validation Loss: 0.2319 | Validation Accuracy: 0.9379 | Validation Mean Precision: 0.8558 | Validation Mean Recall: 0.8983 | Validation Mean F1_score: 0.8747
2024-05-29 01:05:30 INFO: Epoch 121 | Train Loss: 0.2440 | Train Accuracy: 0.9397 | Validation Loss: 0.2303 | Validation Accuracy: 0.9391 | Validation Mean Precision: 0.9018 | Validation Mean Recall: 0.8980 | Validation Mean F1_score: 0.8995
2024-05-29 01:05:31 INFO: Epoch 122 | Train Loss: 0.2410 | Train Accuracy: 0.9395 | Validation Loss: 0.2416 | Validation Accuracy: 0.9494 | Validation Mean Precision: 0.8874 | Validation Mean Recall: 0.8995 | Validation Mean F1_score: 0.8906
2024-05-29 01:05:33 INFO: Epoch 123 | Train Loss: 0.2388 | Train Accuracy: 0.9400 | Validation Loss: 0.2333 | Validation Accuracy: 0.9516 | Validation Mean Precision: 0.8943 | Validation Mean Recall: 0.9036 | Validation Mean F1_score: 0.8971
2024-05-29 01:05:34 INFO: Epoch 124 | Train Loss: 0.2442 | Train Accuracy: 0.9407 | Validation Loss: 0.2335 | Validation Accuracy: 0.9418 | Validation Mean Precision: 0.8646 | Validation Mean Recall: 0.9003 | Validation Mean F1_score: 0.8805
2024-05-29 01:05:35 INFO: Epoch 125 | Train Loss: 0.2356 | Train Accuracy: 0.9429 | Validation Loss: 0.2293 | Validation Accuracy: 0.9363 | Validation Mean Precision: 0.8749 | Validation Mean Recall: 0.9021 | Validation Mean F1_score: 0.8872
2024-05-29 01:05:37 INFO: Epoch 126 | Train Loss: 0.2379 | Train Accuracy: 0.9382 | Validation Loss: 0.2344 | Validation Accuracy: 0.9444 | Validation Mean Precision: 0.8703 | Validation Mean Recall: 0.9002 | Validation Mean F1_score: 0.8834
2024-05-29 01:05:38 INFO: Epoch 127 | Train Loss: 0.2384 | Train Accuracy: 0.9420 | Validation Loss: 0.2281 | Validation Accuracy: 0.9408 | Validation Mean Precision: 0.8800 | Validation Mean Recall: 0.9004 | Validation Mean F1_score: 0.8892
2024-05-29 01:05:40 INFO: Epoch 128 | Train Loss: 0.2382 | Train Accuracy: 0.9422 | Validation Loss: 0.2430 | Validation Accuracy: 0.9480 | Validation Mean Precision: 0.9093 | Validation Mean Recall: 0.8987 | Validation Mean F1_score: 0.9022
2024-05-29 01:05:41 INFO: Epoch 129 | Train Loss: 0.2411 | Train Accuracy: 0.9413 | Validation Loss: 0.2267 | Validation Accuracy: 0.9423 | Validation Mean Precision: 0.8863 | Validation Mean Recall: 0.9044 | Validation Mean F1_score: 0.8948
2024-05-29 01:05:42 INFO: Epoch 130 | Train Loss: 0.2401 | Train Accuracy: 0.9397 | Validation Loss: 0.2340 | Validation Accuracy: 0.9353 | Validation Mean Precision: 0.8694 | Validation Mean Recall: 0.8974 | Validation Mean F1_score: 0.8809
2024-05-29 01:05:44 INFO: Epoch 131 | Train Loss: 0.2399 | Train Accuracy: 0.9400 | Validation Loss: 0.2628 | Validation Accuracy: 0.9346 | Validation Mean Precision: 0.8641 | Validation Mean Recall: 0.8938 | Validation Mean F1_score: 0.8763
2024-05-29 01:05:45 INFO: Epoch 132 | Train Loss: 0.2416 | Train Accuracy: 0.9410 | Validation Loss: 0.2332 | Validation Accuracy: 0.9523 | Validation Mean Precision: 0.9088 | Validation Mean Recall: 0.9019 | Validation Mean F1_score: 0.9047
2024-05-29 01:05:47 INFO: Epoch 133 | Train Loss: 0.2354 | Train Accuracy: 0.9399 | Validation Loss: 0.2508 | Validation Accuracy: 0.9449 | Validation Mean Precision: 0.8577 | Validation Mean Recall: 0.8996 | Validation Mean F1_score: 0.8727
2024-05-29 01:05:48 INFO: Epoch 134 | Train Loss: 0.2424 | Train Accuracy: 0.9403 | Validation Loss: 0.2310 | Validation Accuracy: 0.9360 | Validation Mean Precision: 0.8762 | Validation Mean Recall: 0.9007 | Validation Mean F1_score: 0.8873
2024-05-29 01:05:50 INFO: Epoch 135 | Train Loss: 0.2397 | Train Accuracy: 0.9411 | Validation Loss: 0.2372 | Validation Accuracy: 0.9449 | Validation Mean Precision: 0.8788 | Validation Mean Recall: 0.9016 | Validation Mean F1_score: 0.8888
2024-05-29 01:05:51 INFO: Epoch 136 | Train Loss: 0.2378 | Train Accuracy: 0.9414 | Validation Loss: 0.2496 | Validation Accuracy: 0.9243 | Validation Mean Precision: 0.8301 | Validation Mean Recall: 0.8939 | Validation Mean F1_score: 0.8578
2024-05-29 01:05:53 INFO: Epoch 137 | Train Loss: 0.2341 | Train Accuracy: 0.9442 | Validation Loss: 0.2389 | Validation Accuracy: 0.9487 | Validation Mean Precision: 0.8830 | Validation Mean Recall: 0.9058 | Validation Mean F1_score: 0.8911
2024-05-29 01:05:54 INFO: Epoch 138 | Train Loss: 0.2340 | Train Accuracy: 0.9429 | Validation Loss: 0.2345 | Validation Accuracy: 0.9358 | Validation Mean Precision: 0.8733 | Validation Mean Recall: 0.8916 | Validation Mean F1_score: 0.8820
2024-05-29 01:05:55 INFO: Epoch 139 | Train Loss: 0.2312 | Train Accuracy: 0.9432 | Validation Loss: 0.2445 | Validation Accuracy: 0.9497 | Validation Mean Precision: 0.8943 | Validation Mean Recall: 0.9006 | Validation Mean F1_score: 0.8951
2024-05-29 01:05:57 INFO: Epoch 140 | Train Loss: 0.2446 | Train Accuracy: 0.9409 | Validation Loss: 0.2427 | Validation Accuracy: 0.9444 | Validation Mean Precision: 0.8703 | Validation Mean Recall: 0.9028 | Validation Mean F1_score: 0.8839
2024-05-29 01:05:58 INFO: Epoch 141 | Train Loss: 0.2346 | Train Accuracy: 0.9425 | Validation Loss: 0.2412 | Validation Accuracy: 0.9408 | Validation Mean Precision: 0.9138 | Validation Mean Recall: 0.8791 | Validation Mean F1_score: 0.8943
2024-05-29 01:06:00 INFO: Epoch 142 | Train Loss: 0.2318 | Train Accuracy: 0.9446 | Validation Loss: 0.2428 | Validation Accuracy: 0.9255 | Validation Mean Precision: 0.8446 | Validation Mean Recall: 0.8889 | Validation Mean F1_score: 0.8619
2024-05-29 01:06:01 INFO: Epoch 143 | Train Loss: 0.2327 | Train Accuracy: 0.9433 | Validation Loss: 0.2254 | Validation Accuracy: 0.9480 | Validation Mean Precision: 0.8936 | Validation Mean Recall: 0.9038 | Validation Mean F1_score: 0.8979
2024-05-29 01:06:03 INFO: Epoch 144 | Train Loss: 0.2414 | Train Accuracy: 0.9421 | Validation Loss: 0.2236 | Validation Accuracy: 0.9420 | Validation Mean Precision: 0.8841 | Validation Mean Recall: 0.9018 | Validation Mean F1_score: 0.8921
2024-05-29 01:06:04 INFO: Epoch 145 | Train Loss: 0.2356 | Train Accuracy: 0.9423 | Validation Loss: 0.2346 | Validation Accuracy: 0.9370 | Validation Mean Precision: 0.8650 | Validation Mean Recall: 0.9031 | Validation Mean F1_score: 0.8818
2024-05-29 01:06:06 INFO: Epoch 146 | Train Loss: 0.2340 | Train Accuracy: 0.9427 | Validation Loss: 0.2265 | Validation Accuracy: 0.9475 | Validation Mean Precision: 0.8958 | Validation Mean Recall: 0.9004 | Validation Mean F1_score: 0.8976
2024-05-29 01:06:07 INFO: Epoch 147 | Train Loss: 0.2277 | Train Accuracy: 0.9432 | Validation Loss: 0.3076 | Validation Accuracy: 0.9152 | Validation Mean Precision: 0.8523 | Validation Mean Recall: 0.8642 | Validation Mean F1_score: 0.8505
2024-05-29 01:06:09 INFO: Epoch 148 | Train Loss: 0.2410 | Train Accuracy: 0.9401 | Validation Loss: 0.2299 | Validation Accuracy: 0.9528 | Validation Mean Precision: 0.9296 | Validation Mean Recall: 0.8966 | Validation Mean F1_score: 0.9120
2024-05-29 01:06:10 INFO: Epoch 149 | Train Loss: 0.2286 | Train Accuracy: 0.9441 | Validation Loss: 0.2286 | Validation Accuracy: 0.9468 | Validation Mean Precision: 0.8873 | Validation Mean Recall: 0.9005 | Validation Mean F1_score: 0.8931
2024-05-29 01:06:12 INFO: Epoch 150 | Train Loss: 0.2282 | Train Accuracy: 0.9451 | Validation Loss: 0.2408 | Validation Accuracy: 0.9348 | Validation Mean Precision: 0.8572 | Validation Mean Recall: 0.8970 | Validation Mean F1_score: 0.8735
2024-05-29 01:06:12 INFO: Best Validation F1 Score (Macro): 0.9120
2024-05-29 01:06:12 INFO: Best Validation Recall (Macro): 0.8966
2024-05-29 01:06:12 INFO: Best Validation Precision (Macro): 0.9296
2024-05-29 01:06:12 INFO: Best Epoch: 148
2024-05-29 01:06:13 INFO: Infer Result:
2024-05-29 01:06:13 INFO: Prediction errors: 328
2024-05-29 01:06:13 INFO: Prediction error percentage: 6.29%
2024-05-29 01:06:13 INFO: Total samples: 5218
2024-05-29 01:06:13 INFO: Infer Result End:
2024-05-29 01:06:14 INFO: Class weights: tensor([21.1878, 3.1149, 0.7420, 0.4378], device='cuda:0')
2024-05-29 01:06:15 INFO: Epoch 001 | Train Loss: 0.5638 | Train Accuracy: 0.8236 | Validation Loss: 0.3719 | Validation Accuracy: 0.8728 | Validation Mean Precision: 0.7790 | Validation Mean Recall: 0.8359 | Validation Mean F1_score: 0.8044
2024-05-29 01:06:16 INFO: Epoch 002 | Train Loss: 0.3773 | Train Accuracy: 0.8733 | Validation Loss: 0.3723 | Validation Accuracy: 0.8685 | Validation Mean Precision: 0.7648 | Validation Mean Recall: 0.8368 | Validation Mean F1_score: 0.7960
2024-05-29 01:06:18 INFO: Epoch 003 | Train Loss: 0.3640 | Train Accuracy: 0.8830 | Validation Loss: 0.3758 | Validation Accuracy: 0.8723 | Validation Mean Precision: 0.8008 | Validation Mean Recall: 0.8216 | Validation Mean F1_score: 0.8066
2024-05-29 01:06:19 INFO: Epoch 004 | Train Loss: 0.3688 | Train Accuracy: 0.8807 | Validation Loss: 0.3599 | Validation Accuracy: 0.8967 | Validation Mean Precision: 0.7897 | Validation Mean Recall: 0.8373 | Validation Mean F1_score: 0.8084
2024-05-29 01:06:21 INFO: Epoch 005 | Train Loss: 0.3604 | Train Accuracy: 0.8866 | Validation Loss: 0.3584 | Validation Accuracy: 0.8898 | Validation Mean Precision: 0.7989 | Validation Mean Recall: 0.8367 | Validation Mean F1_score: 0.8152
2024-05-29 01:06:22 INFO: Epoch 006 | Train Loss: 0.3510 | Train Accuracy: 0.8886 | Validation Loss: 0.3690 | Validation Accuracy: 0.9078 | Validation Mean Precision: 0.8460 | Validation Mean Recall: 0.8215 | Validation Mean F1_score: 0.8331
2024-05-29 01:06:23 INFO: Epoch 007 | Train Loss: 0.3486 | Train Accuracy: 0.8885 | Validation Loss: 0.3636 | Validation Accuracy: 0.8814 | Validation Mean Precision: 0.7616 | Validation Mean Recall: 0.8338 | Validation Mean F1_score: 0.7866
2024-05-29 01:06:25 INFO: Epoch 008 | Train Loss: 0.3586 | Train Accuracy: 0.8884 | Validation Loss: 0.3995 | Validation Accuracy: 0.8584 | Validation Mean Precision: 0.6917 | Validation Mean Recall: 0.8266 | Validation Mean F1_score: 0.7349
2024-05-29 01:06:27 INFO: Epoch 009 | Train Loss: 0.3516 | Train Accuracy: 0.8884 | Validation Loss: 0.3793 | Validation Accuracy: 0.9039 | Validation Mean Precision: 0.8564 | Validation Mean Recall: 0.7745 | Validation Mean F1_score: 0.8028
2024-05-29 01:06:28 INFO: Epoch 010 | Train Loss: 0.3557 | Train Accuracy: 0.8906 | Validation Loss: 0.3648 | Validation Accuracy: 0.9109 | Validation Mean Precision: 0.8370 | Validation Mean Recall: 0.8359 | Validation Mean F1_score: 0.8339
2024-05-29 01:06:30 INFO: Epoch 011 | Train Loss: 0.3502 | Train Accuracy: 0.8914 | Validation Loss: 0.3655 | Validation Accuracy: 0.8991 | Validation Mean Precision: 0.8369 | Validation Mean Recall: 0.8220 | Validation Mean F1_score: 0.8266
2024-05-29 01:06:31 INFO: Epoch 012 | Train Loss: 0.3512 | Train Accuracy: 0.8910 | Validation Loss: 0.3420 | Validation Accuracy: 0.8987 | Validation Mean Precision: 0.7998 | Validation Mean Recall: 0.8412 | Validation Mean F1_score: 0.8182
2024-05-29 01:06:33 INFO: Epoch 013 | Train Loss: 0.3408 | Train Accuracy: 0.8918 | Validation Loss: 0.3465 | Validation Accuracy: 0.8860 | Validation Mean Precision: 0.7539 | Validation Mean Recall: 0.8438 | Validation Mean F1_score: 0.7906
2024-05-29 01:06:34 INFO: Epoch 014 | Train Loss: 0.3465 | Train Accuracy: 0.8917 | Validation Loss: 0.3924 | Validation Accuracy: 0.9097 | Validation Mean Precision: 0.8766 | Validation Mean Recall: 0.7619 | Validation Mean F1_score: 0.7906
2024-05-29 01:06:36 INFO: Epoch 015 | Train Loss: 0.3374 | Train Accuracy: 0.8964 | Validation Loss: 0.3431 | Validation Accuracy: 0.9142 | Validation Mean Precision: 0.8497 | Validation Mean Recall: 0.8311 | Validation Mean F1_score: 0.8401
2024-05-29 01:06:37 INFO: Epoch 016 | Train Loss: 0.3372 | Train Accuracy: 0.8997 | Validation Loss: 0.4301 | Validation Accuracy: 0.8781 | Validation Mean Precision: 0.8042 | Validation Mean Recall: 0.8120 | Validation Mean F1_score: 0.7946
2024-05-29 01:06:39 INFO: Epoch 017 | Train Loss: 0.3339 | Train Accuracy: 0.9015 | Validation Loss: 0.3258 | Validation Accuracy: 0.9233 | Validation Mean Precision: 0.8430 | Validation Mean Recall: 0.8493 | Validation Mean F1_score: 0.8455
2024-05-29 01:06:40 INFO: Epoch 018 | Train Loss: 0.3233 | Train Accuracy: 0.9027 | Validation Loss: 0.3266 | Validation Accuracy: 0.9305 | Validation Mean Precision: 0.8529 | Validation Mean Recall: 0.8462 | Validation Mean F1_score: 0.8489
2024-05-29 01:06:42 INFO: Epoch 019 | Train Loss: 0.3175 | Train Accuracy: 0.9093 | Validation Loss: 0.3345 | Validation Accuracy: 0.8824 | Validation Mean Precision: 0.7621 | Validation Mean Recall: 0.8447 | Validation Mean F1_score: 0.7971
2024-05-29 01:06:43 INFO: Epoch 020 | Train Loss: 0.3114 | Train Accuracy: 0.9082 | Validation Loss: 0.3168 | Validation Accuracy: 0.9193 | Validation Mean Precision: 0.8144 | Validation Mean Recall: 0.8507 | Validation Mean F1_score: 0.8309
2024-05-29 01:06:44 INFO: Epoch 021 | Train Loss: 0.3086 | Train Accuracy: 0.9090 | Validation Loss: 0.3441 | Validation Accuracy: 0.9193 | Validation Mean Precision: 0.8698 | Validation Mean Recall: 0.8049 | Validation Mean F1_score: 0.8254
2024-05-29 01:06:46 INFO: Epoch 022 | Train Loss: 0.3085 | Train Accuracy: 0.9097 | Validation Loss: 0.3579 | Validation Accuracy: 0.8594 | Validation Mean Precision: 0.7556 | Validation Mean Recall: 0.8371 | Validation Mean F1_score: 0.7891
2024-05-29 01:06:47 INFO: Epoch 023 | Train Loss: 0.3063 | Train Accuracy: 0.9116 | Validation Loss: 0.3301 | Validation Accuracy: 0.9085 | Validation Mean Precision: 0.8656 | Validation Mean Recall: 0.8126 | Validation Mean F1_score: 0.8296
2024-05-29 01:06:48 INFO: Epoch 024 | Train Loss: 0.3002 | Train Accuracy: 0.9138 | Validation Loss: 0.2995 | Validation Accuracy: 0.9346 | Validation Mean Precision: 0.8294 | Validation Mean Recall: 0.8622 | Validation Mean F1_score: 0.8429
2024-05-29 01:06:50 INFO: Epoch 025 | Train Loss: 0.2980 | Train Accuracy: 0.9166 | Validation Loss: 0.3655 | Validation Accuracy: 0.8539 | Validation Mean Precision: 0.7530 | Validation Mean Recall: 0.8401 | Validation Mean F1_score: 0.7886
2024-05-29 01:06:51 INFO: Epoch 026 | Train Loss: 0.2954 | Train Accuracy: 0.9175 | Validation Loss: 0.3148 | Validation Accuracy: 0.9046 | Validation Mean Precision: 0.7703 | Validation Mean Recall: 0.8515 | Validation Mean F1_score: 0.8023
2024-05-29 01:06:53 INFO: Epoch 027 | Train Loss: 0.2933 | Train Accuracy: 0.9172 | Validation Loss: 0.3090 | Validation Accuracy: 0.9013 | Validation Mean Precision: 0.7660 | Validation Mean Recall: 0.8597 | Validation Mean F1_score: 0.8033
2024-05-29 01:06:54 INFO: Epoch 028 | Train Loss: 0.2911 | Train Accuracy: 0.9197 | Validation Loss: 0.3001 | Validation Accuracy: 0.9149 | Validation Mean Precision: 0.7834 | Validation Mean Recall: 0.8644 | Validation Mean F1_score: 0.8166
2024-05-29 01:06:56 INFO: Epoch 029 | Train Loss: 0.2878 | Train Accuracy: 0.9215 | Validation Loss: 0.2957 | Validation Accuracy: 0.9126 | Validation Mean Precision: 0.8348 | Validation Mean Recall: 0.8613 | Validation Mean F1_score: 0.8473
2024-05-29 01:06:57 INFO: Epoch 030 | Train Loss: 0.2930 | Train Accuracy: 0.9195 | Validation Loss: 0.2962 | Validation Accuracy: 0.9427 | Validation Mean Precision: 0.8938 | Validation Mean Recall: 0.8603 | Validation Mean F1_score: 0.8759
2024-05-29 01:06:59 INFO: Epoch 031 | Train Loss: 0.2880 | Train Accuracy: 0.9211 | Validation Loss: 0.2935 | Validation Accuracy: 0.9219 | Validation Mean Precision: 0.8076 | Validation Mean Recall: 0.8677 | Validation Mean F1_score: 0.8338
2024-05-29 01:07:00 INFO: Epoch 032 | Train Loss: 0.2824 | Train Accuracy: 0.9232 | Validation Loss: 0.3298 | Validation Accuracy: 0.9447 | Validation Mean Precision: 0.9091 | Validation Mean Recall: 0.8462 | Validation Mean F1_score: 0.8727
2024-05-29 01:07:02 INFO: Epoch 033 | Train Loss: 0.2837 | Train Accuracy: 0.9224 | Validation Loss: 0.2909 | Validation Accuracy: 0.9401 | Validation Mean Precision: 0.8588 | Validation Mean Recall: 0.8793 | Validation Mean F1_score: 0.8661
2024-05-29 01:07:03 INFO: Epoch 034 | Train Loss: 0.2817 | Train Accuracy: 0.9224 | Validation Loss: 0.2925 | Validation Accuracy: 0.9286 | Validation Mean Precision: 0.8098 | Validation Mean Recall: 0.8709 | Validation Mean F1_score: 0.8354
2024-05-29 01:07:04 INFO: Epoch 035 | Train Loss: 0.2828 | Train Accuracy: 0.9257 | Validation Loss: 0.3143 | Validation Accuracy: 0.9459 | Validation Mean Precision: 0.9279 | Validation Mean Recall: 0.8317 | Validation Mean F1_score: 0.8661
2024-05-29 01:07:06 INFO: Epoch 036 | Train Loss: 0.2807 | Train Accuracy: 0.9251 | Validation Loss: 0.2908 | Validation Accuracy: 0.9142 | Validation Mean Precision: 0.7866 | Validation Mean Recall: 0.8656 | Validation Mean F1_score: 0.8195
2024-05-29 01:07:08 INFO: Epoch 037 | Train Loss: 0.2707 | Train Accuracy: 0.9263 | Validation Loss: 0.2948 | Validation Accuracy: 0.8996 | Validation Mean Precision: 0.8118 | Validation Mean Recall: 0.8603 | Validation Mean F1_score: 0.8336
2024-05-29 01:07:09 INFO: Epoch 038 | Train Loss: 0.2781 | Train Accuracy: 0.9269 | Validation Loss: 0.3149 | Validation Accuracy: 0.9408 | Validation Mean Precision: 0.8591 | Validation Mean Recall: 0.8720 | Validation Mean F1_score: 0.8644
2024-05-29 01:07:11 INFO: Epoch 039 | Train Loss: 0.2825 | Train Accuracy: 0.9238 | Validation Loss: 0.2745 | Validation Accuracy: 0.9372 | Validation Mean Precision: 0.8428 | Validation Mean Recall: 0.8778 | Validation Mean F1_score: 0.8585
2024-05-29 01:07:12 INFO: Epoch 040 | Train Loss: 0.2710 | Train Accuracy: 0.9251 | Validation Loss: 0.2770 | Validation Accuracy: 0.9382 | Validation Mean Precision: 0.8456 | Validation Mean Recall: 0.8808 | Validation Mean F1_score: 0.8608
2024-05-29 01:07:14 INFO: Epoch 041 | Train Loss: 0.2737 | Train Accuracy: 0.9256 | Validation Loss: 0.2823 | Validation Accuracy: 0.9272 | Validation Mean Precision: 0.8186 | Validation Mean Recall: 0.8739 | Validation Mean F1_score: 0.8417
2024-05-29 01:07:15 INFO: Epoch 042 | Train Loss: 0.2737 | Train Accuracy: 0.9262 | Validation Loss: 0.2772 | Validation Accuracy: 0.9332 | Validation Mean Precision: 0.8278 | Validation Mean Recall: 0.8764 | Validation Mean F1_score: 0.8484
2024-05-29 01:07:17 INFO: Epoch 043 | Train Loss: 0.2708 | Train Accuracy: 0.9291 | Validation Loss: 0.2925 | Validation Accuracy: 0.9193 | Validation Mean Precision: 0.7864 | Validation Mean Recall: 0.8704 | Validation Mean F1_score: 0.8201
2024-05-29 01:07:19 INFO: Epoch 044 | Train Loss: 0.2712 | Train Accuracy: 0.9275 | Validation Loss: 0.2971 | Validation Accuracy: 0.9413 | Validation Mean Precision: 0.8440 | Validation Mean Recall: 0.8748 | Validation Mean F1_score: 0.8531
2024-05-29 01:07:20 INFO: Epoch 045 | Train Loss: 0.2637 | Train Accuracy: 0.9281 | Validation Loss: 0.2773 | Validation Accuracy: 0.9257 | Validation Mean Precision: 0.8128 | Validation Mean Recall: 0.8746 | Validation Mean F1_score: 0.8390
2024-05-29 01:07:22 INFO: Epoch 046 | Train Loss: 0.2646 | Train Accuracy: 0.9314 | Validation Loss: 0.3151 | Validation Accuracy: 0.9384 | Validation Mean Precision: 0.8973 | Validation Mean Recall: 0.8465 | Validation Mean F1_score: 0.8643
2024-05-29 01:07:24 INFO: Epoch 047 | Train Loss: 0.2746 | Train Accuracy: 0.9307 | Validation Loss: 0.2830 | Validation Accuracy: 0.9202 | Validation Mean Precision: 0.8222 | Validation Mean Recall: 0.8750 | Validation Mean F1_score: 0.8462
2024-05-29 01:07:25 INFO: Epoch 048 | Train Loss: 0.2710 | Train Accuracy: 0.9300 | Validation Loss: 0.3276 | Validation Accuracy: 0.9408 | Validation Mean Precision: 0.8877 | Validation Mean Recall: 0.8459 | Validation Mean F1_score: 0.8653
2024-05-29 01:07:27 INFO: Epoch 049 | Train Loss: 0.2664 | Train Accuracy: 0.9273 | Validation Loss: 0.2763 | Validation Accuracy: 0.9468 | Validation Mean Precision: 0.8783 | Validation Mean Recall: 0.8811 | Validation Mean F1_score: 0.8785
2024-05-29 01:07:28 INFO: Epoch 050 | Train Loss: 0.2672 | Train Accuracy: 0.9310 | Validation Loss: 0.2751 | Validation Accuracy: 0.9360 | Validation Mean Precision: 0.8619 | Validation Mean Recall: 0.8758 | Validation Mean F1_score: 0.8685
2024-05-29 01:07:30 INFO: Epoch 051 | Train Loss: 0.2631 | Train Accuracy: 0.9305 | Validation Loss: 0.3099 | Validation Accuracy: 0.9427 | Validation Mean Precision: 0.8857 | Validation Mean Recall: 0.8576 | Validation Mean F1_score: 0.8705
2024-05-29 01:07:31 INFO: Epoch 052 | Train Loss: 0.2644 | Train Accuracy: 0.9319 | Validation Loss: 0.2810 | Validation Accuracy: 0.9281 | Validation Mean Precision: 0.8176 | Validation Mean Recall: 0.8737 | Validation Mean F1_score: 0.8406
2024-05-29 01:07:32 INFO: Epoch 053 | Train Loss: 0.2651 | Train Accuracy: 0.9327 | Validation Loss: 0.2926 | Validation Accuracy: 0.9461 | Validation Mean Precision: 0.9038 | Validation Mean Recall: 0.8609 | Validation Mean F1_score: 0.8805
2024-05-29 01:07:34 INFO: Epoch 054 | Train Loss: 0.2667 | Train Accuracy: 0.9330 | Validation Loss: 0.2811 | Validation Accuracy: 0.9267 | Validation Mean Precision: 0.8414 | Validation Mean Recall: 0.8662 | Validation Mean F1_score: 0.8523
2024-05-29 01:07:35 INFO: Epoch 055 | Train Loss: 0.2633 | Train Accuracy: 0.9303 | Validation Loss: 0.2722 | Validation Accuracy: 0.9300 | Validation Mean Precision: 0.8459 | Validation Mean Recall: 0.8767 | Validation Mean F1_score: 0.8604
2024-05-29 01:07:37 INFO: Epoch 056 | Train Loss: 0.2631 | Train Accuracy: 0.9333 | Validation Loss: 0.2820 | Validation Accuracy: 0.9406 | Validation Mean Precision: 0.8851 | Validation Mean Recall: 0.8645 | Validation Mean F1_score: 0.8727
2024-05-29 01:07:38 INFO: Epoch 057 | Train Loss: 0.2571 | Train Accuracy: 0.9340 | Validation Loss: 0.2712 | Validation Accuracy: 0.9485 | Validation Mean Precision: 0.8676 | Validation Mean Recall: 0.8853 | Validation Mean F1_score: 0.8736
2024-05-29 01:07:40 INFO: Epoch 058 | Train Loss: 0.2627 | Train Accuracy: 0.9320 | Validation Loss: 0.2894 | Validation Accuracy: 0.9403 | Validation Mean Precision: 0.8377 | Validation Mean Recall: 0.8681 | Validation Mean F1_score: 0.8471
2024-05-29 01:07:41 INFO: Epoch 059 | Train Loss: 0.2638 | Train Accuracy: 0.9315 | Validation Loss: 0.2959 | Validation Accuracy: 0.9197 | Validation Mean Precision: 0.8363 | Validation Mean Recall: 0.8684 | Validation Mean F1_score: 0.8494
2024-05-29 01:07:43 INFO: Epoch 060 | Train Loss: 0.2573 | Train Accuracy: 0.9353 | Validation Loss: 0.2799 | Validation Accuracy: 0.9485 | Validation Mean Precision: 0.8791 | Validation Mean Recall: 0.8676 | Validation Mean F1_score: 0.8729
2024-05-29 01:07:45 INFO: Epoch 061 | Train Loss: 0.2565 | Train Accuracy: 0.9344 | Validation Loss: 0.2700 | Validation Accuracy: 0.9432 | Validation Mean Precision: 0.8607 | Validation Mean Recall: 0.8765 | Validation Mean F1_score: 0.8679
2024-05-29 01:07:46 INFO: Epoch 062 | Train Loss: 0.2567 | Train Accuracy: 0.9355 | Validation Loss: 0.2701 | Validation Accuracy: 0.9329 | Validation Mean Precision: 0.8125 | Validation Mean Recall: 0.8743 | Validation Mean F1_score: 0.8380
2024-05-29 01:07:48 INFO: Epoch 063 | Train Loss: 0.2568 | Train Accuracy: 0.9347 | Validation Loss: 0.2848 | Validation Accuracy: 0.9308 | Validation Mean Precision: 0.8642 | Validation Mean Recall: 0.8640 | Validation Mean F1_score: 0.8640
2024-05-29 01:07:49 INFO: Epoch 064 | Train Loss: 0.2592 | Train Accuracy: 0.9347 | Validation Loss: 0.3028 | Validation Accuracy: 0.9502 | Validation Mean Precision: 0.9341 | Validation Mean Recall: 0.8443 | Validation Mean F1_score: 0.8780
2024-05-29 01:07:51 INFO: Epoch 065 | Train Loss: 0.2563 | Train Accuracy: 0.9364 | Validation Loss: 0.2770 | Validation Accuracy: 0.9344 | Validation Mean Precision: 0.8393 | Validation Mean Recall: 0.8752 | Validation Mean F1_score: 0.8552
2024-05-29 01:07:52 INFO: Epoch 066 | Train Loss: 0.2573 | Train Accuracy: 0.9366 | Validation Loss: 0.2776 | Validation Accuracy: 0.9377 | Validation Mean Precision: 0.8700 | Validation Mean Recall: 0.8737 | Validation Mean F1_score: 0.8718
2024-05-29 01:07:54 INFO: Epoch 067 | Train Loss: 0.2579 | Train Accuracy: 0.9347 | Validation Loss: 0.2781 | Validation Accuracy: 0.9499 | Validation Mean Precision: 0.8977 | Validation Mean Recall: 0.8684 | Validation Mean F1_score: 0.8821
2024-05-29 01:07:55 INFO: Epoch 068 | Train Loss: 0.2532 | Train Accuracy: 0.9356 | Validation Loss: 0.2768 | Validation Accuracy: 0.9327 | Validation Mean Precision: 0.8469 | Validation Mean Recall: 0.8583 | Validation Mean F1_score: 0.8522
2024-05-29 01:07:57 INFO: Epoch 069 | Train Loss: 0.2602 | Train Accuracy: 0.9335 | Validation Loss: 0.2614 | Validation Accuracy: 0.9387 | Validation Mean Precision: 0.8516 | Validation Mean Recall: 0.8835 | Validation Mean F1_score: 0.8659
2024-05-29 01:07:58 INFO: Epoch 070 | Train Loss: 0.2517 | Train Accuracy: 0.9378 | Validation Loss: 0.2627 | Validation Accuracy: 0.9451 | Validation Mean Precision: 0.8909 | Validation Mean Recall: 0.8638 | Validation Mean F1_score: 0.8762
2024-05-29 01:08:00 INFO: Epoch 071 | Train Loss: 0.2524 | Train Accuracy: 0.9378 | Validation Loss: 0.3027 | Validation Accuracy: 0.9370 | Validation Mean Precision: 0.9020 | Validation Mean Recall: 0.8489 | Validation Mean F1_score: 0.8703
2024-05-29 01:08:01 INFO: Epoch 072 | Train Loss: 0.2508 | Train Accuracy: 0.9387 | Validation Loss: 0.2622 | Validation Accuracy: 0.9339 | Validation Mean Precision: 0.8282 | Validation Mean Recall: 0.8786 | Validation Mean F1_score: 0.8501
2024-05-29 01:08:02 INFO: Epoch 073 | Train Loss: 0.2510 | Train Accuracy: 0.9374 | Validation Loss: 0.3073 | Validation Accuracy: 0.9001 | Validation Mean Precision: 0.8304 | Validation Mean Recall: 0.8477 | Validation Mean F1_score: 0.8362
2024-05-29 01:08:04 INFO: Epoch 074 | Train Loss: 0.2538 | Train Accuracy: 0.9381 | Validation Loss: 0.2730 | Validation Accuracy: 0.9241 | Validation Mean Precision: 0.8150 | Validation Mean Recall: 0.8734 | Validation Mean F1_score: 0.8408
2024-05-29 01:08:05 INFO: Epoch 075 | Train Loss: 0.2461 | Train Accuracy: 0.9397 | Validation Loss: 0.2752 | Validation Accuracy: 0.9499 | Validation Mean Precision: 0.8718 | Validation Mean Recall: 0.8853 | Validation Mean F1_score: 0.8759
2024-05-29 01:08:07 INFO: Epoch 076 | Train Loss: 0.2501 | Train Accuracy: 0.9390 | Validation Loss: 0.2890 | Validation Accuracy: 0.9511 | Validation Mean Precision: 0.8746 | Validation Mean Recall: 0.8827 | Validation Mean F1_score: 0.8767
2024-05-29 01:08:08 INFO: Epoch 077 | Train Loss: 0.2499 | Train Accuracy: 0.9379 | Validation Loss: 0.2729 | Validation Accuracy: 0.9437 | Validation Mean Precision: 0.8866 | Validation Mean Recall: 0.8568 | Validation Mean F1_score: 0.8679
2024-05-29 01:08:09 INFO: Epoch 078 | Train Loss: 0.2495 | Train Accuracy: 0.9379 | Validation Loss: 0.3090 | Validation Accuracy: 0.9430 | Validation Mean Precision: 0.8976 | Validation Mean Recall: 0.8496 | Validation Mean F1_score: 0.8678
2024-05-29 01:08:11 INFO: Epoch 079 | Train Loss: 0.2597 | Train Accuracy: 0.9355 | Validation Loss: 0.2853 | Validation Accuracy: 0.9420 | Validation Mean Precision: 0.8788 | Validation Mean Recall: 0.8599 | Validation Mean F1_score: 0.8684
2024-05-29 01:08:12 INFO: Epoch 080 | Train Loss: 0.2516 | Train Accuracy: 0.9388 | Validation Loss: 0.3153 | Validation Accuracy: 0.9459 | Validation Mean Precision: 0.8786 | Validation Mean Recall: 0.8645 | Validation Mean F1_score: 0.8669
2024-05-29 01:08:14 INFO: Epoch 081 | Train Loss: 0.2436 | Train Accuracy: 0.9395 | Validation Loss: 0.2982 | Validation Accuracy: 0.9061 | Validation Mean Precision: 0.8083 | Validation Mean Recall: 0.8647 | Validation Mean F1_score: 0.8334
2024-05-29 01:08:15 INFO: Epoch 082 | Train Loss: 0.2471 | Train Accuracy: 0.9388 | Validation Loss: 0.2890 | Validation Accuracy: 0.9478 | Validation Mean Precision: 0.8683 | Validation Mean Recall: 0.8676 | Validation Mean F1_score: 0.8639
2024-05-29 01:08:17 INFO: Epoch 083 | Train Loss: 0.2451 | Train Accuracy: 0.9402 | Validation Loss: 0.2967 | Validation Accuracy: 0.9027 | Validation Mean Precision: 0.8015 | Validation Mean Recall: 0.8642 | Validation Mean F1_score: 0.8289
2024-05-29 01:08:18 INFO: Epoch 084 | Train Loss: 0.2420 | Train Accuracy: 0.9386 | Validation Loss: 0.2831 | Validation Accuracy: 0.9523 | Validation Mean Precision: 0.8775 | Validation Mean Recall: 0.8854 | Validation Mean F1_score: 0.8786
2024-05-29 01:08:20 INFO: Epoch 085 | Train Loss: 0.2547 | Train Accuracy: 0.9369 | Validation Loss: 0.2654 | Validation Accuracy: 0.9346 | Validation Mean Precision: 0.8498 | Validation Mean Recall: 0.8797 | Validation Mean F1_score: 0.8636
2024-05-29 01:08:21 INFO: Epoch 086 | Train Loss: 0.2514 | Train Accuracy: 0.9384 | Validation Loss: 0.3007 | Validation Accuracy: 0.9082 | Validation Mean Precision: 0.8393 | Validation Mean Recall: 0.8697 | Validation Mean F1_score: 0.8536
2024-05-29 01:08:22 INFO: Epoch 087 | Train Loss: 0.2424 | Train Accuracy: 0.9400 | Validation Loss: 0.3106 | Validation Accuracy: 0.9075 | Validation Mean Precision: 0.7938 | Validation Mean Recall: 0.8659 | Validation Mean F1_score: 0.8248
2024-05-29 01:08:24 INFO: Epoch 088 | Train Loss: 0.2446 | Train Accuracy: 0.9409 | Validation Loss: 0.2821 | Validation Accuracy: 0.9511 | Validation Mean Precision: 0.8834 | Validation Mean Recall: 0.8685 | Validation Mean F1_score: 0.8756
2024-05-29 01:08:25 INFO: Epoch 089 | Train Loss: 0.2482 | Train Accuracy: 0.9385 | Validation Loss: 0.2714 | Validation Accuracy: 0.9300 | Validation Mean Precision: 0.8420 | Validation Mean Recall: 0.8810 | Validation Mean F1_score: 0.8599
2024-05-29 01:08:26 INFO: Epoch 090 | Train Loss: 0.2391 | Train Accuracy: 0.9412 | Validation Loss: 0.2766 | Validation Accuracy: 0.9253 | Validation Mean Precision: 0.8245 | Validation Mean Recall: 0.8741 | Validation Mean F1_score: 0.8466
2024-05-29 01:08:28 INFO: Epoch 091 | Train Loss: 0.2444 | Train Accuracy: 0.9385 | Validation Loss: 0.2952 | Validation Accuracy: 0.9485 | Validation Mean Precision: 0.8953 | Validation Mean Recall: 0.8605 | Validation Mean F1_score: 0.8764
2024-05-29 01:08:29 INFO: Epoch 092 | Train Loss: 0.2455 | Train Accuracy: 0.9415 | Validation Loss: 0.3181 | Validation Accuracy: 0.9097 | Validation Mean Precision: 0.8257 | Validation Mean Recall: 0.8678 | Validation Mean F1_score: 0.8453
2024-05-29 01:08:31 INFO: Epoch 093 | Train Loss: 0.2396 | Train Accuracy: 0.9411 | Validation Loss: 0.2680 | Validation Accuracy: 0.9447 | Validation Mean Precision: 0.8448 | Validation Mean Recall: 0.8827 | Validation Mean F1_score: 0.8604
2024-05-29 01:08:32 INFO: Epoch 094 | Train Loss: 0.2380 | Train Accuracy: 0.9434 | Validation Loss: 0.2805 | Validation Accuracy: 0.9408 | Validation Mean Precision: 0.8437 | Validation Mean Recall: 0.8829 | Validation Mean F1_score: 0.8607
2024-05-29 01:08:34 INFO: Epoch 095 | Train Loss: 0.2412 | Train Accuracy: 0.9411 | Validation Loss: 0.2776 | Validation Accuracy: 0.9267 | Validation Mean Precision: 0.8410 | Validation Mean Recall: 0.8749 | Validation Mean F1_score: 0.8569
2024-05-29 01:08:35 INFO: Epoch 096 | Train Loss: 0.2447 | Train Accuracy: 0.9393 | Validation Loss: 0.2868 | Validation Accuracy: 0.9478 | Validation Mean Precision: 0.8860 | Validation Mean Recall: 0.8736 | Validation Mean F1_score: 0.8790
2024-05-29 01:08:37 INFO: Epoch 097 | Train Loss: 0.2447 | Train Accuracy: 0.9392 | Validation Loss: 0.2930 | Validation Accuracy: 0.9276 | Validation Mean Precision: 0.8495 | Validation Mean Recall: 0.8744 | Validation Mean F1_score: 0.8609
2024-05-29 01:08:38 INFO: Epoch 098 | Train Loss: 0.2377 | Train Accuracy: 0.9417 | Validation Loss: 0.2798 | Validation Accuracy: 0.9483 | Validation Mean Precision: 0.8845 | Validation Mean Recall: 0.8865 | Validation Mean F1_score: 0.8851
2024-05-29 01:08:40 INFO: Epoch 099 | Train Loss: 0.2369 | Train Accuracy: 0.9421 | Validation Loss: 0.2916 | Validation Accuracy: 0.9279 | Validation Mean Precision: 0.8261 | Validation Mean Recall: 0.8778 | Validation Mean F1_score: 0.8490
2024-05-29 01:08:41 INFO: Epoch 100 | Train Loss: 0.2441 | Train Accuracy: 0.9405 | Validation Loss: 0.2857 | Validation Accuracy: 0.9497 | Validation Mean Precision: 0.9044 | Validation Mean Recall: 0.8552 | Validation Mean F1_score: 0.8778
2024-05-29 01:08:42 INFO: Epoch 101 | Train Loss: 0.2394 | Train Accuracy: 0.9421 | Validation Loss: 0.2720 | Validation Accuracy: 0.9427 | Validation Mean Precision: 0.8477 | Validation Mean Recall: 0.8843 | Validation Mean F1_score: 0.8634
2024-05-29 01:08:44 INFO: Epoch 102 | Train Loss: 0.2360 | Train Accuracy: 0.9436 | Validation Loss: 0.3173 | Validation Accuracy: 0.9554 | Validation Mean Precision: 0.9357 | Validation Mean Recall: 0.8516 | Validation Mean F1_score: 0.8851
2024-05-29 01:08:45 INFO: Epoch 103 | Train Loss: 0.2453 | Train Accuracy: 0.9418 | Validation Loss: 0.2888 | Validation Accuracy: 0.9193 | Validation Mean Precision: 0.8438 | Validation Mean Recall: 0.8632 | Validation Mean F1_score: 0.8490
2024-05-29 01:08:47 INFO: Epoch 104 | Train Loss: 0.2416 | Train Accuracy: 0.9428 | Validation Loss: 0.2814 | Validation Accuracy: 0.9499 | Validation Mean Precision: 0.8923 | Validation Mean Recall: 0.8646 | Validation Mean F1_score: 0.8769
2024-05-29 01:08:48 INFO: Epoch 105 | Train Loss: 0.2352 | Train Accuracy: 0.9433 | Validation Loss: 0.2688 | Validation Accuracy: 0.9518 | Validation Mean Precision: 0.8917 | Validation Mean Recall: 0.8902 | Validation Mean F1_score: 0.8906
2024-05-29 01:08:50 INFO: Epoch 106 | Train Loss: 0.2389 | Train Accuracy: 0.9411 | Validation Loss: 0.2652 | Validation Accuracy: 0.9430 | Validation Mean Precision: 0.8431 | Validation Mean Recall: 0.8823 | Validation Mean F1_score: 0.8598
2024-05-29 01:08:51 INFO: Epoch 107 | Train Loss: 0.2376 | Train Accuracy: 0.9431 | Validation Loss: 0.3083 | Validation Accuracy: 0.9526 | Validation Mean Precision: 0.8946 | Validation Mean Recall: 0.8753 | Validation Mean F1_score: 0.8840
2024-05-29 01:08:52 INFO: Epoch 108 | Train Loss: 0.2360 | Train Accuracy: 0.9435 | Validation Loss: 0.2626 | Validation Accuracy: 0.9471 | Validation Mean Precision: 0.8882 | Validation Mean Recall: 0.8715 | Validation Mean F1_score: 0.8792
2024-05-29 01:08:54 INFO: Epoch 109 | Train Loss: 0.2354 | Train Accuracy: 0.9424 | Validation Loss: 0.2737 | Validation Accuracy: 0.9432 | Validation Mean Precision: 0.8633 | Validation Mean Recall: 0.8868 | Validation Mean F1_score: 0.8737
2024-05-29 01:08:55 INFO: Epoch 110 | Train Loss: 0.2351 | Train Accuracy: 0.9440 | Validation Loss: 0.2690 | Validation Accuracy: 0.9533 | Validation Mean Precision: 0.8975 | Validation Mean Recall: 0.8797 | Validation Mean F1_score: 0.8882
2024-05-29 01:08:57 INFO: Epoch 111 | Train Loss: 0.2378 | Train Accuracy: 0.9420 | Validation Loss: 0.3163 | Validation Accuracy: 0.9463 | Validation Mean Precision: 0.8949 | Validation Mean Recall: 0.8634 | Validation Mean F1_score: 0.8783
2024-05-29 01:08:58 INFO: Epoch 112 | Train Loss: 0.2336 | Train Accuracy: 0.9429 | Validation Loss: 0.2854 | Validation Accuracy: 0.9449 | Validation Mean Precision: 0.8654 | Validation Mean Recall: 0.8679 | Validation Mean F1_score: 0.8661
2024-05-29 01:08:59 INFO: Epoch 113 | Train Loss: 0.2371 | Train Accuracy: 0.9418 | Validation Loss: 0.2602 | Validation Accuracy: 0.9415 | Validation Mean Precision: 0.8678 | Validation Mean Recall: 0.8832 | Validation Mean F1_score: 0.8750
2024-05-29 01:09:01 INFO: Epoch 114 | Train Loss: 0.2405 | Train Accuracy: 0.9430 | Validation Loss: 0.2923 | Validation Accuracy: 0.9526 | Validation Mean Precision: 0.9054 | Validation Mean Recall: 0.8668 | Validation Mean F1_score: 0.8843
2024-05-29 01:09:02 INFO: Epoch 115 | Train Loss: 0.2383 | Train Accuracy: 0.9420 | Validation Loss: 0.2974 | Validation Accuracy: 0.9523 | Validation Mean Precision: 0.8905 | Validation Mean Recall: 0.8809 | Validation Mean F1_score: 0.8850
2024-05-29 01:09:04 INFO: Epoch 116 | Train Loss: 0.2352 | Train Accuracy: 0.9421 | Validation Loss: 0.2949 | Validation Accuracy: 0.9483 | Validation Mean Precision: 0.8926 | Validation Mean Recall: 0.8773 | Validation Mean F1_score: 0.8845
2024-05-29 01:09:05 INFO: Epoch 117 | Train Loss: 0.2295 | Train Accuracy: 0.9423 | Validation Loss: 0.2957 | Validation Accuracy: 0.9475 | Validation Mean Precision: 0.8692 | Validation Mean Recall: 0.8806 | Validation Mean F1_score: 0.8743
2024-05-29 01:09:07 INFO: Epoch 118 | Train Loss: 0.2352 | Train Accuracy: 0.9419 | Validation Loss: 0.2967 | Validation Accuracy: 0.9423 | Validation Mean Precision: 0.8815 | Validation Mean Recall: 0.8578 | Validation Mean F1_score: 0.8684
2024-05-29 01:09:08 INFO: Epoch 119 | Train Loss: 0.2330 | Train Accuracy: 0.9426 | Validation Loss: 0.2782 | Validation Accuracy: 0.9267 | Validation Mean Precision: 0.7955 | Validation Mean Recall: 0.8685 | Validation Mean F1_score: 0.8241
2024-05-29 01:09:09 INFO: Epoch 120 | Train Loss: 0.2346 | Train Accuracy: 0.9435 | Validation Loss: 0.2898 | Validation Accuracy: 0.9509 | Validation Mean Precision: 0.8836 | Validation Mean Recall: 0.8824 | Validation Mean F1_score: 0.8825
2024-05-29 01:09:11 INFO: Epoch 121 | Train Loss: 0.2317 | Train Accuracy: 0.9406 | Validation Loss: 0.2599 | Validation Accuracy: 0.9418 | Validation Mean Precision: 0.8615 | Validation Mean Recall: 0.8849 | Validation Mean F1_score: 0.8718
2024-05-29 01:09:12 INFO: Epoch 122 | Train Loss: 0.2317 | Train Accuracy: 0.9433 | Validation Loss: 0.3046 | Validation Accuracy: 0.9538 | Validation Mean Precision: 0.9172 | Validation Mean Recall: 0.8648 | Validation Mean F1_score: 0.8887
2024-05-29 01:09:14 INFO: Epoch 123 | Train Loss: 0.2369 | Train Accuracy: 0.9432 | Validation Loss: 0.2878 | Validation Accuracy: 0.9435 | Validation Mean Precision: 0.8843 | Validation Mean Recall: 0.8609 | Validation Mean F1_score: 0.8721
2024-05-29 01:09:15 INFO: Epoch 124 | Train Loss: 0.2359 | Train Accuracy: 0.9421 | Validation Loss: 0.2757 | Validation Accuracy: 0.9418 | Validation Mean Precision: 0.8707 | Validation Mean Recall: 0.8850 | Validation Mean F1_score: 0.8775
2024-05-29 01:09:16 INFO: Epoch 125 | Train Loss: 0.2291 | Train Accuracy: 0.9441 | Validation Loss: 0.2829 | Validation Accuracy: 0.9528 | Validation Mean Precision: 0.8847 | Validation Mean Recall: 0.8695 | Validation Mean F1_score: 0.8768
2024-05-29 01:09:18 INFO: Epoch 126 | Train Loss: 0.2311 | Train Accuracy: 0.9438 | Validation Loss: 0.2883 | Validation Accuracy: 0.9516 | Validation Mean Precision: 0.8827 | Validation Mean Recall: 0.8722 | Validation Mean F1_score: 0.8769
2024-05-29 01:09:19 INFO: Epoch 127 | Train Loss: 0.2359 | Train Accuracy: 0.9426 | Validation Loss: 0.2760 | Validation Accuracy: 0.9499 | Validation Mean Precision: 0.8837 | Validation Mean Recall: 0.8745 | Validation Mean F1_score: 0.8789
2024-05-29 01:09:21 INFO: Epoch 128 | Train Loss: 0.2295 | Train Accuracy: 0.9463 | Validation Loss: 0.2796 | Validation Accuracy: 0.9442 | Validation Mean Precision: 0.8730 | Validation Mean Recall: 0.8767 | Validation Mean F1_score: 0.8746
2024-05-29 01:09:22 INFO: Epoch 129 | Train Loss: 0.2364 | Train Accuracy: 0.9432 | Validation Loss: 0.2764 | Validation Accuracy: 0.9478 | Validation Mean Precision: 0.9033 | Validation Mean Recall: 0.8750 | Validation Mean F1_score: 0.8878
2024-05-29 01:09:24 INFO: Epoch 130 | Train Loss: 0.2364 | Train Accuracy: 0.9417 | Validation Loss: 0.2771 | Validation Accuracy: 0.9494 | Validation Mean Precision: 0.8728 | Validation Mean Recall: 0.8905 | Validation Mean F1_score: 0.8803
2024-05-29 01:09:25 INFO: Epoch 131 | Train Loss: 0.2376 | Train Accuracy: 0.9442 | Validation Loss: 0.2667 | Validation Accuracy: 0.9490 | Validation Mean Precision: 0.8756 | Validation Mean Recall: 0.8862 | Validation Mean F1_score: 0.8801
2024-05-29 01:09:27 INFO: Epoch 132 | Train Loss: 0.2263 | Train Accuracy: 0.9450 | Validation Loss: 0.3103 | Validation Accuracy: 0.9535 | Validation Mean Precision: 0.8947 | Validation Mean Recall: 0.8818 | Validation Mean F1_score: 0.8875
2024-05-29 01:09:28 INFO: Epoch 133 | Train Loss: 0.2348 | Train Accuracy: 0.9429 | Validation Loss: 0.2708 | Validation Accuracy: 0.9379 | Validation Mean Precision: 0.8562 | Validation Mean Recall: 0.8815 | Validation Mean F1_score: 0.8666
2024-05-29 01:09:30 INFO: Epoch 134 | Train Loss: 0.2355 | Train Accuracy: 0.9433 | Validation Loss: 0.3033 | Validation Accuracy: 0.9356 | Validation Mean Precision: 0.8828 | Validation Mean Recall: 0.8483 | Validation Mean F1_score: 0.8617
2024-05-29 01:09:31 INFO: Epoch 135 | Train Loss: 0.2343 | Train Accuracy: 0.9430 | Validation Loss: 0.2929 | Validation Accuracy: 0.9554 | Validation Mean Precision: 0.9127 | Validation Mean Recall: 0.8739 | Validation Mean F1_score: 0.8918
2024-05-29 01:09:33 INFO: Epoch 136 | Train Loss: 0.2328 | Train Accuracy: 0.9437 | Validation Loss: 0.2694 | Validation Accuracy: 0.9478 | Validation Mean Precision: 0.8926 | Validation Mean Recall: 0.8659 | Validation Mean F1_score: 0.8773
2024-05-29 01:09:34 INFO: Epoch 137 | Train Loss: 0.2263 | Train Accuracy: 0.9457 | Validation Loss: 0.3113 | Validation Accuracy: 0.9533 | Validation Mean Precision: 0.9083 | Validation Mean Recall: 0.8547 | Validation Mean F1_score: 0.8789
2024-05-29 01:09:35 INFO: Epoch 138 | Train Loss: 0.2282 | Train Accuracy: 0.9449 | Validation Loss: 0.3070 | Validation Accuracy: 0.9540 | Validation Mean Precision: 0.8865 | Validation Mean Recall: 0.8901 | Validation Mean F1_score: 0.8864
2024-05-29 01:09:37 INFO: Epoch 139 | Train Loss: 0.2246 | Train Accuracy: 0.9457 | Validation Loss: 0.2966 | Validation Accuracy: 0.9408 | Validation Mean Precision: 0.8537 | Validation Mean Recall: 0.8867 | Validation Mean F1_score: 0.8683
2024-05-29 01:09:38 INFO: Epoch 140 | Train Loss: 0.2394 | Train Accuracy: 0.9415 | Validation Loss: 0.3025 | Validation Accuracy: 0.9459 | Validation Mean Precision: 0.8786 | Validation Mean Recall: 0.8632 | Validation Mean F1_score: 0.8692
2024-05-29 01:09:39 INFO: Epoch 141 | Train Loss: 0.2264 | Train Accuracy: 0.9451 | Validation Loss: 0.3347 | Validation Accuracy: 0.9142 | Validation Mean Precision: 0.8398 | Validation Mean Recall: 0.8613 | Validation Mean F1_score: 0.8476
2024-05-29 01:09:41 INFO: Epoch 142 | Train Loss: 0.2311 | Train Accuracy: 0.9445 | Validation Loss: 0.3079 | Validation Accuracy: 0.9411 | Validation Mean Precision: 0.8551 | Validation Mean Recall: 0.8717 | Validation Mean F1_score: 0.8614
2024-05-29 01:09:42 INFO: Epoch 143 | Train Loss: 0.2273 | Train Accuracy: 0.9443 | Validation Loss: 0.2940 | Validation Accuracy: 0.9415 | Validation Mean Precision: 0.8405 | Validation Mean Recall: 0.8832 | Validation Mean F1_score: 0.8584
2024-05-29 01:09:44 INFO: Epoch 144 | Train Loss: 0.2301 | Train Accuracy: 0.9426 | Validation Loss: 0.2795 | Validation Accuracy: 0.9423 | Validation Mean Precision: 0.8480 | Validation Mean Recall: 0.8835 | Validation Mean F1_score: 0.8631
2024-05-29 01:09:45 INFO: Epoch 145 | Train Loss: 0.2287 | Train Accuracy: 0.9466 | Validation Loss: 0.2916 | Validation Accuracy: 0.9423 | Validation Mean Precision: 0.8783 | Validation Mean Recall: 0.8773 | Validation Mean F1_score: 0.8776
2024-05-29 01:09:46 INFO: Epoch 146 | Train Loss: 0.2211 | Train Accuracy: 0.9451 | Validation Loss: 0.2923 | Validation Accuracy: 0.9523 | Validation Mean Precision: 0.8744 | Validation Mean Recall: 0.8823 | Validation Mean F1_score: 0.8773
2024-05-29 01:09:48 INFO: Epoch 147 | Train Loss: 0.2251 | Train Accuracy: 0.9453 | Validation Loss: 0.2950 | Validation Accuracy: 0.9389 | Validation Mean Precision: 0.8420 | Validation Mean Recall: 0.8840 | Validation Mean F1_score: 0.8605
2024-05-29 01:09:49 INFO: Epoch 148 | Train Loss: 0.2266 | Train Accuracy: 0.9455 | Validation Loss: 0.3134 | Validation Accuracy: 0.9547 | Validation Mean Precision: 0.9031 | Validation Mean Recall: 0.8579 | Validation Mean F1_score: 0.8784
2024-05-29 01:09:51 INFO: Epoch 149 | Train Loss: 0.2201 | Train Accuracy: 0.9451 | Validation Loss: 0.3001 | Validation Accuracy: 0.9509 | Validation Mean Precision: 0.8832 | Validation Mean Recall: 0.8781 | Validation Mean F1_score: 0.8803
2024-05-29 01:09:52 INFO: Epoch 150 | Train Loss: 0.2248 | Train Accuracy: 0.9472 | Validation Loss: 0.2832 | Validation Accuracy: 0.9423 | Validation Mean Precision: 0.8776 | Validation Mean Recall: 0.8634 | Validation Mean F1_score: 0.8686
2024-05-29 01:09:52 INFO: Best Validation F1 Score (Macro): 0.8918
2024-05-29 01:09:52 INFO: Best Validation Recall (Macro): 0.8739
2024-05-29 01:09:52 INFO: Best Validation Precision (Macro): 0.9127
2024-05-29 01:09:52 INFO: Best Epoch: 135
2024-05-29 01:09:53 INFO: Infer Result:
2024-05-29 01:09:53 INFO: Prediction errors: 276
2024-05-29 01:09:53 INFO: Prediction error percentage: 5.29%
2024-05-29 01:09:53 INFO: Total samples: 5218
2024-05-29 01:09:53 INFO: Infer Result End:
2024-05-29 01:09:54 INFO: Class weights: tensor([21.1878, 3.1149, 0.7420, 0.4378], device='cuda:0')
2024-05-29 01:09:55 INFO: Epoch 001 | Train Loss: 0.7153 | Train Accuracy: 0.7340 | Validation Loss: 0.3855 | Validation Accuracy: 0.8579 | Validation Mean Precision: 0.7364 | Validation Mean Recall: 0.8465 | Validation Mean F1_score: 0.7803
2024-05-29 01:09:57 INFO: Epoch 002 | Train Loss: 0.3869 | Train Accuracy: 0.8727 | Validation Loss: 0.3771 | Validation Accuracy: 0.8960 | Validation Mean Precision: 0.8236 | Validation Mean Recall: 0.8232 | Validation Mean F1_score: 0.8229
2024-05-29 01:09:58 INFO: Epoch 003 | Train Loss: 0.3729 | Train Accuracy: 0.8802 | Validation Loss: 0.3644 | Validation Accuracy: 0.8915 | Validation Mean Precision: 0.8278 | Validation Mean Recall: 0.8135 | Validation Mean F1_score: 0.8188
2024-05-29 01:10:00 INFO: Epoch 004 | Train Loss: 0.3626 | Train Accuracy: 0.8838 | Validation Loss: 0.3687 | Validation Accuracy: 0.8912 | Validation Mean Precision: 0.8143 | Validation Mean Recall: 0.8141 | Validation Mean F1_score: 0.8088
2024-05-29 01:10:01 INFO: Epoch 005 | Train Loss: 0.3617 | Train Accuracy: 0.8846 | Validation Loss: 0.3838 | Validation Accuracy: 0.8994 | Validation Mean Precision: 0.8640 | Validation Mean Recall: 0.7868 | Validation Mean F1_score: 0.8173
2024-05-29 01:10:03 INFO: Epoch 006 | Train Loss: 0.3598 | Train Accuracy: 0.8884 | Validation Loss: 0.3625 | Validation Accuracy: 0.8797 | Validation Mean Precision: 0.8158 | Validation Mean Recall: 0.8171 | Validation Mean F1_score: 0.8122
2024-05-29 01:10:04 INFO: Epoch 007 | Train Loss: 0.3538 | Train Accuracy: 0.8877 | Validation Loss: 0.3807 | Validation Accuracy: 0.9011 | Validation Mean Precision: 0.8244 | Validation Mean Recall: 0.8377 | Validation Mean F1_score: 0.8253
2024-05-29 01:10:06 INFO: Epoch 008 | Train Loss: 0.3549 | Train Accuracy: 0.8872 | Validation Loss: 0.3486 | Validation Accuracy: 0.8977 | Validation Mean Precision: 0.8069 | Validation Mean Recall: 0.8500 | Validation Mean F1_score: 0.8255
2024-05-29 01:10:07 INFO: Epoch 009 | Train Loss: 0.3569 | Train Accuracy: 0.8903 | Validation Loss: 0.3481 | Validation Accuracy: 0.9042 | Validation Mean Precision: 0.8344 | Validation Mean Recall: 0.8363 | Validation Mean F1_score: 0.8353
2024-05-29 01:10:09 INFO: Epoch 010 | Train Loss: 0.3561 | Train Accuracy: 0.8857 | Validation Loss: 0.3606 | Validation Accuracy: 0.8939 | Validation Mean Precision: 0.7999 | Validation Mean Recall: 0.8533 | Validation Mean F1_score: 0.8184
2024-05-29 01:10:10 INFO: Epoch 011 | Train Loss: 0.3514 | Train Accuracy: 0.8919 | Validation Loss: 0.3448 | Validation Accuracy: 0.8963 | Validation Mean Precision: 0.8194 | Validation Mean Recall: 0.8499 | Validation Mean F1_score: 0.8338
2024-05-29 01:10:11 INFO: Epoch 012 | Train Loss: 0.3464 | Train Accuracy: 0.8920 | Validation Loss: 0.4253 | Validation Accuracy: 0.8244 | Validation Mean Precision: 0.7776 | Validation Mean Recall: 0.8241 | Validation Mean F1_score: 0.7930
2024-05-29 01:10:13 INFO: Epoch 013 | Train Loss: 0.3534 | Train Accuracy: 0.8903 | Validation Loss: 0.3526 | Validation Accuracy: 0.9063 | Validation Mean Precision: 0.8406 | Validation Mean Recall: 0.8238 | Validation Mean F1_score: 0.8318
2024-05-29 01:10:14 INFO: Epoch 014 | Train Loss: 0.3552 | Train Accuracy: 0.8912 | Validation Loss: 0.3485 | Validation Accuracy: 0.8864 | Validation Mean Precision: 0.8004 | Validation Mean Recall: 0.8515 | Validation Mean F1_score: 0.8229
2024-05-29 01:10:16 INFO: Epoch 015 | Train Loss: 0.3518 | Train Accuracy: 0.8903 | Validation Loss: 0.3456 | Validation Accuracy: 0.8970 | Validation Mean Precision: 0.8218 | Validation Mean Recall: 0.8341 | Validation Mean F1_score: 0.8272
2024-05-29 01:10:17 INFO: Epoch 016 | Train Loss: 0.3447 | Train Accuracy: 0.8915 | Validation Loss: 0.3723 | Validation Accuracy: 0.8953 | Validation Mean Precision: 0.8107 | Validation Mean Recall: 0.8414 | Validation Mean F1_score: 0.8198
2024-05-29 01:10:19 INFO: Epoch 017 | Train Loss: 0.3465 | Train Accuracy: 0.8955 | Validation Loss: 0.3739 | Validation Accuracy: 0.9003 | Validation Mean Precision: 0.8512 | Validation Mean Recall: 0.8323 | Validation Mean F1_score: 0.8394
2024-05-29 01:10:20 INFO: Epoch 018 | Train Loss: 0.3487 | Train Accuracy: 0.8912 | Validation Loss: 0.3505 | Validation Accuracy: 0.9015 | Validation Mean Precision: 0.8415 | Validation Mean Recall: 0.8071 | Validation Mean F1_score: 0.8215
2024-05-29 01:10:22 INFO: Epoch 019 | Train Loss: 0.3456 | Train Accuracy: 0.8959 | Validation Loss: 0.3628 | Validation Accuracy: 0.8893 | Validation Mean Precision: 0.8132 | Validation Mean Recall: 0.8352 | Validation Mean F1_score: 0.8177
2024-05-29 01:10:23 INFO: Epoch 020 | Train Loss: 0.3460 | Train Accuracy: 0.8949 | Validation Loss: 0.3566 | Validation Accuracy: 0.8860 | Validation Mean Precision: 0.7617 | Validation Mean Recall: 0.8656 | Validation Mean F1_score: 0.8009
2024-05-29 01:10:25 INFO: Epoch 021 | Train Loss: 0.3447 | Train Accuracy: 0.8946 | Validation Loss: 0.3573 | Validation Accuracy: 0.9051 | Validation Mean Precision: 0.8354 | Validation Mean Recall: 0.8056 | Validation Mean F1_score: 0.8175
2024-05-29 01:10:26 INFO: Epoch 022 | Train Loss: 0.3391 | Train Accuracy: 0.8954 | Validation Loss: 0.3559 | Validation Accuracy: 0.9034 | Validation Mean Precision: 0.7991 | Validation Mean Recall: 0.8563 | Validation Mean F1_score: 0.8178
2024-05-29 01:10:28 INFO: Epoch 023 | Train Loss: 0.3366 | Train Accuracy: 0.8990 | Validation Loss: 0.3500 | Validation Accuracy: 0.9116 | Validation Mean Precision: 0.8469 | Validation Mean Recall: 0.8488 | Validation Mean F1_score: 0.8458
2024-05-29 01:10:30 INFO: Epoch 024 | Train Loss: 0.3260 | Train Accuracy: 0.9006 | Validation Loss: 0.3413 | Validation Accuracy: 0.8886 | Validation Mean Precision: 0.8000 | Validation Mean Recall: 0.8478 | Validation Mean F1_score: 0.8180
2024-05-29 01:10:31 INFO: Epoch 025 | Train Loss: 0.3264 | Train Accuracy: 0.9026 | Validation Loss: 0.3468 | Validation Accuracy: 0.8840 | Validation Mean Precision: 0.8166 | Validation Mean Recall: 0.8548 | Validation Mean F1_score: 0.8311
2024-05-29 01:10:33 INFO: Epoch 026 | Train Loss: 0.3199 | Train Accuracy: 0.9057 | Validation Loss: 0.3456 | Validation Accuracy: 0.9188 | Validation Mean Precision: 0.8186 | Validation Mean Recall: 0.8632 | Validation Mean F1_score: 0.8298
2024-05-29 01:10:34 INFO: Epoch 027 | Train Loss: 0.3121 | Train Accuracy: 0.9085 | Validation Loss: 0.3176 | Validation Accuracy: 0.9229 | Validation Mean Precision: 0.8549 | Validation Mean Recall: 0.8609 | Validation Mean F1_score: 0.8577
2024-05-29 01:10:36 INFO: Epoch 028 | Train Loss: 0.3128 | Train Accuracy: 0.9088 | Validation Loss: 0.3313 | Validation Accuracy: 0.9030 | Validation Mean Precision: 0.8433 | Validation Mean Recall: 0.8171 | Validation Mean F1_score: 0.8277
2024-05-29 01:10:37 INFO: Epoch 029 | Train Loss: 0.3048 | Train Accuracy: 0.9121 | Validation Loss: 0.3351 | Validation Accuracy: 0.8896 | Validation Mean Precision: 0.8207 | Validation Mean Recall: 0.8580 | Validation Mean F1_score: 0.8375
2024-05-29 01:10:39 INFO: Epoch 030 | Train Loss: 0.3070 | Train Accuracy: 0.9118 | Validation Loss: 0.3896 | Validation Accuracy: 0.9308 | Validation Mean Precision: 0.9174 | Validation Mean Recall: 0.7874 | Validation Mean F1_score: 0.8335
2024-05-29 01:10:41 INFO: Epoch 031 | Train Loss: 0.3086 | Train Accuracy: 0.9126 | Validation Loss: 0.3215 | Validation Accuracy: 0.9272 | Validation Mean Precision: 0.8323 | Validation Mean Recall: 0.8757 | Validation Mean F1_score: 0.8484
2024-05-29 01:10:42 INFO: Epoch 032 | Train Loss: 0.2959 | Train Accuracy: 0.9132 | Validation Loss: 0.3049 | Validation Accuracy: 0.9166 | Validation Mean Precision: 0.8345 | Validation Mean Recall: 0.8784 | Validation Mean F1_score: 0.8547
2024-05-29 01:10:44 INFO: Epoch 033 | Train Loss: 0.3047 | Train Accuracy: 0.9145 | Validation Loss: 0.3062 | Validation Accuracy: 0.9281 | Validation Mean Precision: 0.8512 | Validation Mean Recall: 0.8437 | Validation Mean F1_score: 0.8453
2024-05-29 01:10:45 INFO: Epoch 034 | Train Loss: 0.2985 | Train Accuracy: 0.9163 | Validation Loss: 0.3060 | Validation Accuracy: 0.9193 | Validation Mean Precision: 0.8429 | Validation Mean Recall: 0.8732 | Validation Mean F1_score: 0.8570
2024-05-29 01:10:47 INFO: Epoch 035 | Train Loss: 0.2927 | Train Accuracy: 0.9151 | Validation Loss: 0.3039 | Validation Accuracy: 0.9138 | Validation Mean Precision: 0.8351 | Validation Mean Recall: 0.8775 | Validation Mean F1_score: 0.8543
2024-05-29 01:10:48 INFO: Epoch 036 | Train Loss: 0.2896 | Train Accuracy: 0.9177 | Validation Loss: 0.3140 | Validation Accuracy: 0.9322 | Validation Mean Precision: 0.8434 | Validation Mean Recall: 0.8705 | Validation Mean F1_score: 0.8519
2024-05-29 01:10:50 INFO: Epoch 037 | Train Loss: 0.2899 | Train Accuracy: 0.9188 | Validation Loss: 0.3012 | Validation Accuracy: 0.9176 | Validation Mean Precision: 0.8340 | Validation Mean Recall: 0.8794 | Validation Mean F1_score: 0.8539
2024-05-29 01:10:51 INFO: Epoch 038 | Train Loss: 0.2863 | Train Accuracy: 0.9207 | Validation Loss: 0.3030 | Validation Accuracy: 0.9231 | Validation Mean Precision: 0.8070 | Validation Mean Recall: 0.8945 | Validation Mean F1_score: 0.8400
2024-05-29 01:10:53 INFO: Epoch 039 | Train Loss: 0.2907 | Train Accuracy: 0.9194 | Validation Loss: 0.3020 | Validation Accuracy: 0.9250 | Validation Mean Precision: 0.8040 | Validation Mean Recall: 0.8742 | Validation Mean F1_score: 0.8310
2024-05-29 01:10:54 INFO: Epoch 040 | Train Loss: 0.2924 | Train Accuracy: 0.9205 | Validation Loss: 0.2926 | Validation Accuracy: 0.9190 | Validation Mean Precision: 0.8339 | Validation Mean Recall: 0.8848 | Validation Mean F1_score: 0.8564
2024-05-29 01:10:55 INFO: Epoch 041 | Train Loss: 0.2851 | Train Accuracy: 0.9194 | Validation Loss: 0.2905 | Validation Accuracy: 0.9372 | Validation Mean Precision: 0.8701 | Validation Mean Recall: 0.8803 | Validation Mean F1_score: 0.8746
2024-05-29 01:10:57 INFO: Epoch 042 | Train Loss: 0.2851 | Train Accuracy: 0.9224 | Validation Loss: 0.2880 | Validation Accuracy: 0.9351 | Validation Mean Precision: 0.8657 | Validation Mean Recall: 0.8688 | Validation Mean F1_score: 0.8664
2024-05-29 01:10:58 INFO: Epoch 043 | Train Loss: 0.2797 | Train Accuracy: 0.9250 | Validation Loss: 0.3238 | Validation Accuracy: 0.8979 | Validation Mean Precision: 0.8217 | Validation Mean Recall: 0.8565 | Validation Mean F1_score: 0.8367
2024-05-29 01:11:00 INFO: Epoch 044 | Train Loss: 0.2775 | Train Accuracy: 0.9228 | Validation Loss: 0.2947 | Validation Accuracy: 0.9193 | Validation Mean Precision: 0.8022 | Validation Mean Recall: 0.8744 | Validation Mean F1_score: 0.8306
2024-05-29 01:11:02 INFO: Epoch 045 | Train Loss: 0.2753 | Train Accuracy: 0.9261 | Validation Loss: 0.2843 | Validation Accuracy: 0.9363 | Validation Mean Precision: 0.8575 | Validation Mean Recall: 0.8772 | Validation Mean F1_score: 0.8659
2024-05-29 01:11:03 INFO: Epoch 046 | Train Loss: 0.2702 | Train Accuracy: 0.9260 | Validation Loss: 0.3121 | Validation Accuracy: 0.9334 | Validation Mean Precision: 0.8922 | Validation Mean Recall: 0.8340 | Validation Mean F1_score: 0.8572
2024-05-29 01:11:05 INFO: Epoch 047 | Train Loss: 0.2709 | Train Accuracy: 0.9273 | Validation Loss: 0.2895 | Validation Accuracy: 0.9391 | Validation Mean Precision: 0.8918 | Validation Mean Recall: 0.8594 | Validation Mean F1_score: 0.8749
2024-05-29 01:11:06 INFO: Epoch 048 | Train Loss: 0.2790 | Train Accuracy: 0.9240 | Validation Loss: 0.2837 | Validation Accuracy: 0.9425 | Validation Mean Precision: 0.8962 | Validation Mean Recall: 0.8756 | Validation Mean F1_score: 0.8851
2024-05-29 01:11:08 INFO: Epoch 049 | Train Loss: 0.2739 | Train Accuracy: 0.9266 | Validation Loss: 0.2945 | Validation Accuracy: 0.9123 | Validation Mean Precision: 0.7993 | Validation Mean Recall: 0.8767 | Validation Mean F1_score: 0.8307
2024-05-29 01:11:09 INFO: Epoch 050 | Train Loss: 0.2743 | Train Accuracy: 0.9259 | Validation Loss: 0.2828 | Validation Accuracy: 0.9217 | Validation Mean Precision: 0.8427 | Validation Mean Recall: 0.8726 | Validation Mean F1_score: 0.8566
2024-05-29 01:11:11 INFO: Epoch 051 | Train Loss: 0.2698 | Train Accuracy: 0.9280 | Validation Loss: 0.2861 | Validation Accuracy: 0.9152 | Validation Mean Precision: 0.8464 | Validation Mean Recall: 0.8744 | Validation Mean F1_score: 0.8596
2024-05-29 01:11:12 INFO: Epoch 052 | Train Loss: 0.2723 | Train Accuracy: 0.9254 | Validation Loss: 0.2761 | Validation Accuracy: 0.9341 | Validation Mean Precision: 0.8384 | Validation Mean Recall: 0.9002 | Validation Mean F1_score: 0.8632
2024-05-29 01:11:14 INFO: Epoch 053 | Train Loss: 0.2654 | Train Accuracy: 0.9287 | Validation Loss: 0.2775 | Validation Accuracy: 0.9439 | Validation Mean Precision: 0.9045 | Validation Mean Recall: 0.8643 | Validation Mean F1_score: 0.8826
2024-05-29 01:11:15 INFO: Epoch 054 | Train Loss: 0.2657 | Train Accuracy: 0.9287 | Validation Loss: 0.2999 | Validation Accuracy: 0.9044 | Validation Mean Precision: 0.8346 | Validation Mean Recall: 0.8505 | Validation Mean F1_score: 0.8404
2024-05-29 01:11:17 INFO: Epoch 055 | Train Loss: 0.2673 | Train Accuracy: 0.9313 | Validation Loss: 0.2771 | Validation Accuracy: 0.9401 | Validation Mean Precision: 0.8600 | Validation Mean Recall: 0.8788 | Validation Mean F1_score: 0.8675
2024-05-29 01:11:18 INFO: Epoch 056 | Train Loss: 0.2655 | Train Accuracy: 0.9294 | Validation Loss: 0.2879 | Validation Accuracy: 0.9420 | Validation Mean Precision: 0.8785 | Validation Mean Recall: 0.8743 | Validation Mean F1_score: 0.8739
2024-05-29 01:11:19 INFO: Epoch 057 | Train Loss: 0.2641 | Train Accuracy: 0.9294 | Validation Loss: 0.2677 | Validation Accuracy: 0.9305 | Validation Mean Precision: 0.8363 | Validation Mean Recall: 0.8826 | Validation Mean F1_score: 0.8563
2024-05-29 01:11:21 INFO: Epoch 058 | Train Loss: 0.2594 | Train Accuracy: 0.9315 | Validation Loss: 0.2707 | Validation Accuracy: 0.9260 | Validation Mean Precision: 0.8238 | Validation Mean Recall: 0.8940 | Validation Mean F1_score: 0.8536
2024-05-29 01:11:22 INFO: Epoch 059 | Train Loss: 0.2617 | Train Accuracy: 0.9338 | Validation Loss: 0.2643 | Validation Accuracy: 0.9379 | Validation Mean Precision: 0.8479 | Validation Mean Recall: 0.8942 | Validation Mean F1_score: 0.8659
2024-05-29 01:11:24 INFO: Epoch 060 | Train Loss: 0.2569 | Train Accuracy: 0.9321 | Validation Loss: 0.2638 | Validation Accuracy: 0.9430 | Validation Mean Precision: 0.8675 | Validation Mean Recall: 0.8817 | Validation Mean F1_score: 0.8726
2024-05-29 01:11:26 INFO: Epoch 061 | Train Loss: 0.2625 | Train Accuracy: 0.9306 | Validation Loss: 0.3039 | Validation Accuracy: 0.9336 | Validation Mean Precision: 0.8855 | Validation Mean Recall: 0.8657 | Validation Mean F1_score: 0.8732
2024-05-29 01:11:27 INFO: Epoch 062 | Train Loss: 0.2603 | Train Accuracy: 0.9309 | Validation Loss: 0.2673 | Validation Accuracy: 0.9274 | Validation Mean Precision: 0.8403 | Validation Mean Recall: 0.8833 | Validation Mean F1_score: 0.8599
2024-05-29 01:11:29 INFO: Epoch 063 | Train Loss: 0.2590 | Train Accuracy: 0.9335 | Validation Loss: 0.2725 | Validation Accuracy: 0.9439 | Validation Mean Precision: 0.9112 | Validation Mean Recall: 0.8662 | Validation Mean F1_score: 0.8867
2024-05-29 01:11:30 INFO: Epoch 064 | Train Loss: 0.2616 | Train Accuracy: 0.9327 | Validation Loss: 0.2650 | Validation Accuracy: 0.9365 | Validation Mean Precision: 0.8602 | Validation Mean Recall: 0.8991 | Validation Mean F1_score: 0.8761
2024-05-29 01:11:32 INFO: Epoch 065 | Train Loss: 0.2493 | Train Accuracy: 0.9362 | Validation Loss: 0.2712 | Validation Accuracy: 0.9442 | Validation Mean Precision: 0.8534 | Validation Mean Recall: 0.8945 | Validation Mean F1_score: 0.8651
2024-05-29 01:11:33 INFO: Epoch 066 | Train Loss: 0.2582 | Train Accuracy: 0.9297 | Validation Loss: 0.2670 | Validation Accuracy: 0.9415 | Validation Mean Precision: 0.8514 | Validation Mean Recall: 0.8869 | Validation Mean F1_score: 0.8645
2024-05-29 01:11:35 INFO: Epoch 067 | Train Loss: 0.2598 | Train Accuracy: 0.9332 | Validation Loss: 0.2765 | Validation Accuracy: 0.9197 | Validation Mean Precision: 0.8676 | Validation Mean Recall: 0.8667 | Validation Mean F1_score: 0.8670
2024-05-29 01:11:36 INFO: Epoch 068 | Train Loss: 0.2601 | Train Accuracy: 0.9302 | Validation Loss: 0.2669 | Validation Accuracy: 0.9415 | Validation Mean Precision: 0.8963 | Validation Mean Recall: 0.8715 | Validation Mean F1_score: 0.8824
2024-05-29 01:11:38 INFO: Epoch 069 | Train Loss: 0.2609 | Train Accuracy: 0.9323 | Validation Loss: 0.2747 | Validation Accuracy: 0.9305 | Validation Mean Precision: 0.8149 | Validation Mean Recall: 0.8885 | Validation Mean F1_score: 0.8423
2024-05-29 01:11:40 INFO: Epoch 070 | Train Loss: 0.2543 | Train Accuracy: 0.9336 | Validation Loss: 0.2802 | Validation Accuracy: 0.9193 | Validation Mean Precision: 0.8160 | Validation Mean Recall: 0.8889 | Validation Mean F1_score: 0.8465
2024-05-29 01:11:42 INFO: Epoch 071 | Train Loss: 0.2506 | Train Accuracy: 0.9366 | Validation Loss: 0.2599 | Validation Accuracy: 0.9478 | Validation Mean Precision: 0.9094 | Validation Mean Recall: 0.8801 | Validation Mean F1_score: 0.8939
2024-05-29 01:11:43 INFO: Epoch 072 | Train Loss: 0.2561 | Train Accuracy: 0.9327 | Validation Loss: 0.2603 | Validation Accuracy: 0.9444 | Validation Mean Precision: 0.8659 | Validation Mean Recall: 0.8944 | Validation Mean F1_score: 0.8757
2024-05-29 01:11:45 INFO: Epoch 073 | Train Loss: 0.2520 | Train Accuracy: 0.9353 | Validation Loss: 0.2702 | Validation Accuracy: 0.9377 | Validation Mean Precision: 0.8264 | Validation Mean Recall: 0.8977 | Validation Mean F1_score: 0.8513
2024-05-29 01:11:46 INFO: Epoch 074 | Train Loss: 0.2481 | Train Accuracy: 0.9343 | Validation Loss: 0.2680 | Validation Accuracy: 0.9274 | Validation Mean Precision: 0.8202 | Validation Mean Recall: 0.8893 | Validation Mean F1_score: 0.8472
2024-05-29 01:11:48 INFO: Epoch 075 | Train Loss: 0.2522 | Train Accuracy: 0.9351 | Validation Loss: 0.2735 | Validation Accuracy: 0.9193 | Validation Mean Precision: 0.8245 | Validation Mean Recall: 0.8841 | Validation Mean F1_score: 0.8512
2024-05-29 01:11:49 INFO: Epoch 076 | Train Loss: 0.2547 | Train Accuracy: 0.9346 | Validation Loss: 0.3240 | Validation Accuracy: 0.9123 | Validation Mean Precision: 0.8894 | Validation Mean Recall: 0.8398 | Validation Mean F1_score: 0.8617
2024-05-29 01:11:51 INFO: Epoch 077 | Train Loss: 0.2498 | Train Accuracy: 0.9393 | Validation Loss: 0.2805 | Validation Accuracy: 0.9188 | Validation Mean Precision: 0.7940 | Validation Mean Recall: 0.8892 | Validation Mean F1_score: 0.8308
2024-05-29 01:11:52 INFO: Epoch 078 | Train Loss: 0.2471 | Train Accuracy: 0.9360 | Validation Loss: 0.2699 | Validation Accuracy: 0.9439 | Validation Mean Precision: 0.8825 | Validation Mean Recall: 0.8944 | Validation Mean F1_score: 0.8848
2024-05-29 01:11:54 INFO: Epoch 079 | Train Loss: 0.2487 | Train Accuracy: 0.9356 | Validation Loss: 0.2776 | Validation Accuracy: 0.9339 | Validation Mean Precision: 0.8538 | Validation Mean Recall: 0.8796 | Validation Mean F1_score: 0.8654
2024-05-29 01:11:55 INFO: Epoch 080 | Train Loss: 0.2572 | Train Accuracy: 0.9366 | Validation Loss: 0.2511 | Validation Accuracy: 0.9406 | Validation Mean Precision: 0.8664 | Validation Mean Recall: 0.8982 | Validation Mean F1_score: 0.8802
2024-05-29 01:11:57 INFO: Epoch 081 | Train Loss: 0.2506 | Train Accuracy: 0.9360 | Validation Loss: 0.2938 | Validation Accuracy: 0.9248 | Validation Mean Precision: 0.7877 | Validation Mean Recall: 0.8899 | Validation Mean F1_score: 0.8225
2024-05-29 01:11:58 INFO: Epoch 082 | Train Loss: 0.2437 | Train Accuracy: 0.9394 | Validation Loss: 0.2564 | Validation Accuracy: 0.9372 | Validation Mean Precision: 0.8497 | Validation Mean Recall: 0.8953 | Validation Mean F1_score: 0.8694
2024-05-29 01:12:00 INFO: Epoch 083 | Train Loss: 0.2443 | Train Accuracy: 0.9384 | Validation Loss: 0.2602 | Validation Accuracy: 0.9363 | Validation Mean Precision: 0.8785 | Validation Mean Recall: 0.8850 | Validation Mean F1_score: 0.8812
2024-05-29 01:12:01 INFO: Epoch 084 | Train Loss: 0.2452 | Train Accuracy: 0.9362 | Validation Loss: 0.2597 | Validation Accuracy: 0.9396 | Validation Mean Precision: 0.8585 | Validation Mean Recall: 0.8910 | Validation Mean F1_score: 0.8725
2024-05-29 01:12:03 INFO: Epoch 085 | Train Loss: 0.2435 | Train Accuracy: 0.9352 | Validation Loss: 0.2677 | Validation Accuracy: 0.9444 | Validation Mean Precision: 0.9117 | Validation Mean Recall: 0.8634 | Validation Mean F1_score: 0.8844
2024-05-29 01:12:04 INFO: Epoch 086 | Train Loss: 0.2476 | Train Accuracy: 0.9402 | Validation Loss: 0.2685 | Validation Accuracy: 0.9339 | Validation Mean Precision: 0.8227 | Validation Mean Recall: 0.8931 | Validation Mean F1_score: 0.8450
2024-05-29 01:12:06 INFO: Epoch 087 | Train Loss: 0.2483 | Train Accuracy: 0.9378 | Validation Loss: 0.2700 | Validation Accuracy: 0.9459 | Validation Mean Precision: 0.8503 | Validation Mean Recall: 0.8925 | Validation Mean F1_score: 0.8636
2024-05-29 01:12:08 INFO: Epoch 088 | Train Loss: 0.2434 | Train Accuracy: 0.9364 | Validation Loss: 0.2546 | Validation Accuracy: 0.9423 | Validation Mean Precision: 0.9009 | Validation Mean Recall: 0.8806 | Validation Mean F1_score: 0.8901
2024-05-29 01:12:09 INFO: Epoch 089 | Train Loss: 0.2387 | Train Accuracy: 0.9374 | Validation Loss: 0.2575 | Validation Accuracy: 0.9447 | Validation Mean Precision: 0.8725 | Validation Mean Recall: 0.8967 | Validation Mean F1_score: 0.8812
2024-05-29 01:12:11 INFO: Epoch 090 | Train Loss: 0.2502 | Train Accuracy: 0.9339 | Validation Loss: 0.2569 | Validation Accuracy: 0.9423 | Validation Mean Precision: 0.8874 | Validation Mean Recall: 0.8838 | Validation Mean F1_score: 0.8856
2024-05-29 01:12:12 INFO: Epoch 091 | Train Loss: 0.2408 | Train Accuracy: 0.9385 | Validation Loss: 0.2585 | Validation Accuracy: 0.9459 | Validation Mean Precision: 0.8800 | Validation Mean Recall: 0.8921 | Validation Mean F1_score: 0.8820
2024-05-29 01:12:14 INFO: Epoch 092 | Train Loss: 0.2420 | Train Accuracy: 0.9387 | Validation Loss: 0.2552 | Validation Accuracy: 0.9480 | Validation Mean Precision: 0.8807 | Validation Mean Recall: 0.8985 | Validation Mean F1_score: 0.8866
2024-05-29 01:12:15 INFO: Epoch 093 | Train Loss: 0.2379 | Train Accuracy: 0.9394 | Validation Loss: 0.2599 | Validation Accuracy: 0.9411 | Validation Mean Precision: 0.8927 | Validation Mean Recall: 0.8822 | Validation Mean F1_score: 0.8868
2024-05-29 01:12:16 INFO: Epoch 094 | Train Loss: 0.2454 | Train Accuracy: 0.9393 | Validation Loss: 0.2661 | Validation Accuracy: 0.9339 | Validation Mean Precision: 0.8435 | Validation Mean Recall: 0.8907 | Validation Mean F1_score: 0.8642
2024-05-29 01:12:18 INFO: Epoch 095 | Train Loss: 0.2451 | Train Accuracy: 0.9379 | Validation Loss: 0.2583 | Validation Accuracy: 0.9365 | Validation Mean Precision: 0.8730 | Validation Mean Recall: 0.8885 | Validation Mean F1_score: 0.8802
2024-05-29 01:12:19 INFO: Epoch 096 | Train Loss: 0.2467 | Train Accuracy: 0.9383 | Validation Loss: 0.2601 | Validation Accuracy: 0.9439 | Validation Mean Precision: 0.8610 | Validation Mean Recall: 0.8937 | Validation Mean F1_score: 0.8725
2024-05-29 01:12:21 INFO: Epoch 097 | Train Loss: 0.2420 | Train Accuracy: 0.9386 | Validation Loss: 0.2540 | Validation Accuracy: 0.9399 | Validation Mean Precision: 0.8324 | Validation Mean Recall: 0.8900 | Validation Mean F1_score: 0.8544
2024-05-29 01:12:22 INFO: Epoch 098 | Train Loss: 0.2386 | Train Accuracy: 0.9376 | Validation Loss: 0.3058 | Validation Accuracy: 0.8941 | Validation Mean Precision: 0.7867 | Validation Mean Recall: 0.8765 | Validation Mean F1_score: 0.8249
2024-05-29 01:12:24 INFO: Epoch 099 | Train Loss: 0.2474 | Train Accuracy: 0.9330 | Validation Loss: 0.2698 | Validation Accuracy: 0.9451 | Validation Mean Precision: 0.8972 | Validation Mean Recall: 0.8685 | Validation Mean F1_score: 0.8821
2024-05-29 01:12:25 INFO: Epoch 100 | Train Loss: 0.2386 | Train Accuracy: 0.9400 | Validation Loss: 0.2691 | Validation Accuracy: 0.9456 | Validation Mean Precision: 0.8807 | Validation Mean Recall: 0.8983 | Validation Mean F1_score: 0.8867
2024-05-29 01:12:26 INFO: Epoch 101 | Train Loss: 0.2379 | Train Accuracy: 0.9388 | Validation Loss: 0.2913 | Validation Accuracy: 0.9118 | Validation Mean Precision: 0.8662 | Validation Mean Recall: 0.8597 | Validation Mean F1_score: 0.8601
2024-05-29 01:12:28 INFO: Epoch 102 | Train Loss: 0.2417 | Train Accuracy: 0.9402 | Validation Loss: 0.2545 | Validation Accuracy: 0.9492 | Validation Mean Precision: 0.8994 | Validation Mean Recall: 0.8907 | Validation Mean F1_score: 0.8947
2024-05-29 01:12:29 INFO: Epoch 103 | Train Loss: 0.2373 | Train Accuracy: 0.9405 | Validation Loss: 0.2559 | Validation Accuracy: 0.9468 | Validation Mean Precision: 0.8630 | Validation Mean Recall: 0.8946 | Validation Mean F1_score: 0.8734
2024-05-29 01:12:31 INFO: Epoch 104 | Train Loss: 0.2386 | Train Accuracy: 0.9402 | Validation Loss: 0.2571 | Validation Accuracy: 0.9485 | Validation Mean Precision: 0.8940 | Validation Mean Recall: 0.8795 | Validation Mean F1_score: 0.8862
2024-05-29 01:12:32 INFO: Epoch 105 | Train Loss: 0.2383 | Train Accuracy: 0.9399 | Validation Loss: 0.2599 | Validation Accuracy: 0.9473 | Validation Mean Precision: 0.9270 | Validation Mean Recall: 0.8749 | Validation Mean F1_score: 0.8987
2024-05-29 01:12:34 INFO: Epoch 106 | Train Loss: 0.2351 | Train Accuracy: 0.9403 | Validation Loss: 0.2768 | Validation Accuracy: 0.9394 | Validation Mean Precision: 0.8365 | Validation Mean Recall: 0.8886 | Validation Mean F1_score: 0.8547
2024-05-29 01:12:35 INFO: Epoch 107 | Train Loss: 0.2368 | Train Accuracy: 0.9414 | Validation Loss: 0.2615 | Validation Accuracy: 0.9379 | Validation Mean Precision: 0.8621 | Validation Mean Recall: 0.8880 | Validation Mean F1_score: 0.8737
2024-05-29 01:12:37 INFO: Epoch 108 | Train Loss: 0.2389 | Train Accuracy: 0.9409 | Validation Loss: 0.2585 | Validation Accuracy: 0.9298 | Validation Mean Precision: 0.8401 | Validation Mean Recall: 0.8891 | Validation Mean F1_score: 0.8622
2024-05-29 01:12:38 INFO: Epoch 109 | Train Loss: 0.2375 | Train Accuracy: 0.9400 | Validation Loss: 0.2929 | Validation Accuracy: 0.9415 | Validation Mean Precision: 0.8369 | Validation Mean Recall: 0.8850 | Validation Mean F1_score: 0.8461
2024-05-29 01:12:40 INFO: Epoch 110 | Train Loss: 0.2347 | Train Accuracy: 0.9405 | Validation Loss: 0.3048 | Validation Accuracy: 0.8991 | Validation Mean Precision: 0.8031 | Validation Mean Recall: 0.8789 | Validation Mean F1_score: 0.8356
2024-05-29 01:12:42 INFO: Epoch 111 | Train Loss: 0.2366 | Train Accuracy: 0.9398 | Validation Loss: 0.2538 | Validation Accuracy: 0.9475 | Validation Mean Precision: 0.8843 | Validation Mean Recall: 0.8884 | Validation Mean F1_score: 0.8856
2024-05-29 01:12:44 INFO: Epoch 112 | Train Loss: 0.2364 | Train Accuracy: 0.9410 | Validation Loss: 0.2593 | Validation Accuracy: 0.9485 | Validation Mean Precision: 0.9128 | Validation Mean Recall: 0.8733 | Validation Mean F1_score: 0.8917
2024-05-29 01:12:45 INFO: Epoch 113 | Train Loss: 0.2355 | Train Accuracy: 0.9414 | Validation Loss: 0.2456 | Validation Accuracy: 0.9442 | Validation Mean Precision: 0.8732 | Validation Mean Recall: 0.8889 | Validation Mean F1_score: 0.8805
2024-05-29 01:12:47 INFO: Epoch 114 | Train Loss: 0.2308 | Train Accuracy: 0.9405 | Validation Loss: 0.2547 | Validation Accuracy: 0.9509 | Validation Mean Precision: 0.8926 | Validation Mean Recall: 0.8934 | Validation Mean F1_score: 0.8917
2024-05-29 01:12:49 INFO: Epoch 115 | Train Loss: 0.2352 | Train Accuracy: 0.9398 | Validation Loss: 0.2585 | Validation Accuracy: 0.9516 | Validation Mean Precision: 0.9059 | Validation Mean Recall: 0.8819 | Validation Mean F1_score: 0.8934
2024-05-29 01:12:50 INFO: Epoch 116 | Train Loss: 0.2350 | Train Accuracy: 0.9418 | Validation Loss: 0.2582 | Validation Accuracy: 0.9437 | Validation Mean Precision: 0.8530 | Validation Mean Recall: 0.8864 | Validation Mean F1_score: 0.8667
2024-05-29 01:12:52 INFO: Epoch 117 | Train Loss: 0.2365 | Train Accuracy: 0.9412 | Validation Loss: 0.2547 | Validation Accuracy: 0.9418 | Validation Mean Precision: 0.8572 | Validation Mean Recall: 0.8984 | Validation Mean F1_score: 0.8743
2024-05-29 01:12:54 INFO: Epoch 118 | Train Loss: 0.2359 | Train Accuracy: 0.9421 | Validation Loss: 0.2676 | Validation Accuracy: 0.9226 | Validation Mean Precision: 0.8458 | Validation Mean Recall: 0.8865 | Validation Mean F1_score: 0.8648
2024-05-29 01:12:55 INFO: Epoch 119 | Train Loss: 0.2350 | Train Accuracy: 0.9417 | Validation Loss: 0.2670 | Validation Accuracy: 0.9233 | Validation Mean Precision: 0.8406 | Validation Mean Recall: 0.8663 | Validation Mean F1_score: 0.8529
2024-05-29 01:12:57 INFO: Epoch 120 | Train Loss: 0.2361 | Train Accuracy: 0.9419 | Validation Loss: 0.2471 | Validation Accuracy: 0.9454 | Validation Mean Precision: 0.9043 | Validation Mean Recall: 0.8730 | Validation Mean F1_score: 0.8868
2024-05-29 01:12:58 INFO: Epoch 121 | Train Loss: 0.2301 | Train Accuracy: 0.9425 | Validation Loss: 0.2528 | Validation Accuracy: 0.9435 | Validation Mean Precision: 0.8586 | Validation Mean Recall: 0.8952 | Validation Mean F1_score: 0.8735
2024-05-29 01:13:00 INFO: Epoch 122 | Train Loss: 0.2301 | Train Accuracy: 0.9428 | Validation Loss: 0.2522 | Validation Accuracy: 0.9368 | Validation Mean Precision: 0.8629 | Validation Mean Recall: 0.8920 | Validation Mean F1_score: 0.8765
2024-05-29 01:13:01 INFO: Epoch 123 | Train Loss: 0.2270 | Train Accuracy: 0.9430 | Validation Loss: 0.2535 | Validation Accuracy: 0.9483 | Validation Mean Precision: 0.8869 | Validation Mean Recall: 0.8861 | Validation Mean F1_score: 0.8854
2024-05-29 01:13:03 INFO: Epoch 124 | Train Loss: 0.2373 | Train Accuracy: 0.9407 | Validation Loss: 0.2443 | Validation Accuracy: 0.9499 | Validation Mean Precision: 0.9040 | Validation Mean Recall: 0.8877 | Validation Mean F1_score: 0.8953
2024-05-29 01:13:04 INFO: Epoch 125 | Train Loss: 0.2369 | Train Accuracy: 0.9408 | Validation Loss: 0.2487 | Validation Accuracy: 0.9408 | Validation Mean Precision: 0.8470 | Validation Mean Recall: 0.8950 | Validation Mean F1_score: 0.8669
2024-05-29 01:13:05 INFO: Epoch 126 | Train Loss: 0.2325 | Train Accuracy: 0.9406 | Validation Loss: 0.2493 | Validation Accuracy: 0.9451 | Validation Mean Precision: 0.8878 | Validation Mean Recall: 0.8862 | Validation Mean F1_score: 0.8862
2024-05-29 01:13:07 INFO: Epoch 127 | Train Loss: 0.2287 | Train Accuracy: 0.9436 | Validation Loss: 0.2560 | Validation Accuracy: 0.9497 | Validation Mean Precision: 0.9214 | Validation Mean Recall: 0.8633 | Validation Mean F1_score: 0.8888
2024-05-29 01:13:08 INFO: Epoch 128 | Train Loss: 0.2326 | Train Accuracy: 0.9425 | Validation Loss: 0.2499 | Validation Accuracy: 0.9473 | Validation Mean Precision: 0.9066 | Validation Mean Recall: 0.8545 | Validation Mean F1_score: 0.8769
2024-05-29 01:13:10 INFO: Epoch 129 | Train Loss: 0.2261 | Train Accuracy: 0.9439 | Validation Loss: 0.2410 | Validation Accuracy: 0.9468 | Validation Mean Precision: 0.8777 | Validation Mean Recall: 0.8924 | Validation Mean F1_score: 0.8840
2024-05-29 01:13:11 INFO: Epoch 130 | Train Loss: 0.2302 | Train Accuracy: 0.9420 | Validation Loss: 0.2591 | Validation Accuracy: 0.9468 | Validation Mean Precision: 0.9059 | Validation Mean Recall: 0.8826 | Validation Mean F1_score: 0.8934
2024-05-29 01:13:13 INFO: Epoch 131 | Train Loss: 0.2277 | Train Accuracy: 0.9424 | Validation Loss: 0.2433 | Validation Accuracy: 0.9418 | Validation Mean Precision: 0.8739 | Validation Mean Recall: 0.8906 | Validation Mean F1_score: 0.8817
2024-05-29 01:13:14 INFO: Epoch 132 | Train Loss: 0.2311 | Train Accuracy: 0.9432 | Validation Loss: 0.2515 | Validation Accuracy: 0.9483 | Validation Mean Precision: 0.8859 | Validation Mean Recall: 0.8938 | Validation Mean F1_score: 0.8871
2024-05-29 01:13:15 INFO: Epoch 133 | Train Loss: 0.2321 | Train Accuracy: 0.9453 | Validation Loss: 0.2674 | Validation Accuracy: 0.9391 | Validation Mean Precision: 0.8580 | Validation Mean Recall: 0.8718 | Validation Mean F1_score: 0.8639
2024-05-29 01:13:17 INFO: Epoch 134 | Train Loss: 0.2290 | Train Accuracy: 0.9418 | Validation Loss: 0.2519 | Validation Accuracy: 0.9478 | Validation Mean Precision: 0.8650 | Validation Mean Recall: 0.8955 | Validation Mean F1_score: 0.8749
2024-05-29 01:13:18 INFO: Epoch 135 | Train Loss: 0.2315 | Train Accuracy: 0.9430 | Validation Loss: 0.2515 | Validation Accuracy: 0.9430 | Validation Mean Precision: 0.8731 | Validation Mean Recall: 0.8855 | Validation Mean F1_score: 0.8788
2024-05-29 01:13:20 INFO: Epoch 136 | Train Loss: 0.2241 | Train Accuracy: 0.9444 | Validation Loss: 0.2534 | Validation Accuracy: 0.9384 | Validation Mean Precision: 0.8605 | Validation Mean Recall: 0.8888 | Validation Mean F1_score: 0.8722
2024-05-29 01:13:22 INFO: Epoch 137 | Train Loss: 0.2242 | Train Accuracy: 0.9451 | Validation Loss: 0.2517 | Validation Accuracy: 0.9466 | Validation Mean Precision: 0.8789 | Validation Mean Recall: 0.8929 | Validation Mean F1_score: 0.8835
2024-05-29 01:13:24 INFO: Epoch 138 | Train Loss: 0.2232 | Train Accuracy: 0.9460 | Validation Loss: 0.2462 | Validation Accuracy: 0.9449 | Validation Mean Precision: 0.8552 | Validation Mean Recall: 0.8826 | Validation Mean F1_score: 0.8662
2024-05-29 01:13:26 INFO: Epoch 139 | Train Loss: 0.2217 | Train Accuracy: 0.9437 | Validation Loss: 0.2574 | Validation Accuracy: 0.9406 | Validation Mean Precision: 0.8720 | Validation Mean Recall: 0.8893 | Validation Mean F1_score: 0.8796
2024-05-29 01:13:27 INFO: Epoch 140 | Train Loss: 0.2289 | Train Accuracy: 0.9464 | Validation Loss: 0.2516 | Validation Accuracy: 0.9415 | Validation Mean Precision: 0.9035 | Validation Mean Recall: 0.8865 | Validation Mean F1_score: 0.8946
2024-05-29 01:13:29 INFO: Epoch 141 | Train Loss: 0.2312 | Train Accuracy: 0.9439 | Validation Loss: 0.2439 | Validation Accuracy: 0.9499 | Validation Mean Precision: 0.8684 | Validation Mean Recall: 0.8967 | Validation Mean F1_score: 0.8771
2024-05-29 01:13:30 INFO: Epoch 142 | Train Loss: 0.2297 | Train Accuracy: 0.9418 | Validation Loss: 0.2441 | Validation Accuracy: 0.9447 | Validation Mean Precision: 0.8890 | Validation Mean Recall: 0.8807 | Validation Mean F1_score: 0.8845
2024-05-29 01:13:32 INFO: Epoch 143 | Train Loss: 0.2305 | Train Accuracy: 0.9445 | Validation Loss: 0.2535 | Validation Accuracy: 0.9454 | Validation Mean Precision: 0.8631 | Validation Mean Recall: 0.8980 | Validation Mean F1_score: 0.8765
2024-05-29 01:13:33 INFO: Epoch 144 | Train Loss: 0.2258 | Train Accuracy: 0.9448 | Validation Loss: 0.2426 | Validation Accuracy: 0.9487 | Validation Mean Precision: 0.8848 | Validation Mean Recall: 0.8961 | Validation Mean F1_score: 0.8885
2024-05-29 01:13:35 INFO: Epoch 145 | Train Loss: 0.2177 | Train Accuracy: 0.9453 | Validation Loss: 0.2586 | Validation Accuracy: 0.9399 | Validation Mean Precision: 0.8581 | Validation Mean Recall: 0.8820 | Validation Mean F1_score: 0.8683
2024-05-29 01:13:37 INFO: Epoch 146 | Train Loss: 0.2191 | Train Accuracy: 0.9460 | Validation Loss: 0.2532 | Validation Accuracy: 0.9368 | Validation Mean Precision: 0.8530 | Validation Mean Recall: 0.8699 | Validation Mean F1_score: 0.8604
2024-05-29 01:13:38 INFO: Epoch 147 | Train Loss: 0.2292 | Train Accuracy: 0.9462 | Validation Loss: 0.2493 | Validation Accuracy: 0.9456 | Validation Mean Precision: 0.8658 | Validation Mean Recall: 0.8877 | Validation Mean F1_score: 0.8744
2024-05-29 01:13:40 INFO: Epoch 148 | Train Loss: 0.2264 | Train Accuracy: 0.9430 | Validation Loss: 0.2436 | Validation Accuracy: 0.9471 | Validation Mean Precision: 0.8962 | Validation Mean Recall: 0.8813 | Validation Mean F1_score: 0.8883
2024-05-29 01:13:41 INFO: Epoch 149 | Train Loss: 0.2257 | Train Accuracy: 0.9436 | Validation Loss: 0.2408 | Validation Accuracy: 0.9502 | Validation Mean Precision: 0.8866 | Validation Mean Recall: 0.8838 | Validation Mean F1_score: 0.8844
2024-05-29 01:13:43 INFO: Epoch 150 | Train Loss: 0.2259 | Train Accuracy: 0.9453 | Validation Loss: 0.2507 | Validation Accuracy: 0.9447 | Validation Mean Precision: 0.9128 | Validation Mean Recall: 0.8688 | Validation Mean F1_score: 0.8888
2024-05-29 01:13:43 INFO: Best Validation F1 Score (Macro): 0.8987
2024-05-29 01:13:43 INFO: Best Validation Recall (Macro): 0.8749
2024-05-29 01:13:43 INFO: Best Validation Precision (Macro): 0.9270
2024-05-29 01:13:43 INFO: Best Epoch: 105
2024-05-29 01:13:44 INFO: Infer Result:
2024-05-29 01:13:44 INFO: Prediction errors: 277
2024-05-29 01:13:44 INFO: Prediction error percentage: 5.31%
2024-05-29 01:13:44 INFO: Total samples: 5218
2024-05-29 01:13:44 INFO: Infer Result End:
2024-05-29 01:13:45 INFO: Class weights: tensor([21.1878, 3.1149, 0.7420, 0.4378], device='cuda:0')
2024-05-29 01:13:46 INFO: Epoch 001 | Train Loss: 0.5522 | Train Accuracy: 0.8203 | Validation Loss: 0.3500 | Validation Accuracy: 0.8654 | Validation Mean Precision: 0.7424 | Validation Mean Recall: 0.8555 | Validation Mean F1_score: 0.7875
2024-05-29 01:13:48 INFO: Epoch 002 | Train Loss: 0.3739 | Train Accuracy: 0.8840 | Validation Loss: 0.3281 | Validation Accuracy: 0.8884 | Validation Mean Precision: 0.7683 | Validation Mean Recall: 0.8636 | Validation Mean F1_score: 0.8060
2024-05-29 01:13:49 INFO: Epoch 003 | Train Loss: 0.3690 | Train Accuracy: 0.8832 | Validation Loss: 0.3156 | Validation Accuracy: 0.8948 | Validation Mean Precision: 0.8094 | Validation Mean Recall: 0.8525 | Validation Mean F1_score: 0.8294
2024-05-29 01:13:50 INFO: Epoch 004 | Train Loss: 0.3699 | Train Accuracy: 0.8828 | Validation Loss: 0.3496 | Validation Accuracy: 0.8752 | Validation Mean Precision: 0.7393 | Validation Mean Recall: 0.8699 | Validation Mean F1_score: 0.7881
2024-05-29 01:13:52 INFO: Epoch 005 | Train Loss: 0.3555 | Train Accuracy: 0.8906 | Validation Loss: 0.3119 | Validation Accuracy: 0.8970 | Validation Mean Precision: 0.8134 | Validation Mean Recall: 0.8354 | Validation Mean F1_score: 0.8235
2024-05-29 01:13:53 INFO: Epoch 006 | Train Loss: 0.3598 | Train Accuracy: 0.8899 | Validation Loss: 0.3153 | Validation Accuracy: 0.8915 | Validation Mean Precision: 0.7934 | Validation Mean Recall: 0.8546 | Validation Mean F1_score: 0.8209
2024-05-29 01:13:55 INFO: Epoch 007 | Train Loss: 0.3670 | Train Accuracy: 0.8904 | Validation Loss: 0.3234 | Validation Accuracy: 0.8924 | Validation Mean Precision: 0.7900 | Validation Mean Recall: 0.8508 | Validation Mean F1_score: 0.8137
2024-05-29 01:13:56 INFO: Epoch 008 | Train Loss: 0.3572 | Train Accuracy: 0.8905 | Validation Loss: 0.3167 | Validation Accuracy: 0.8936 | Validation Mean Precision: 0.7821 | Validation Mean Recall: 0.8500 | Validation Mean F1_score: 0.8108
2024-05-29 01:13:58 INFO: Epoch 009 | Train Loss: 0.3542 | Train Accuracy: 0.8954 | Validation Loss: 0.3912 | Validation Accuracy: 0.8977 | Validation Mean Precision: 0.8861 | Validation Mean Recall: 0.6835 | Validation Mean F1_score: 0.6724
2024-05-29 01:14:00 INFO: Epoch 010 | Train Loss: 0.3517 | Train Accuracy: 0.8951 | Validation Loss: 0.3090 | Validation Accuracy: 0.9154 | Validation Mean Precision: 0.8555 | Validation Mean Recall: 0.8375 | Validation Mean F1_score: 0.8456
2024-05-29 01:14:02 INFO: Epoch 011 | Train Loss: 0.3468 | Train Accuracy: 0.8996 | Validation Loss: 0.3001 | Validation Accuracy: 0.9090 | Validation Mean Precision: 0.8131 | Validation Mean Recall: 0.8506 | Validation Mean F1_score: 0.8292
2024-05-29 01:14:04 INFO: Epoch 012 | Train Loss: 0.3399 | Train Accuracy: 0.9003 | Validation Loss: 0.3083 | Validation Accuracy: 0.9015 | Validation Mean Precision: 0.7884 | Validation Mean Recall: 0.8673 | Validation Mean F1_score: 0.8189
2024-05-29 01:14:05 INFO: Epoch 013 | Train Loss: 0.3385 | Train Accuracy: 0.9004 | Validation Loss: 0.3251 | Validation Accuracy: 0.8757 | Validation Mean Precision: 0.7619 | Validation Mean Recall: 0.8754 | Validation Mean F1_score: 0.8048
2024-05-29 01:14:07 INFO: Epoch 014 | Train Loss: 0.3400 | Train Accuracy: 0.8993 | Validation Loss: 0.3105 | Validation Accuracy: 0.8975 | Validation Mean Precision: 0.7679 | Validation Mean Recall: 0.8820 | Validation Mean F1_score: 0.8111
2024-05-29 01:14:08 INFO: Epoch 015 | Train Loss: 0.3263 | Train Accuracy: 0.9047 | Validation Loss: 0.2822 | Validation Accuracy: 0.9212 | Validation Mean Precision: 0.8312 | Validation Mean Recall: 0.8591 | Validation Mean F1_score: 0.8429
2024-05-29 01:14:09 INFO: Epoch 016 | Train Loss: 0.3287 | Train Accuracy: 0.9078 | Validation Loss: 0.2929 | Validation Accuracy: 0.9276 | Validation Mean Precision: 0.8541 | Validation Mean Recall: 0.8508 | Validation Mean F1_score: 0.8517
2024-05-29 01:14:11 INFO: Epoch 017 | Train Loss: 0.3217 | Train Accuracy: 0.9075 | Validation Loss: 0.2738 | Validation Accuracy: 0.9253 | Validation Mean Precision: 0.8276 | Validation Mean Recall: 0.8760 | Validation Mean F1_score: 0.8480
2024-05-29 01:14:12 INFO: Epoch 018 | Train Loss: 0.3195 | Train Accuracy: 0.9144 | Validation Loss: 0.2735 | Validation Accuracy: 0.9269 | Validation Mean Precision: 0.8196 | Validation Mean Recall: 0.8776 | Validation Mean F1_score: 0.8433
2024-05-29 01:14:14 INFO: Epoch 019 | Train Loss: 0.3118 | Train Accuracy: 0.9167 | Validation Loss: 0.2774 | Validation Accuracy: 0.9138 | Validation Mean Precision: 0.7965 | Validation Mean Recall: 0.8827 | Validation Mean F1_score: 0.8314
2024-05-29 01:14:15 INFO: Epoch 020 | Train Loss: 0.3158 | Train Accuracy: 0.9158 | Validation Loss: 0.2708 | Validation Accuracy: 0.9221 | Validation Mean Precision: 0.8245 | Validation Mean Recall: 0.8754 | Validation Mean F1_score: 0.8471
2024-05-29 01:14:16 INFO: Epoch 021 | Train Loss: 0.3059 | Train Accuracy: 0.9145 | Validation Loss: 0.2673 | Validation Accuracy: 0.9197 | Validation Mean Precision: 0.8241 | Validation Mean Recall: 0.8800 | Validation Mean F1_score: 0.8487
2024-05-29 01:14:18 INFO: Epoch 022 | Train Loss: 0.3047 | Train Accuracy: 0.9197 | Validation Loss: 0.3004 | Validation Accuracy: 0.9152 | Validation Mean Precision: 0.8557 | Validation Mean Recall: 0.8587 | Validation Mean F1_score: 0.8480
2024-05-29 01:14:19 INFO: Epoch 023 | Train Loss: 0.3043 | Train Accuracy: 0.9167 | Validation Loss: 0.2625 | Validation Accuracy: 0.9358 | Validation Mean Precision: 0.8606 | Validation Mean Recall: 0.8653 | Validation Mean F1_score: 0.8607
2024-05-29 01:14:21 INFO: Epoch 024 | Train Loss: 0.2983 | Train Accuracy: 0.9209 | Validation Loss: 0.2709 | Validation Accuracy: 0.9418 | Validation Mean Precision: 0.8613 | Validation Mean Recall: 0.8708 | Validation Mean F1_score: 0.8633
2024-05-29 01:14:22 INFO: Epoch 025 | Train Loss: 0.2962 | Train Accuracy: 0.9197 | Validation Loss: 0.2698 | Validation Accuracy: 0.9411 | Validation Mean Precision: 0.8537 | Validation Mean Recall: 0.8783 | Validation Mean F1_score: 0.8642
2024-05-29 01:14:24 INFO: Epoch 026 | Train Loss: 0.3008 | Train Accuracy: 0.9197 | Validation Loss: 0.3021 | Validation Accuracy: 0.8917 | Validation Mean Precision: 0.8151 | Validation Mean Recall: 0.8501 | Validation Mean F1_score: 0.8305
2024-05-29 01:14:25 INFO: Epoch 027 | Train Loss: 0.2928 | Train Accuracy: 0.9239 | Validation Loss: 0.2605 | Validation Accuracy: 0.9353 | Validation Mean Precision: 0.8407 | Validation Mean Recall: 0.8948 | Validation Mean F1_score: 0.8608
2024-05-29 01:14:27 INFO: Epoch 028 | Train Loss: 0.2858 | Train Accuracy: 0.9230 | Validation Loss: 0.2611 | Validation Accuracy: 0.9365 | Validation Mean Precision: 0.8308 | Validation Mean Recall: 0.8963 | Validation Mean F1_score: 0.8562
2024-05-29 01:14:28 INFO: Epoch 029 | Train Loss: 0.2883 | Train Accuracy: 0.9275 | Validation Loss: 0.2759 | Validation Accuracy: 0.9068 | Validation Mean Precision: 0.7824 | Validation Mean Recall: 0.8876 | Validation Mean F1_score: 0.8235
2024-05-29 01:14:29 INFO: Epoch 030 | Train Loss: 0.2825 | Train Accuracy: 0.9279 | Validation Loss: 0.2701 | Validation Accuracy: 0.9449 | Validation Mean Precision: 0.8755 | Validation Mean Recall: 0.8559 | Validation Mean F1_score: 0.8630
2024-05-29 01:14:31 INFO: Epoch 031 | Train Loss: 0.2863 | Train Accuracy: 0.9243 | Validation Loss: 0.2559 | Validation Accuracy: 0.9358 | Validation Mean Precision: 0.8351 | Validation Mean Recall: 0.8988 | Validation Mean F1_score: 0.8585
2024-05-29 01:14:32 INFO: Epoch 032 | Train Loss: 0.2789 | Train Accuracy: 0.9287 | Validation Loss: 0.2467 | Validation Accuracy: 0.9463 | Validation Mean Precision: 0.8719 | Validation Mean Recall: 0.8786 | Validation Mean F1_score: 0.8740
2024-05-29 01:14:34 INFO: Epoch 033 | Train Loss: 0.2783 | Train Accuracy: 0.9295 | Validation Loss: 0.2501 | Validation Accuracy: 0.9379 | Validation Mean Precision: 0.8656 | Validation Mean Recall: 0.8665 | Validation Mean F1_score: 0.8658
2024-05-29 01:14:35 INFO: Epoch 034 | Train Loss: 0.2727 | Train Accuracy: 0.9312 | Validation Loss: 0.2493 | Validation Accuracy: 0.9298 | Validation Mean Precision: 0.8434 | Validation Mean Recall: 0.8546 | Validation Mean F1_score: 0.8484
2024-05-29 01:14:37 INFO: Epoch 035 | Train Loss: 0.2779 | Train Accuracy: 0.9296 | Validation Loss: 0.2492 | Validation Accuracy: 0.9224 | Validation Mean Precision: 0.8464 | Validation Mean Recall: 0.8520 | Validation Mean F1_score: 0.8489
2024-05-29 01:14:39 INFO: Epoch 036 | Train Loss: 0.2733 | Train Accuracy: 0.9327 | Validation Loss: 0.2885 | Validation Accuracy: 0.9279 | Validation Mean Precision: 0.9080 | Validation Mean Recall: 0.8273 | Validation Mean F1_score: 0.8616
2024-05-29 01:14:40 INFO: Epoch 037 | Train Loss: 0.2775 | Train Accuracy: 0.9303 | Validation Loss: 0.2454 | Validation Accuracy: 0.9399 | Validation Mean Precision: 0.8496 | Validation Mean Recall: 0.8985 | Validation Mean F1_score: 0.8704
2024-05-29 01:14:42 INFO: Epoch 038 | Train Loss: 0.2728 | Train Accuracy: 0.9313 | Validation Loss: 0.2623 | Validation Accuracy: 0.9121 | Validation Mean Precision: 0.8160 | Validation Mean Recall: 0.8964 | Validation Mean F1_score: 0.8509
2024-05-29 01:14:43 INFO: Epoch 039 | Train Loss: 0.2680 | Train Accuracy: 0.9321 | Validation Loss: 0.2379 | Validation Accuracy: 0.9471 | Validation Mean Precision: 0.8742 | Validation Mean Recall: 0.8566 | Validation Mean F1_score: 0.8649
2024-05-29 01:14:45 INFO: Epoch 040 | Train Loss: 0.2686 | Train Accuracy: 0.9324 | Validation Loss: 0.2637 | Validation Accuracy: 0.9487 | Validation Mean Precision: 0.8879 | Validation Mean Recall: 0.8862 | Validation Mean F1_score: 0.8837
2024-05-29 01:14:46 INFO: Epoch 041 | Train Loss: 0.2633 | Train Accuracy: 0.9357 | Validation Loss: 0.2428 | Validation Accuracy: 0.9435 | Validation Mean Precision: 0.8923 | Validation Mean Recall: 0.8526 | Validation Mean F1_score: 0.8701
2024-05-29 01:14:48 INFO: Epoch 042 | Train Loss: 0.2661 | Train Accuracy: 0.9352 | Validation Loss: 0.2480 | Validation Accuracy: 0.9281 | Validation Mean Precision: 0.8271 | Validation Mean Recall: 0.8921 | Validation Mean F1_score: 0.8525
2024-05-29 01:14:49 INFO: Epoch 043 | Train Loss: 0.2624 | Train Accuracy: 0.9364 | Validation Loss: 0.2365 | Validation Accuracy: 0.9485 | Validation Mean Precision: 0.8922 | Validation Mean Recall: 0.8856 | Validation Mean F1_score: 0.8863
2024-05-29 01:14:51 INFO: Epoch 044 | Train Loss: 0.2619 | Train Accuracy: 0.9357 | Validation Loss: 0.2507 | Validation Accuracy: 0.9375 | Validation Mean Precision: 0.8640 | Validation Mean Recall: 0.8634 | Validation Mean F1_score: 0.8619
2024-05-29 01:14:52 INFO: Epoch 045 | Train Loss: 0.2611 | Train Accuracy: 0.9391 | Validation Loss: 0.2320 | Validation Accuracy: 0.9449 | Validation Mean Precision: 0.8784 | Validation Mean Recall: 0.8908 | Validation Mean F1_score: 0.8828
2024-05-29 01:14:54 INFO: Epoch 046 | Train Loss: 0.2609 | Train Accuracy: 0.9356 | Validation Loss: 0.2472 | Validation Accuracy: 0.9255 | Validation Mean Precision: 0.8256 | Validation Mean Recall: 0.8952 | Validation Mean F1_score: 0.8548
2024-05-29 01:14:55 INFO: Epoch 047 | Train Loss: 0.2604 | Train Accuracy: 0.9354 | Validation Loss: 0.2942 | Validation Accuracy: 0.9097 | Validation Mean Precision: 0.8179 | Validation Mean Recall: 0.8810 | Validation Mean F1_score: 0.8430
2024-05-29 01:14:57 INFO: Epoch 048 | Train Loss: 0.2584 | Train Accuracy: 0.9365 | Validation Loss: 0.2268 | Validation Accuracy: 0.9425 | Validation Mean Precision: 0.8596 | Validation Mean Recall: 0.9028 | Validation Mean F1_score: 0.8763
2024-05-29 01:14:58 INFO: Epoch 049 | Train Loss: 0.2583 | Train Accuracy: 0.9348 | Validation Loss: 0.2326 | Validation Accuracy: 0.9435 | Validation Mean Precision: 0.8569 | Validation Mean Recall: 0.8761 | Validation Mean F1_score: 0.8655
2024-05-29 01:15:00 INFO: Epoch 050 | Train Loss: 0.2558 | Train Accuracy: 0.9369 | Validation Loss: 0.2437 | Validation Accuracy: 0.9327 | Validation Mean Precision: 0.8721 | Validation Mean Recall: 0.8755 | Validation Mean F1_score: 0.8734
2024-05-29 01:15:01 INFO: Epoch 051 | Train Loss: 0.2592 | Train Accuracy: 0.9356 | Validation Loss: 0.2396 | Validation Accuracy: 0.9499 | Validation Mean Precision: 0.9035 | Validation Mean Recall: 0.8756 | Validation Mean F1_score: 0.8885
2024-05-29 01:15:03 INFO: Epoch 052 | Train Loss: 0.2561 | Train Accuracy: 0.9392 | Validation Loss: 0.2425 | Validation Accuracy: 0.9207 | Validation Mean Precision: 0.8424 | Validation Mean Recall: 0.8876 | Validation Mean F1_score: 0.8620
2024-05-29 01:15:04 INFO: Epoch 053 | Train Loss: 0.2649 | Train Accuracy: 0.9364 | Validation Loss: 0.2449 | Validation Accuracy: 0.9293 | Validation Mean Precision: 0.8623 | Validation Mean Recall: 0.8785 | Validation Mean F1_score: 0.8700
2024-05-29 01:15:06 INFO: Epoch 054 | Train Loss: 0.2537 | Train Accuracy: 0.9384 | Validation Loss: 0.2415 | Validation Accuracy: 0.9502 | Validation Mean Precision: 0.8928 | Validation Mean Recall: 0.8738 | Validation Mean F1_score: 0.8826
2024-05-29 01:15:07 INFO: Epoch 055 | Train Loss: 0.2535 | Train Accuracy: 0.9378 | Validation Loss: 0.2268 | Validation Accuracy: 0.9490 | Validation Mean Precision: 0.8852 | Validation Mean Recall: 0.8867 | Validation Mean F1_score: 0.8844
2024-05-29 01:15:09 INFO: Epoch 056 | Train Loss: 0.2523 | Train Accuracy: 0.9385 | Validation Loss: 0.2487 | Validation Accuracy: 0.9442 | Validation Mean Precision: 0.8939 | Validation Mean Recall: 0.8531 | Validation Mean F1_score: 0.8709
2024-05-29 01:15:10 INFO: Epoch 057 | Train Loss: 0.2543 | Train Accuracy: 0.9369 | Validation Loss: 0.2358 | Validation Accuracy: 0.9506 | Validation Mean Precision: 0.9005 | Validation Mean Recall: 0.8847 | Validation Mean F1_score: 0.8918
2024-05-29 01:15:12 INFO: Epoch 058 | Train Loss: 0.2486 | Train Accuracy: 0.9423 | Validation Loss: 0.2328 | Validation Accuracy: 0.9418 | Validation Mean Precision: 0.8817 | Validation Mean Recall: 0.8804 | Validation Mean F1_score: 0.8804
2024-05-29 01:15:13 INFO: Epoch 059 | Train Loss: 0.2492 | Train Accuracy: 0.9417 | Validation Loss: 0.2293 | Validation Accuracy: 0.9447 | Validation Mean Precision: 0.8670 | Validation Mean Recall: 0.8881 | Validation Mean F1_score: 0.8757
2024-05-29 01:15:14 INFO: Epoch 060 | Train Loss: 0.2520 | Train Accuracy: 0.9357 | Validation Loss: 0.2328 | Validation Accuracy: 0.9442 | Validation Mean Precision: 0.8621 | Validation Mean Recall: 0.8965 | Validation Mean F1_score: 0.8711
2024-05-29 01:15:16 INFO: Epoch 061 | Train Loss: 0.2513 | Train Accuracy: 0.9388 | Validation Loss: 0.2349 | Validation Accuracy: 0.9344 | Validation Mean Precision: 0.8586 | Validation Mean Recall: 0.8796 | Validation Mean F1_score: 0.8686
2024-05-29 01:15:18 INFO: Epoch 062 | Train Loss: 0.2477 | Train Accuracy: 0.9411 | Validation Loss: 0.2338 | Validation Accuracy: 0.9494 | Validation Mean Precision: 0.8695 | Validation Mean Recall: 0.8990 | Validation Mean F1_score: 0.8757
2024-05-29 01:15:19 INFO: Epoch 063 | Train Loss: 0.2536 | Train Accuracy: 0.9403 | Validation Loss: 0.2277 | Validation Accuracy: 0.9435 | Validation Mean Precision: 0.8602 | Validation Mean Recall: 0.8964 | Validation Mean F1_score: 0.8733
2024-05-29 01:15:21 INFO: Epoch 064 | Train Loss: 0.2574 | Train Accuracy: 0.9391 | Validation Loss: 0.2368 | Validation Accuracy: 0.9518 | Validation Mean Precision: 0.9008 | Validation Mean Recall: 0.8799 | Validation Mean F1_score: 0.8888
2024-05-29 01:15:22 INFO: Epoch 065 | Train Loss: 0.2454 | Train Accuracy: 0.9426 | Validation Loss: 0.2489 | Validation Accuracy: 0.9430 | Validation Mean Precision: 0.8678 | Validation Mean Recall: 0.8740 | Validation Mean F1_score: 0.8679
2024-05-29 01:15:24 INFO: Epoch 066 | Train Loss: 0.2527 | Train Accuracy: 0.9414 | Validation Loss: 0.2262 | Validation Accuracy: 0.9471 | Validation Mean Precision: 0.8680 | Validation Mean Recall: 0.8970 | Validation Mean F1_score: 0.8770
2024-05-29 01:15:25 INFO: Epoch 067 | Train Loss: 0.2477 | Train Accuracy: 0.9420 | Validation Loss: 0.2258 | Validation Accuracy: 0.9528 | Validation Mean Precision: 0.8917 | Validation Mean Recall: 0.8876 | Validation Mean F1_score: 0.8877
2024-05-29 01:15:27 INFO: Epoch 068 | Train Loss: 0.2420 | Train Accuracy: 0.9434 | Validation Loss: 0.2347 | Validation Accuracy: 0.9485 | Validation Mean Precision: 0.8667 | Validation Mean Recall: 0.8981 | Validation Mean F1_score: 0.8763
2024-05-29 01:15:28 INFO: Epoch 069 | Train Loss: 0.2491 | Train Accuracy: 0.9409 | Validation Loss: 0.2411 | Validation Accuracy: 0.9253 | Validation Mean Precision: 0.8311 | Validation Mean Recall: 0.8892 | Validation Mean F1_score: 0.8557
2024-05-29 01:15:30 INFO: Epoch 070 | Train Loss: 0.2476 | Train Accuracy: 0.9410 | Validation Loss: 0.2438 | Validation Accuracy: 0.9310 | Validation Mean Precision: 0.8419 | Validation Mean Recall: 0.8923 | Validation Mean F1_score: 0.8622
2024-05-29 01:15:31 INFO: Epoch 071 | Train Loss: 0.2451 | Train Accuracy: 0.9432 | Validation Loss: 0.2347 | Validation Accuracy: 0.9526 | Validation Mean Precision: 0.8871 | Validation Mean Recall: 0.8912 | Validation Mean F1_score: 0.8864
2024-05-29 01:15:33 INFO: Epoch 072 | Train Loss: 0.2509 | Train Accuracy: 0.9420 | Validation Loss: 0.2302 | Validation Accuracy: 0.9370 | Validation Mean Precision: 0.8412 | Validation Mean Recall: 0.8959 | Validation Mean F1_score: 0.8639
2024-05-29 01:15:34 INFO: Epoch 073 | Train Loss: 0.2429 | Train Accuracy: 0.9423 | Validation Loss: 0.2365 | Validation Accuracy: 0.9461 | Validation Mean Precision: 0.8589 | Validation Mean Recall: 0.8936 | Validation Mean F1_score: 0.8718
2024-05-29 01:15:36 INFO: Epoch 074 | Train Loss: 0.2398 | Train Accuracy: 0.9436 | Validation Loss: 0.2248 | Validation Accuracy: 0.9499 | Validation Mean Precision: 0.8697 | Validation Mean Recall: 0.8973 | Validation Mean F1_score: 0.8780
2024-05-29 01:15:37 INFO: Epoch 075 | Train Loss: 0.2439 | Train Accuracy: 0.9429 | Validation Loss: 0.2445 | Validation Accuracy: 0.9341 | Validation Mean Precision: 0.8606 | Validation Mean Recall: 0.8901 | Validation Mean F1_score: 0.8703
2024-05-29 01:15:38 INFO: Epoch 076 | Train Loss: 0.2503 | Train Accuracy: 0.9416 | Validation Loss: 0.2321 | Validation Accuracy: 0.9516 | Validation Mean Precision: 0.8785 | Validation Mean Recall: 0.9019 | Validation Mean F1_score: 0.8835
2024-05-29 01:15:40 INFO: Epoch 077 | Train Loss: 0.2388 | Train Accuracy: 0.9443 | Validation Loss: 0.2253 | Validation Accuracy: 0.9492 | Validation Mean Precision: 0.8923 | Validation Mean Recall: 0.8838 | Validation Mean F1_score: 0.8871
2024-05-29 01:15:41 INFO: Epoch 078 | Train Loss: 0.2395 | Train Accuracy: 0.9445 | Validation Loss: 0.2290 | Validation Accuracy: 0.9483 | Validation Mean Precision: 0.8846 | Validation Mean Recall: 0.8879 | Validation Mean F1_score: 0.8834
2024-05-29 01:15:43 INFO: Epoch 079 | Train Loss: 0.2402 | Train Accuracy: 0.9431 | Validation Loss: 0.2307 | Validation Accuracy: 0.9475 | Validation Mean Precision: 0.8603 | Validation Mean Recall: 0.8771 | Validation Mean F1_score: 0.8656
2024-05-29 01:15:44 INFO: Epoch 080 | Train Loss: 0.2382 | Train Accuracy: 0.9441 | Validation Loss: 0.2315 | Validation Accuracy: 0.9478 | Validation Mean Precision: 0.8613 | Validation Mean Recall: 0.8771 | Validation Mean F1_score: 0.8660
2024-05-29 01:15:46 INFO: Epoch 081 | Train Loss: 0.2442 | Train Accuracy: 0.9447 | Validation Loss: 0.2756 | Validation Accuracy: 0.9173 | Validation Mean Precision: 0.8645 | Validation Mean Recall: 0.8634 | Validation Mean F1_score: 0.8637
2024-05-29 01:15:47 INFO: Epoch 082 | Train Loss: 0.2427 | Train Accuracy: 0.9418 | Validation Loss: 0.2658 | Validation Accuracy: 0.9061 | Validation Mean Precision: 0.8135 | Validation Mean Recall: 0.8797 | Validation Mean F1_score: 0.8424
2024-05-29 01:15:49 INFO: Epoch 083 | Train Loss: 0.2400 | Train Accuracy: 0.9437 | Validation Loss: 0.2399 | Validation Accuracy: 0.9365 | Validation Mean Precision: 0.8269 | Validation Mean Recall: 0.8993 | Validation Mean F1_score: 0.8505
2024-05-29 01:15:50 INFO: Epoch 084 | Train Loss: 0.2394 | Train Accuracy: 0.9458 | Validation Loss: 0.2312 | Validation Accuracy: 0.9435 | Validation Mean Precision: 0.8488 | Validation Mean Recall: 0.8906 | Validation Mean F1_score: 0.8652
2024-05-29 01:15:52 INFO: Epoch 085 | Train Loss: 0.2399 | Train Accuracy: 0.9439 | Validation Loss: 0.2269 | Validation Accuracy: 0.9492 | Validation Mean Precision: 0.8641 | Validation Mean Recall: 0.9015 | Validation Mean F1_score: 0.8755
2024-05-29 01:15:54 INFO: Epoch 086 | Train Loss: 0.2386 | Train Accuracy: 0.9461 | Validation Loss: 0.2290 | Validation Accuracy: 0.9504 | Validation Mean Precision: 0.8869 | Validation Mean Recall: 0.8848 | Validation Mean F1_score: 0.8851
2024-05-29 01:15:55 INFO: Epoch 087 | Train Loss: 0.2349 | Train Accuracy: 0.9438 | Validation Loss: 0.2372 | Validation Accuracy: 0.9471 | Validation Mean Precision: 0.8773 | Validation Mean Recall: 0.8883 | Validation Mean F1_score: 0.8772
2024-05-29 01:15:56 INFO: Epoch 088 | Train Loss: 0.2403 | Train Accuracy: 0.9450 | Validation Loss: 0.2286 | Validation Accuracy: 0.9478 | Validation Mean Precision: 0.8763 | Validation Mean Recall: 0.8840 | Validation Mean F1_score: 0.8773
2024-05-29 01:15:58 INFO: Epoch 089 | Train Loss: 0.2317 | Train Accuracy: 0.9470 | Validation Loss: 0.2379 | Validation Accuracy: 0.9490 | Validation Mean Precision: 0.8656 | Validation Mean Recall: 0.8911 | Validation Mean F1_score: 0.8728
2024-05-29 01:15:59 INFO: Epoch 090 | Train Loss: 0.2358 | Train Accuracy: 0.9441 | Validation Loss: 0.3328 | Validation Accuracy: 0.8857 | Validation Mean Precision: 0.7890 | Validation Mean Recall: 0.8822 | Validation Mean F1_score: 0.8281
2024-05-29 01:16:01 INFO: Epoch 091 | Train Loss: 0.2360 | Train Accuracy: 0.9441 | Validation Loss: 0.2315 | Validation Accuracy: 0.9485 | Validation Mean Precision: 0.8613 | Validation Mean Recall: 0.9039 | Validation Mean F1_score: 0.8736
2024-05-29 01:16:03 INFO: Epoch 092 | Train Loss: 0.2379 | Train Accuracy: 0.9424 | Validation Loss: 0.2375 | Validation Accuracy: 0.9523 | Validation Mean Precision: 0.8939 | Validation Mean Recall: 0.8746 | Validation Mean F1_score: 0.8835
2024-05-29 01:16:04 INFO: Epoch 093 | Train Loss: 0.2345 | Train Accuracy: 0.9463 | Validation Loss: 0.2396 | Validation Accuracy: 0.9506 | Validation Mean Precision: 0.8930 | Validation Mean Recall: 0.8806 | Validation Mean F1_score: 0.8851
2024-05-29 01:16:05 INFO: Epoch 094 | Train Loss: 0.2340 | Train Accuracy: 0.9457 | Validation Loss: 0.2291 | Validation Accuracy: 0.9523 | Validation Mean Precision: 0.8789 | Validation Mean Recall: 0.8975 | Validation Mean F1_score: 0.8825
2024-05-29 01:16:07 INFO: Epoch 095 | Train Loss: 0.2359 | Train Accuracy: 0.9465 | Validation Loss: 0.2341 | Validation Accuracy: 0.9492 | Validation Mean Precision: 0.8710 | Validation Mean Recall: 0.9028 | Validation Mean F1_score: 0.8809
2024-05-29 01:16:08 INFO: Epoch 096 | Train Loss: 0.2328 | Train Accuracy: 0.9440 | Validation Loss: 0.2341 | Validation Accuracy: 0.9487 | Validation Mean Precision: 0.8756 | Validation Mean Recall: 0.9014 | Validation Mean F1_score: 0.8792
2024-05-29 01:16:10 INFO: Epoch 097 | Train Loss: 0.2368 | Train Accuracy: 0.9475 | Validation Loss: 0.2284 | Validation Accuracy: 0.9432 | Validation Mean Precision: 0.8534 | Validation Mean Recall: 0.8919 | Validation Mean F1_score: 0.8662
2024-05-29 01:16:11 INFO: Epoch 098 | Train Loss: 0.2383 | Train Accuracy: 0.9458 | Validation Loss: 0.2287 | Validation Accuracy: 0.9492 | Validation Mean Precision: 0.8593 | Validation Mean Recall: 0.9070 | Validation Mean F1_score: 0.8711
2024-05-29 01:16:13 INFO: Epoch 099 | Train Loss: 0.2322 | Train Accuracy: 0.9465 | Validation Loss: 0.2415 | Validation Accuracy: 0.9542 | Validation Mean Precision: 0.9140 | Validation Mean Recall: 0.8597 | Validation Mean F1_score: 0.8844
2024-05-29 01:16:14 INFO: Epoch 100 | Train Loss: 0.2398 | Train Accuracy: 0.9429 | Validation Loss: 0.2266 | Validation Accuracy: 0.9540 | Validation Mean Precision: 0.8987 | Validation Mean Recall: 0.8803 | Validation Mean F1_score: 0.8885
2024-05-29 01:16:16 INFO: Epoch 101 | Train Loss: 0.2326 | Train Accuracy: 0.9475 | Validation Loss: 0.2360 | Validation Accuracy: 0.9492 | Validation Mean Precision: 0.8990 | Validation Mean Recall: 0.8713 | Validation Mean F1_score: 0.8846
2024-05-29 01:16:18 INFO: Epoch 102 | Train Loss: 0.2255 | Train Accuracy: 0.9474 | Validation Loss: 0.2285 | Validation Accuracy: 0.9535 | Validation Mean Precision: 0.8878 | Validation Mean Recall: 0.8961 | Validation Mean F1_score: 0.8883
2024-05-29 01:16:19 INFO: Epoch 103 | Train Loss: 0.2353 | Train Accuracy: 0.9448 | Validation Loss: 0.2224 | Validation Accuracy: 0.9533 | Validation Mean Precision: 0.8830 | Validation Mean Recall: 0.8941 | Validation Mean F1_score: 0.8862
2024-05-29 01:16:21 INFO: Epoch 104 | Train Loss: 0.2271 | Train Accuracy: 0.9485 | Validation Loss: 0.2401 | Validation Accuracy: 0.9523 | Validation Mean Precision: 0.8855 | Validation Mean Recall: 0.8681 | Validation Mean F1_score: 0.8759
2024-05-29 01:16:22 INFO: Epoch 105 | Train Loss: 0.2360 | Train Accuracy: 0.9412 | Validation Loss: 0.2309 | Validation Accuracy: 0.9502 | Validation Mean Precision: 0.8945 | Validation Mean Recall: 0.8722 | Validation Mean F1_score: 0.8824
2024-05-29 01:16:24 INFO: Epoch 106 | Train Loss: 0.2348 | Train Accuracy: 0.9449 | Validation Loss: 0.2282 | Validation Accuracy: 0.9487 | Validation Mean Precision: 0.8652 | Validation Mean Recall: 0.9024 | Validation Mean F1_score: 0.8771
2024-05-29 01:16:25 INFO: Epoch 107 | Train Loss: 0.2368 | Train Accuracy: 0.9457 | Validation Loss: 0.2383 | Validation Accuracy: 0.9197 | Validation Mean Precision: 0.8275 | Validation Mean Recall: 0.8991 | Validation Mean F1_score: 0.8548
2024-05-29 01:16:26 INFO: Early stopping at epoch 106 | Best epoch : 57
2024-05-29 01:16:26 INFO: Best Validation F1 Score (Macro): 0.8918
2024-05-29 01:16:26 INFO: Best Validation Recall (Macro): 0.8847
2024-05-29 01:16:26 INFO: Best Validation Precision (Macro): 0.9005
2024-05-29 01:16:26 INFO: Best Epoch: 57
2024-05-29 01:16:26 INFO: Infer Result:
2024-05-29 01:16:26 INFO: Prediction errors: 434
2024-05-29 01:16:26 INFO: Prediction error percentage: 8.32%
2024-05-29 01:16:26 INFO: Total samples: 5218
2024-05-29 01:16:26 INFO: Infer Result End:
2024-05-29 01:16:26 INFO: Result: Avg F1: 0.8822 Avg Wrong Percentage: 5.99%
2024-05-29 01:16:26 INFO: Result: Avg Precision: [0.7481330358677849, 0.8581788688175195, 0.949279701595013, 0.9525727597360033] | 0.87704109150408
2024-05-29 01:16:26 INFO: Result: Avg Recall: [0.8096774193548386, 0.8906921241050119, 0.8885600455321571, 0.9802013422818792] | 0.8922827328184718
2024-05-29 01:16:26 INFO: Result: Avg F1: [0.7714399759907937, 0.8738125884545493, 0.9175302382524844, 0.9660268498572094] | 0.8822024131387591

Binary file not shown.

@ -0,0 +1,48 @@
#---设备配置---#
#device: cpu
device: cuda
#---训练配置---#
n_epochs: 150
batch_size: 16
learning_rate: 0.001
nc: 4
#data_train: train_val # train: 只用train训练val做验证 infer做测试train_val: 用train和val做训练infer做验证 infer做测试all: 全部训练全部验证全部测试数据先1/5作为infer剩下的再1/5作为val剩下的4/5作为训练
data_train: train
early_stop_patience: 50
gamma: 0.98
step_size: 10
experiments_count: 5
#---检测和推理配置---#
# 检测和推理使用模型路径
model_path: model/psychology.pth
#---样本特征---#
# 标签名称
label_name: 类别
# 特征名称
feature_names:
- "强迫症状数字化"
- "人际关系敏感数字化"
- "抑郁数字化"
- "多因子症状"
- "母亲教养方式数字化"
- "父亲教养方式数字化"
- "自评家庭经济条件数字化"
- "有无心理治疗(咨询)史数字化"
- "学业情况数字化"
- "出勤情况数字化"
# 定义特征权重列表
feature_weights:
- 0.135
- 0.085
- 0.08
- 0.2
- 0.09
- 0.09
- 0.06
- 0.06
- 0.08
- 0.12

@ -0,0 +1,61 @@
#---设备配置---#
device: cpu
#device: cuda
#---训练配置---#
n_epochs: 150
batch_size: 16
learning_rate: 0.001
nc: 4
use_infer_as_val: true
#data_train: train_val # train: 只用train训练val做验证 infer做测试train_val: 用train和val做训练infer做验证 infer做测试all: 全部训练全部验证全部测试数据先1/5作为infer剩下的再1/5作为val剩下的4/5作为训练
data_train: all
early_stop_patience: 50
gamma: 0.98
step_size: 10
experiments_count: 50
#---训练结果---#
# 日志路径
log_path: results/training.log
# 训练过程统计图路径
train_process_path: results/training_progress.png
# 训练结果统计图路径
train_result_path: results/training_result.png
# 训练模型路径
model_path: model/psychology.pth
# 用于测试的部分数据路径
infer_path: results/infer.xlsx
#---训练原始数据---#
# 训练样本数据路径配置
data_path: data_processed/feature_label_weighted.xlsx
#---样本特征---#
# 标签名称
label_name: 类别
# 特征名称
feature_names:
- "强迫症状数字化"
- "人际关系敏感数字化"
- "抑郁数字化"
- "多因子症状"
- "母亲教养方式数字化"
- "父亲教养方式数字化"
- "自评家庭经济条件数字化"
- "有无心理治疗(咨询)史数字化"
- "学业情况数字化"
- "出勤情况数字化"
# 定义特征权重列表
feature_weights:
- 0.135
- 0.085
- 0.08
- 0.2
- 0.09
- 0.09
- 0.06
- 0.06
- 0.08
- 0.12

Binary file not shown.

Binary file not shown.

@ -0,0 +1,152 @@
import os
import sys
root_path = os.getcwd()
sys.path.append(root_path)
import time
import datetime
import signal
import uvicorn
import pandas as pd
from fastapi import FastAPI, Request
from pydantic import BaseModel
from typing import List
from utils.common import evaluate_model
from fastapi.middleware.cors import CORSMiddleware
import logging
import matplotlib.pyplot as plt
import argparse
import numpy as np
import yaml
import threading
import pickle
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from utils.feature_process import create_feature_df, apply_feature_weights, Features
app = FastAPI()
# 定义fastapi返回类
class ClassificationResult(BaseModel):
precision: list
recall: list
f1: list
wrong_percentage: float
# 允许所有域名的跨域请求
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["GET", "POST", "PUT", "DELETE", "OPTIONS"],
allow_headers=["*"],
)
# 定义接口
@app.post("/evaluate/")
async def classify_features(request: Request, features_list: List[Features]):
# 遍历每个特征对象,并将其添加到 all_features 中
all_features = create_feature_df(features_list)
# 读取 YAML 配置文件
config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "config/config.yaml"))
with open(config_path, 'r') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
feature_names = config['feature_names']
feature_weights = config['feature_weights']
# 应用特征权重
feature_label_weighted = apply_feature_weights(all_features, feature_names, feature_weights)
start_time = time.time() # 记录开始时间
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "evaluate_api")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# 训练前设置
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"all_features_label_{now}.xlsx"))
config['data_path'] = data_path
feature_label_weighted.to_excel(data_path, index=False)
# 配置日志
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"evaluate_{now}.log"))
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
# 开始验证
list_avg_f1 = []
list_wrong_percentage = []
list_precision = []
list_recall = []
list_f1 = []
# 特征和标签
X = feature_label_weighted[config['feature_names']].values
y = feature_label_weighted[config['label_name']].values
print("config: ", config)
logging.info("config: ", config)
avg_f1, wrong_percentage, precision, recall, f1 = evaluate_model(config["model_path"], X, y, config)
list_avg_f1.append(avg_f1)
list_wrong_percentage.append(wrong_percentage)
list_precision.append(precision)
list_recall.append(recall)
list_f1.append(f1)
logging.info(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
logging.info(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
logging.info(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
logging.info(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
print(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
print(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
print(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
print(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
end_time = time.time() # 记录结束时间
# 训练结束
print("预测耗时:", end_time - start_time, "") # 打印执行时间
# 返回分类结果和模型文件下载 URLstatic不是程序执行路径而是app.mount的静态文件夹
log_file_url = f"{request.base_url}evaluate_api/evaluate_{now}.log"
data_file_url = f"{request.base_url}evaluate_api/all_features_label_{now}.xlsx"
# 返回分类结果和模型文件
return {
"classification_result": ClassificationResult(
precision=precision,
recall=recall,
f1=f1,
wrong_percentage=wrong_percentage
),
"data_file": {
"log_file_url": log_file_url,
"data_file_url": data_file_url
}
}
# 以下是fastapi启动配置
if __name__ == "__main__":
name_app = os.path.basename(__file__)[0:-3] # Get the name of the script
log_config = {
"version": 1,
"disable_existing_loggers": True,
"handlers": {
"file_handler": {
"class": "logging.FileHandler",
"filename": "logfile.log",
},
},
"root": {
"handlers": ["file_handler"],
"level": "INFO",
},
}
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "evaluate_api")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# train_api.py同级目录下的static文件夹
app.mount("/evaluate_api", StaticFiles(directory=static_dir), name="static")
uvicorn.run(app, host="0.0.0.0", port=3397, reload=False)

@ -0,0 +1,6 @@
2024-05-29 01:43:02 INFO: config:
2024-05-29 01:43:03 INFO: Infer Result:
2024-05-29 01:43:03 INFO: Prediction errors: 1070
2024-05-29 01:43:03 INFO: Prediction error percentage: 4.10%
2024-05-29 01:43:03 INFO: Total samples: 26088
2024-05-29 01:43:03 INFO: Infer Result End:

@ -0,0 +1,10 @@
2024-05-29 01:46:51 INFO: config:
2024-05-29 01:46:52 INFO: Infer Result:
2024-05-29 01:46:52 INFO: Prediction errors: 1070
2024-05-29 01:46:52 INFO: Prediction error percentage: 4.10%
2024-05-29 01:46:52 INFO: Total samples: 26088
2024-05-29 01:46:52 INFO: Infer Result End:
2024-05-29 01:46:52 INFO: Result: Avg F1: 0.9233 Avg Wrong Percentage: 4.10%
2024-05-29 01:46:52 INFO: Result: Avg Precision: [0.8276923076923077, 0.9590373783922171, 0.9740385781875531, 0.9537483137406051] | 0.9286291445031708
2024-05-29 01:46:52 INFO: Result: Avg Recall: [0.8733766233766234, 0.8944603629417383, 0.9136322257624033, 0.9965767217076118] | 0.9195114834470941
2024-05-29 01:46:52 INFO: Result: Avg F1: [0.8499210110584519, 0.9256239189523102, 0.9428688861487876, 0.9746922698178238] | 0.9232765214943434

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@ -0,0 +1,86 @@
import os
import time
import datetime
import pandas as pd
from typing import List
from common import evaluate_model
import logging
import numpy as np
import yaml
from feature_process import create_feature_df, apply_feature_weights, Features, process_features_list
from data_process import preprocess_data, convert_to_list
if __name__ == "__main__":
# 读取原始数据表
df_src = pd.read_excel("data/data_src.xlsx")
df_leave = pd.read_excel("data_processed/Leave_Record_RES.xlsx")
df_dropout_warning = pd.read_excel("data_processed/Dropout_Warning_RES.xlsx")
# 数据预处理
df = preprocess_data(df_src, df_leave, df_dropout_warning)
# 转换成数据列表
features_data_list = convert_to_list(df)
processed_features_list: List[Features] = process_features_list(features_data_list)
# 特征预处理
all_features = create_feature_df(processed_features_list)
# 读取 YAML 配置文件
config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "train_local.yaml"))
with open(config_path, 'r') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
feature_names = config['feature_names']
feature_weights = config['feature_weights']
# 应用特征权重
feature_label_weighted = apply_feature_weights(all_features, feature_names, feature_weights)
start_time = time.time() # 记录开始时间
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "evaluate_local")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# 训练前设置
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"all_features_label_{now}.xlsx"))
config['data_path'] = data_path
feature_label_weighted.to_excel(data_path, index=False)
# 配置日志
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"evaluate_{now}.log"))
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
# 开始验证
list_avg_f1 = []
list_wrong_percentage = []
list_precision = []
list_recall = []
list_f1 = []
# 特征和标签
X = feature_label_weighted[config['feature_names']].values
y = feature_label_weighted[config['label_name']].values
print(config)
avg_f1, wrong_percentage, precision, recall, f1 = evaluate_model(config["model_path"], X, y, config)
list_avg_f1.append(avg_f1)
list_wrong_percentage.append(wrong_percentage)
list_precision.append(precision)
list_recall.append(recall)
list_f1.append(f1)
logging.info(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
logging.info(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
logging.info(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
logging.info(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
print(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
print(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
print(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
print(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
end_time = time.time() # 记录结束时间
# 训练结束
print("预测耗时:", end_time - start_time, "") # 打印执行时间

@ -0,0 +1,111 @@
import os
import sys
root_path = os.getcwd()
sys.path.append(root_path)
import time
import datetime
import signal
import uvicorn
import pandas as pd
from fastapi import FastAPI, Request
from pydantic import BaseModel
from typing import List
from utils.common import inference_model
from fastapi.middleware.cors import CORSMiddleware
import logging
import matplotlib.pyplot as plt
import argparse
import numpy as np
import yaml
import threading
import pickle
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from utils.feature_process import create_feature_df, apply_feature_weights, Features
app = FastAPI()
# 定义fastapi返回类
class PredictionResult(BaseModel):
predictions: list
# 允许所有域名的跨域请求
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["GET", "POST", "PUT", "DELETE", "OPTIONS"],
allow_headers=["*"],
)
# 定义接口
@app.post("/inference/")
async def classify_features(request: Request, features_list: List[Features]):
# 遍历每个特征对象,并将其添加到 all_features 中
all_features = create_feature_df(features_list)
# 读取 YAML 配置文件
config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "config/config.yaml"))
with open(config_path, 'r') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
feature_names = config['feature_names']
feature_weights = config['feature_weights']
# 应用特征权重
feature_label_weighted = apply_feature_weights(all_features, feature_names, feature_weights)
start_time = time.time() # 记录开始时间
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "inference_api")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# 训练前设置
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"all_features_label_{now}.xlsx"))
config['data_path'] = data_path
feature_label_weighted.to_excel(data_path, index=False)
# 配置日志
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"inference_{now}.log"))
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
# 特征和标签
X = feature_label_weighted[config['feature_names']].values
y = feature_label_weighted[config['label_name']].values
predictions = inference_model(config["model_path"], X, y, config)
end_time = time.time() # 记录结束时间
print("预测耗时:", end_time - start_time, "") # 打印执行时间
print("预测结果:", predictions)
# 返回预测结果
return PredictionResult(predictions=predictions)
# 以下是fastapi启动配置
if __name__ == "__main__":
name_app = os.path.basename(__file__)[0:-3] # Get the name of the script
log_config = {
"version": 1,
"disable_existing_loggers": True,
"handlers": {
"file_handler": {
"class": "logging.FileHandler",
"filename": "logfile.log",
},
},
"root": {
"handlers": ["file_handler"],
"level": "INFO",
},
}
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "inference_api")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# train_api.py同级目录下的static文件夹
app.mount("/inference_api", StaticFiles(directory=static_dir), name="static")
uvicorn.run(app, host="0.0.0.0", port=3397, reload=False)

@ -0,0 +1,143 @@
import os
import time
import datetime
import pandas as pd
from typing import List
from common import inference_model
import logging
import numpy as np
import yaml
from feature_process import create_feature_df, apply_feature_weights, Features, process_features_list
# 模拟发送的特征数据
features_data1 = {
"somatization": 0.5,
"obsessive_compulsive": 0.3,
"interpersonal_sensitivity": 0.7,
"depression": 0.6,
"anxiety": 0.8,
"hostility": 0.4,
"terror": 0.2,
"paranoia": 0.1,
"psychoticism": 0.9,
"other": 0.2,
"father_parenting_style": 2,
"mother_parenting_style": 3,
"self_assessed_family_economic_condition": 4,
"history_of_psychological_counseling": 1,
"absenteeism_above_average": True,
"academic_warning": False,
"label": -1
}
features_data2 = {
"somatization": 4.3,
"obsessive_compulsive": 4.1,
"interpersonal_sensitivity": 3.8,
"depression": 4,
"anxiety": 4.2,
"hostility": 4.2,
"terror": 4,
"paranoia": 4.2,
"psychoticism": 3.8,
"other": 3.6,
"father_parenting_style": 1,
"mother_parenting_style": 0,
"self_assessed_family_economic_condition": 0,
"history_of_psychological_counseling": False,
"absenteeism_above_average": True,
"academic_warning": True,
"label": -1
}
features_data3 = {
"somatization": 1.1,
"obsessive_compulsive": 2.3,
"interpersonal_sensitivity": 2.6,
"depression": 2.2,
"anxiety": 1.6,
"hostility": 1.5,
"terror": 1.6,
"paranoia": 1.5,
"psychoticism": 1.2,
"other": 1.3,
"father_parenting_style": 1,
"mother_parenting_style": 1,
"self_assessed_family_economic_condition": 1,
"history_of_psychological_counseling": False,
"absenteeism_above_average": False,
"academic_warning": False,
"label": -1
}
features_data4 = {
"somatization": 1.5,
"obsessive_compulsive": 2.4,
"interpersonal_sensitivity": 2.2,
"depression": 3.2,
"anxiety": 1.6,
"hostility": 1.5,
"terror": 3.1,
"paranoia": 1.5,
"psychoticism": 1.9,
"other": 2.6,
"father_parenting_style": 1,
"mother_parenting_style": 1,
"self_assessed_family_economic_condition": 0,
"history_of_psychological_counseling": False,
"absenteeism_above_average": False,
"academic_warning": False,
"label": -1
}
# 必须是features_list
# features_data_list = [features_data3]
features_data_list = [features_data4, features_data2, features_data3, features_data1]
if __name__ == "__main__":
processed_features_list: List[Features] = process_features_list(features_data_list)
# 特征预处理
all_features = create_feature_df(processed_features_list)
# 读取 YAML 配置文件
config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "train_local.yaml"))
with open(config_path, 'r') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
feature_names = config['feature_names']
feature_weights = config['feature_weights']
# 应用特征权重
feature_label_weighted = apply_feature_weights(all_features, feature_names, feature_weights)
start_time = time.time() # 记录开始时间
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "evaluate_local")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# 训练前设置
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"all_features_label_{now}.xlsx"))
config['data_path'] = data_path
feature_label_weighted.to_excel(data_path, index=False)
# 配置日志
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"evaluate_{now}.log"))
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
# 开始验证
list_avg_f1 = []
list_wrong_percentage = []
list_precision = []
list_recall = []
list_f1 = []
# 特征和标签
X = feature_label_weighted[config['feature_names']].values
y = feature_label_weighted[config['label_name']].values
print(config)
predictions = inference_model(config["model_path"], X, y, config)
end_time = time.time() # 记录结束时间
print("预测耗时:", end_time - start_time, "") # 打印执行时间
print("预测结果:", predictions)

@ -0,0 +1,10 @@
2024-05-29 01:46:51 INFO: config:
2024-05-29 01:46:52 INFO: Infer Result:
2024-05-29 01:46:52 INFO: Prediction errors: 1070
2024-05-29 01:46:52 INFO: Prediction error percentage: 4.10%
2024-05-29 01:46:52 INFO: Total samples: 26088
2024-05-29 01:46:52 INFO: Infer Result End:
2024-05-29 01:46:52 INFO: Result: Avg F1: 0.9233 Avg Wrong Percentage: 4.10%
2024-05-29 01:46:52 INFO: Result: Avg Precision: [0.8276923076923077, 0.9590373783922171, 0.9740385781875531, 0.9537483137406051] | 0.9286291445031708
2024-05-29 01:46:52 INFO: Result: Avg Recall: [0.8733766233766234, 0.8944603629417383, 0.9136322257624033, 0.9965767217076118] | 0.9195114834470941
2024-05-29 01:46:52 INFO: Result: Avg F1: [0.8499210110584519, 0.9256239189523102, 0.9428688861487876, 0.9746922698178238] | 0.9232765214943434

Binary file not shown.

@ -0,0 +1,305 @@
import os
import sys
root_path = os.getcwd()
sys.path.append(root_path)
import time
import datetime
import signal
import uvicorn
import pandas as pd
from fastapi import FastAPI, Request
from pydantic import BaseModel
from typing import List
from utils.common import train_detect, evaluate_model, inference_model
from fastapi.middleware.cors import CORSMiddleware
import logging
import matplotlib.pyplot as plt
import argparse
import numpy as np
import yaml
import threading
import pickle
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from utils.feature_process import create_feature_df, apply_feature_weights, Features
app = FastAPI()
# 定义fastapi返回类 inference
class PredictionResult(BaseModel):
predictions: list
# 定义fastapi返回类
class ClassificationResult(BaseModel):
precision: list
recall: list
f1: list
wrong_percentage: float
# 允许所有域名的跨域请求
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["GET", "POST", "PUT", "DELETE", "OPTIONS"],
allow_headers=["*"],
)
# 定义接口
@app.post("/train/")
async def classify_features(request: Request, features_list: List[Features]):
# 遍历每个特征对象,并将其添加到 all_features 中
all_features = create_feature_df(features_list)
# 读取 YAML 配置文件
config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "config/config.yaml"))
with open(config_path, 'r') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
feature_names = config['feature_names']
feature_weights = config['feature_weights']
# 应用特征权重
feature_label_weighted = apply_feature_weights(all_features, feature_names, feature_weights)
start_time = time.time() # 记录开始时间
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "train_api")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# 训练前设置
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"train_feature_label_weighted_{now}.xlsx"))
config['data_path'] = data_path
feature_label_weighted.to_excel(data_path, index=False)
# 添加模型保存路径
model_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"train_model_{now}.pth"))
config['model_path'] = model_path
# 配置日志
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"train_log_{now}.log"))
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
# 配置训练和验证结果图片路径
train_process_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"train_progress_img_{now}.png"))
config['train_process_path'] = train_process_path
evaluate_result_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"evaluate_result_img_{now}.png"))
config['evaluate_result_path'] = evaluate_result_path
print("config: ", config)
logging.info("config: ", config)
# 开始训练
list_avg_f1 = []
list_wrong_percentage = []
list_precision = []
list_recall = []
list_f1 = []
train_times = 1 if config['data_train']==r'all' else config["experiments_count"]
for i in range(train_times):
avg_f1, wrong_percentage, precision, recall, f1 = train_detect(config)
list_avg_f1.append(avg_f1)
list_wrong_percentage.append(wrong_percentage)
list_precision.append(precision)
list_recall.append(recall)
list_f1.append(f1)
logging.info(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
logging.info(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
logging.info(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
logging.info(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
print(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
print(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
print(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
print(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
end_time = time.time() # 记录结束时间
# 训练结束
print("预测耗时:", end_time - start_time, "") # 打印执行时间
# 返回分类结果和模型文件下载 URLstatic不是程序执行路径而是app.mount的静态文件夹
model_file_url = f"{request.base_url}train_api/train_model_{now}.pth"
log_file_url = f"{request.base_url}train_api/train_log_{now}.log"
data_file_url = f"{request.base_url}train_api/train_feature_label_weighted_{now}.xlsx"
# 返回分类结果和模型文件
return {
"classification_result": ClassificationResult(
precision=precision,
recall=recall,
f1=f1,
wrong_percentage=wrong_percentage
),
"data_file": {
"model_file_url": model_file_url,
"log_file_url": log_file_url,
"data_file_url": data_file_url
}
}
# 定义接口
@app.post("/evaluate/")
async def classify_features(request: Request, features_list: List[Features]):
# 遍历每个特征对象,并将其添加到 all_features 中
all_features = create_feature_df(features_list)
# 读取 YAML 配置文件
config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "config/config.yaml"))
with open(config_path, 'r') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
feature_names = config['feature_names']
feature_weights = config['feature_weights']
# 应用特征权重
feature_label_weighted = apply_feature_weights(all_features, feature_names, feature_weights)
start_time = time.time() # 记录开始时间
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "evaluate_api")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# 训练前设置
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"evaluate_feature_label_weighted_{now}.xlsx"))
config['data_path'] = data_path
feature_label_weighted.to_excel(data_path, index=False)
# 配置验证结果图片路径
evaluate_result_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"evaluate_result_img_{now}.png"))
config['evaluate_result_path'] = evaluate_result_path
# 配置日志
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"evaluate_log_{now}.log"))
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
# 开始验证
list_avg_f1 = []
list_wrong_percentage = []
list_precision = []
list_recall = []
list_f1 = []
# 特征和标签
X = feature_label_weighted[config['feature_names']].values
y = feature_label_weighted[config['label_name']].values
print("config: ", config)
logging.info("config: ", config)
avg_f1, wrong_percentage, precision, recall, f1 = evaluate_model(config["model_path"], X, y, config)
list_avg_f1.append(avg_f1)
list_wrong_percentage.append(wrong_percentage)
list_precision.append(precision)
list_recall.append(recall)
list_f1.append(f1)
logging.info(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
logging.info(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
logging.info(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
logging.info(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
print(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
print(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
print(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
print(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
end_time = time.time() # 记录结束时间
# 训练结束
print("预测耗时:", end_time - start_time, "") # 打印执行时间
# 返回分类结果和模型文件下载 URLstatic不是程序执行路径而是app.mount的静态文件夹
log_file_url = f"{request.base_url}evaluate_api/evaluate_log_{now}.log"
data_file_url = f"{request.base_url}evaluate_api/evaluate_feature_label_weighted_{now}.xlsx"
# 返回分类结果和模型文件
return {
"classification_result": ClassificationResult(
precision=precision,
recall=recall,
f1=f1,
wrong_percentage=wrong_percentage
),
"data_file": {
"log_file_url": log_file_url,
"data_file_url": data_file_url
}
}
# 定义接口
@app.post("/inference/")
async def classify_features(request: Request, features_list: List[Features]):
# 遍历每个特征对象,并将其添加到 all_features 中
all_features = create_feature_df(features_list)
# 读取 YAML 配置文件
config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "config/config.yaml"))
with open(config_path, 'r') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
feature_names = config['feature_names']
feature_weights = config['feature_weights']
# 应用特征权重
feature_label_weighted = apply_feature_weights(all_features, feature_names, feature_weights)
start_time = time.time() # 记录开始时间
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "inference_api")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# 训练前设置
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"inference_feature_label_weighted_{now}.xlsx"))
config['data_path'] = data_path
feature_label_weighted.to_excel(data_path, index=False)
# 配置日志
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"inference_log_{now}.log"))
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
# 特征和标签
X = feature_label_weighted[config['feature_names']].values
y = feature_label_weighted[config['label_name']].values
predictions = inference_model(config["model_path"], X, y, config)
end_time = time.time() # 记录结束时间
print("预测耗时:", end_time - start_time, "") # 打印执行时间
print("预测结果:", predictions)
# 返回预测结果
return PredictionResult(predictions=predictions)
# 以下是fastapi启动配置
if __name__ == "__main__":
name_app = os.path.basename(__file__)[0:-3] # Get the name of the script
log_config = {
"version": 1,
"disable_existing_loggers": True,
"handlers": {
"file_handler": {
"class": "logging.FileHandler",
"filename": "logfile.log",
},
},
"root": {
"handlers": ["file_handler"],
"level": "INFO",
},
}
# 创建静态文件存放文件夹
static_dir_train = os.path.abspath(os.path.join(os.path.dirname(__file__), "train_api")) # 设置模型文件和配置文件的存放目录和本py同级
static_dir_evaluate = os.path.abspath(os.path.join(os.path.dirname(__file__), "evaluate_api"))
static_dir_inference = os.path.abspath(os.path.join(os.path.dirname(__file__), "inference_api"))
os.makedirs(static_dir_train, exist_ok=True)
os.makedirs(static_dir_evaluate, exist_ok=True)
os.makedirs(static_dir_inference, exist_ok=True)
# 同级目录下的static文件夹
app.mount("/train_api", StaticFiles(directory=static_dir_train), name="static_dir_train")
app.mount("/evaluate_api", StaticFiles(directory=static_dir_evaluate), name="static_dir_evaluate")
app.mount("/inference_api", StaticFiles(directory=static_dir_evaluate), name="static_dir_inference")
uvicorn.run(app, host="0.0.0.0", port=3397, reload=False)
## train evl 功能OK了 差infer就可以了还有就是做一个模型上传机制目前为止最好的模型就是model下面那个

@ -0,0 +1,156 @@
import os
import sys
root_path = os.getcwd()
sys.path.append(root_path)
import time
import datetime
import signal
import uvicorn
import pandas as pd
from fastapi import FastAPI, Request
from pydantic import BaseModel
from typing import List
from utils.common import train_detect
from fastapi.middleware.cors import CORSMiddleware
import logging
import matplotlib.pyplot as plt
import argparse
import numpy as np
import yaml
import threading
import pickle
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from utils.feature_process import create_feature_df, apply_feature_weights, Features
app = FastAPI()
# 定义fastapi返回类
class ClassificationResult(BaseModel):
precision: list
recall: list
f1: list
wrong_percentage: float
# 允许所有域名的跨域请求
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["GET", "POST", "PUT", "DELETE", "OPTIONS"],
allow_headers=["*"],
)
# 定义接口
@app.post("/train/")
async def classify_features(request: Request, features_list: List[Features]):
# 遍历每个特征对象,并将其添加到 all_features 中
all_features = create_feature_df(features_list)
# 读取 YAML 配置文件
config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "config/config.yaml"))
with open(config_path, 'r') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
feature_names = config['feature_names']
feature_weights = config['feature_weights']
# 应用特征权重
feature_label_weighted = apply_feature_weights(all_features, feature_names, feature_weights)
start_time = time.time() # 记录开始时间
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "train_api")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# 训练前设置
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"all_features_label_{now}.xlsx"))
config['data_path'] = data_path
feature_label_weighted.to_excel(data_path, index=False)
# 添加模型保存路径
model_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"model_{now}.pth"))
config['model_path'] = model_path
# 配置日志
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"train_{now}.log"))
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
print("config: ", config)
logging.info("config: ", config)
# 开始训练
list_avg_f1 = []
list_wrong_percentage = []
list_precision = []
list_recall = []
list_f1 = []
train_times = 1 if config['data_train']==r'all' else config["experiments_count"]
for i in range(train_times):
print(config)
avg_f1, wrong_percentage, precision, recall, f1 = train_detect(config)
list_avg_f1.append(avg_f1)
list_wrong_percentage.append(wrong_percentage)
list_precision.append(precision)
list_recall.append(recall)
list_f1.append(f1)
logging.info(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
logging.info(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
logging.info(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
logging.info(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
print(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
print(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
print(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
print(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
end_time = time.time() # 记录结束时间
# 训练结束
print("预测耗时:", end_time - start_time, "") # 打印执行时间
# 返回分类结果和模型文件下载 URLstatic不是程序执行路径而是app.mount的静态文件夹
model_file_url = f"{request.base_url}train_api/model_{now}.pth"
log_file_url = f"{request.base_url}train_api/train_{now}.log"
data_file_url = f"{request.base_url}train_api/all_features_label_{now}.xlsx"
# 返回分类结果和模型文件
return {
"classification_result": ClassificationResult(
precision=precision,
recall=recall,
f1=f1,
wrong_percentage=wrong_percentage
),
"data_file": {
"model_file_url": model_file_url,
"log_file_url": log_file_url,
"data_file_url": data_file_url
}
}
# 以下是fastapi启动配置
if __name__ == "__main__":
name_app = os.path.basename(__file__)[0:-3] # Get the name of the script
log_config = {
"version": 1,
"disable_existing_loggers": True,
"handlers": {
"file_handler": {
"class": "logging.FileHandler",
"filename": "logfile.log",
},
},
"root": {
"handlers": ["file_handler"],
"level": "INFO",
},
}
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "train_api")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# train_api.py同级目录下的static文件夹
app.mount("/train_api", StaticFiles(directory=static_dir), name="static")
uvicorn.run(app, host="0.0.0.0", port=3397, reload=False)

@ -0,0 +1,61 @@
#---设备配置---#
device: cpu
#device: cuda
#---训练配置---#
n_epochs: 150
batch_size: 16
learning_rate: 0.001
nc: 4
use_infer_as_val: true
#data_train: train_val # train: 只用train训练val做验证 infer做测试train_val: 用train和val做训练infer做验证 infer做测试all: 全部训练全部验证全部测试数据先1/5作为infer剩下的再1/5作为val剩下的4/5作为训练
data_train: all
early_stop_patience: 50
gamma: 0.98
step_size: 10
experiments_count: 50
#---训练结果---#
# 日志路径
log_path: results/training.log
# 训练过程统计图路径
train_process_path: results/training_progress.png
# 训练结果统计图路径
train_result_path: results/training_result.png
# 训练模型路径
model_path: results/psychology.pth
# 用于测试的部分数据路径
infer_path: results/infer.xlsx
#---训练原始数据---#
# 训练样本数据路径配置
data_path: data_processed/feature_label_weighted.xlsx
#---样本特征---#
# 标签名称
label_name: 类别
# 特征名称
feature_names:
- "强迫症状数字化"
- "人际关系敏感数字化"
- "抑郁数字化"
- "多因子症状"
- "母亲教养方式数字化"
- "父亲教养方式数字化"
- "自评家庭经济条件数字化"
- "有无心理治疗(咨询)史数字化"
- "学业情况数字化"
- "出勤情况数字化"
# 定义特征权重列表
feature_weights:
- 0.135
- 0.085
- 0.08
- 0.2
- 0.09
- 0.09
- 0.06
- 0.06
- 0.08
- 0.12

@ -0,0 +1,87 @@
import os
import time
import datetime
import pandas as pd
from typing import List
from common import train_detect
import logging
import numpy as np
import yaml
from feature_process import create_feature_df, apply_feature_weights, Features, process_features_list
from data_process import preprocess_data, convert_to_list
if __name__ == "__main__":
# 读取原始数据表
df_src = pd.read_excel("data/data_src.xlsx")
df_leave = pd.read_excel("data_processed/Leave_Record_RES.xlsx")
df_dropout_warning = pd.read_excel("data_processed/Dropout_Warning_RES.xlsx")
# 数据预处理
df = preprocess_data(df_src, df_leave, df_dropout_warning)
# 转换成数据列表
features_data_list = convert_to_list(df)
processed_features_list: List[Features] = process_features_list(features_data_list)
# 特征预处理
all_features = create_feature_df(processed_features_list)
# 读取 YAML 配置文件
config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "train_local.yaml"))
with open(config_path, 'r') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
feature_names = config['feature_names']
feature_weights = config['feature_weights']
# 应用特征权重
feature_label_weighted = apply_feature_weights(all_features, feature_names, feature_weights)
start_time = time.time() # 记录开始时间
# 创建静态文件存放文件夹
static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "static_local")) # 设置模型文件和配置文件的存放目录和本py同级
os.makedirs(static_dir, exist_ok=True)
# 训练前设置
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"all_features_label_{now}.xlsx"))
config['data_path'] = data_path
feature_label_weighted.to_excel(data_path, index=False)
# 添加模型保存路径
model_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"model_{now}.pth"))
config['model_path'] = model_path
# 配置日志
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), static_dir, f"train_{now}.log"))
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
# 开始训练
list_avg_f1 = []
list_wrong_percentage = []
list_precision = []
list_recall = []
list_f1 = []
train_times = 1 if config['data_train']==r'all' else config["experiments_count"]
for i in range(train_times):
print(config)
avg_f1, wrong_percentage, precision, recall, f1 = train_detect(config)
list_avg_f1.append(avg_f1)
list_wrong_percentage.append(wrong_percentage)
list_precision.append(precision)
list_recall.append(recall)
list_f1.append(f1)
logging.info(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
logging.info(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
logging.info(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
logging.info(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
print(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
print(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
print(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
print(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
end_time = time.time() # 记录结束时间
# 训练结束
print("预测耗时:", end_time - start_time, "") # 打印执行时间

@ -0,0 +1,348 @@
import os
import yaml
import pandas as pd
import numpy as np
import torch
from torch import nn
from torch.utils.data import DataLoader, TensorDataset
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import precision_score, recall_score, f1_score
from sklearn.utils.class_weight import compute_class_weight
import logging
import matplotlib.pyplot as plt
import argparse
class MLP(nn.Module):
def __init__(self, config):
super(MLP, self).__init__()
self.model = nn.Sequential(
nn.Linear(len(config['feature_names']), 32),
nn.ReLU(),
nn.Linear(32, 128),
nn.ReLU(),
nn.Linear(128, 32),
nn.ReLU(),
nn.Linear(32, config['nc']),
)
def forward(self, x):
return self.model(x)
def load_and_split_data(config):
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
file_path = os.path.join(parent_dir, config['data_path'])
data = pd.read_excel(file_path)
X = data[config['feature_names']].values
y = data[config['label_name']].values
skf_outer = StratifiedKFold(n_splits=5, shuffle=True)
train_index_outer, test_index_outer = next(skf_outer.split(X, y))
X_train_val, X_infer = X[train_index_outer], X[test_index_outer]
y_train_val, y_infer = y[train_index_outer], y[test_index_outer]
skf_inner = StratifiedKFold(n_splits=5, shuffle=True)
train_index_inner, test_index_inner = next(skf_inner.split(X_train_val, y_train_val))
X_train, X_val = X_train_val[train_index_inner], X_train_val[test_index_inner]
y_train, y_val = y_train_val[train_index_inner], y_train_val[test_index_inner]
return X, y, X_train_val, y_train_val, X_train, y_train, X_val, y_val, X_infer, y_infer
def save_model(model_path, best_model):
torch.save(best_model, model_path)
def evaluate_model(model_path, X_infer, y_infer, config):
# 如果传入的是模型文件路径,则从该路径加载模型
if isinstance(model_path, str):
model = MLP(config).to(config['device'])
model.load_state_dict(torch.load(model_path, map_location=config['device'])) # 加载训练好的模型参数
else:
model = model_path
# infer_data = pd.DataFrame(X_infer, columns=config['feature_names'])
# infer_data[config['label_name']] = y_infer
# infer_data.to_excel(os.path.join(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")), config['infer_path']), index=False)
model.eval()
with torch.no_grad():
outputs = model(torch.from_numpy(X_infer).float().to(config['device']))
_, predictions = torch.max(outputs, 1)
wrong_indices = np.where(y_infer != predictions.cpu().numpy())[0]
wrong_count = len(wrong_indices)
total_count = len(y_infer)
wrong_percentage = (wrong_count / total_count) * 100
print("Infer Result: ")
logging.info("Infer Result: ")
print("预测错误数量:", wrong_count)
print("预测错误占总数量的百分比:", wrong_percentage, "%")
print("总数量:", total_count)
logging.info(f"Prediction errors: {wrong_count}")
logging.info(f"Prediction error percentage: {wrong_percentage:.2f}%")
logging.info(f"Total samples: {total_count}")
precision = precision_score(y_infer, predictions.cpu().numpy(), average=None)
recall = recall_score(y_infer, predictions.cpu().numpy(), average=None)
f1 = f1_score(y_infer, predictions.cpu().numpy(), average=None)
avg_precision = np.mean(precision)
avg_recall = np.mean(recall)
avg_f1 = np.mean(f1)
for i in range(len(precision)):
print(f"Class {i} Precision: {precision[i]:.4f}, Recall: {recall[i]:.4f}, F1: {f1[i]:.4f}")
print("精确率:", precision)
print("召回率:", recall)
print("F1得分:", f1)
print("平均精确率:", avg_precision)
print("平均召回率:", avg_recall)
print("平均F1得分:", avg_f1)
print("Infer Result End: ")
logging.info("Infer Result End: ")
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(15, 5))
ax1.bar(np.arange(len(precision)), precision)
ax1.set_title('Precision')
ax2.bar(np.arange(len(recall)), recall)
ax2.set_title('Recall')
ax3.bar(np.arange(len(f1)), f1)
ax3.set_title('F1 Score')
# 保存图片
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
evaluate_result_path = os.path.join(parent_dir, config['evaluate_result_path'])
plt.savefig(evaluate_result_path)
return avg_f1, wrong_percentage, precision, recall, f1
def inference_model(model_path, X_infer, y_infer, config):
# 如果传入的是模型文件路径,则从该路径加载模型
if isinstance(model_path, str):
model = MLP(config).to(config['device'])
model.load_state_dict(torch.load(model_path, map_location=config['device'])) # 加载训练好的模型参数
else:
model = model_path
# infer_data = pd.DataFrame(X_infer, columns=config['feature_names'])
# infer_data[config['label_name']] = y_infer
# infer_data.to_excel(os.path.join(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")), config['infer_path']), index=False)
model.eval()
# 推理
with torch.no_grad():
outputs = model(torch.from_numpy(X_infer).float().to(config['device']))
# 获取预测结果
_, predictions = torch.max(outputs, 1)
# 实际类别从1开始程序类别从0开始
predictions += 1
# 打印预测结果
# print("预测结果:", predictions.cpu().numpy())
# 返回预测结果
return predictions.cpu().numpy().tolist()
def train_detect(config):
X, y, X_train_val, y_train_val, X_train, y_train, X_val, y_val, X_infer, y_infer = load_and_split_data(config)
if config['data_train'] == r'train_val':
train_dataset = TensorDataset(torch.from_numpy(X_train_val).float().to(config['device']), torch.from_numpy(y_train_val).long().to(config['device']))
val_dataset = TensorDataset(torch.from_numpy(X_infer).float().to(config['device']), torch.from_numpy(y_infer).long().to(config['device']))
class_weights = torch.tensor(compute_class_weight('balanced', classes=np.unique(y_train_val), y=y_train_val), dtype=torch.float32).to(config['device'])
logging.info(f"Class weights: {class_weights}")
elif config['data_train'] == r'train':
train_dataset = TensorDataset(torch.from_numpy(X_train).float().to(config['device']), torch.from_numpy(y_train).long().to(config['device']))
val_dataset = TensorDataset(torch.from_numpy(X_val).float().to(config['device']), torch.from_numpy(y_val).long().to(config['device']))
class_weights = torch.tensor(compute_class_weight('balanced', classes=np.unique(y_train), y=y_train), dtype=torch.float32).to(config['device'])
logging.info(f"Class weights: {class_weights}")
elif config['data_train'] == r'all':
train_dataset = TensorDataset(torch.from_numpy(X).float().to(config['device']), torch.from_numpy(y).long().to(config['device']))
val_dataset = TensorDataset(torch.from_numpy(X).float().to(config['device']), torch.from_numpy(y).long().to(config['device']))
X_infer = X
y_infer = y
class_weights = torch.tensor(compute_class_weight('balanced', classes=np.unique(y), y=y), dtype=torch.float32).to(config['device'])
logging.info(f"Class weights: {class_weights}")
else:
print("Error: Set data_train first in yaml!")
logging.error("Error: Set data_train first in yaml!")
train_loader = DataLoader(train_dataset, batch_size=config['batch_size'], shuffle=True)
val_loader = DataLoader(val_dataset, batch_size=config['batch_size'])
model = MLP(config).to(config['device'])
criterion = nn.CrossEntropyLoss(weight=class_weights)
optimizer = torch.optim.Adam(model.parameters(), lr=config['learning_rate'])
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, config['step_size'], config['gamma'])
best_val_f1, best_val_recall, best_val_precision, best_epoch, best_model = train_model(model, train_loader, val_loader, criterion, optimizer, scheduler, config)
# 保存模型
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
model_path = os.path.join(parent_dir, config['model_path'])
save_model(model_path, best_model)
logging.info(f"Best Validation F1 Score (Macro): {best_val_f1:.4f}")
logging.info(f"Best Validation Recall (Macro): {best_val_recall:.4f}")
logging.info(f"Best Validation Precision (Macro): {best_val_precision:.4f}")
logging.info(f"Best Epoch: {best_epoch + 1}")
print(f"Best Validation F1 Score (Macro): {best_val_f1:.4f}")
print(f"Best Validation Recall (Macro): {best_val_recall:.4f}")
print(f"Best Validation Precision (Macro): {best_val_precision:.4f}")
print(f"Best Epoch: {best_epoch + 1}")
avg_f1, wrong_percentage, precision, recall, f1 = evaluate_model(model, X_infer, y_infer, config)
return avg_f1, wrong_percentage, precision, recall, f1
def train_model(model, train_loader, val_loader, criterion, optimizer, scheduler, config):
n_epochs = config['n_epochs']
best_val_f1 = 0.0
best_val_recall = 0.0
best_val_precision = 0.0
best_epoch = -1
best_model = None
patience = config['early_stop_patience']
trigger_times = 0
train_loss_history = []
train_acc_history = []
val_loss_history = []
val_acc_history = []
val_f1_history = []
val_precision_history = []
val_recall_history = []
plt.rcParams['figure.max_open_warning'] = 50
for epoch in range(n_epochs):
# 训练阶段
model.train()
train_loss, train_acc = 0, 0
for inputs, targets in train_loader:
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
train_loss += loss.item() * inputs.size(0)
_, preds = torch.max(outputs, 1)
train_acc += torch.sum(preds == targets.data)
train_loss /= len(train_loader.dataset)
train_acc = train_acc.double().cpu() / len(train_loader.dataset)
# 更新学习率
scheduler.step()
# 验证阶段
model.eval()
val_loss, val_acc, all_preds, all_targets = 0, 0, [], []
with torch.no_grad():
for inputs, targets in val_loader:
outputs = model(inputs)
loss = criterion(outputs, targets)
val_loss += loss.item() * inputs.size(0)
_, preds = torch.max(outputs, 1)
val_acc += torch.sum(preds == targets.data)
all_preds.extend(preds.cpu().numpy())
all_targets.extend(targets.cpu().numpy())
val_loss /= len(val_loader.dataset)
val_acc = val_acc.double().cpu() / len(val_loader.dataset)
class_precisions_m = precision_score(all_targets, all_preds, average='macro')
class_recalls_m = recall_score(all_targets, all_preds, average='macro')
class_f1_scores_m = f1_score(all_targets, all_preds, average='macro')
logging.info(f'Epoch {epoch+1:0{3}d} | Train Loss: {train_loss:.4f} | Train Accuracy: {train_acc:.4f} | Validation Loss: {val_loss:.4f} | Validation Accuracy: {val_acc:.4f} | Validation Mean Precision: {class_precisions_m:.4f} | Validation Mean Recall: {class_recalls_m:.4f} | Validation Mean F1_score: {class_f1_scores_m:.4f}')
print(f'Epoch {epoch+1:0{3}d} | Train Loss: {train_loss:.4f} | Train Accuracy: {train_acc:.4f} | Validation Loss: {val_loss:.4f} | Validation Accuracy: {val_acc:.4f} | Validation Mean Precision: {class_precisions_m:.4f} | Validation Mean Recall: {class_recalls_m:.4f} | Validation Mean F1_score: {class_f1_scores_m:.4f}')
train_loss_history.append(train_loss)
train_acc_history.append(train_acc)
val_loss_history.append(val_loss)
val_acc_history.append(val_acc)
val_f1_history.append(class_f1_scores_m)
val_precision_history.append(class_precisions_m)
val_recall_history.append(class_recalls_m)
# 打印训练和验证过程的可视化图片
plt.close('all')
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(15, 5))
ax1.plot(train_loss_history, label='Train Loss')
ax1.plot(val_loss_history, label='Validation Loss')
ax1.set_title('Loss')
ax1.legend()
ax2.plot(train_acc_history, label='Train Accuracy')
ax2.plot(val_acc_history, label='Validation Accuracy')
ax2.set_title('Accuracy')
ax2.legend()
ax3.plot(val_f1_history, label='Validation F1')
ax3.plot(val_precision_history, label='Validation Precision')
ax3.plot(val_recall_history, label='Validation Recall')
ax3.set_title('Precision Recall F1-Score (Macro Mean)')
ax3.legend()
# 保存图片
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
train_process_path = os.path.join(parent_dir, config['train_process_path'])
plt.savefig(train_process_path)
if class_f1_scores_m > best_val_f1:
best_val_f1 = class_f1_scores_m
best_val_recall = class_recalls_m
best_val_precision = class_precisions_m
best_epoch = epoch
best_model = model.state_dict()
trigger_times = 0
else:
trigger_times += 1
if trigger_times >= patience:
logging.info(f'Early stopping at epoch {epoch} | Best epoch : {best_epoch + 1}')
print(f'Early stopping at epoch {epoch} | Best epoch : {best_epoch + 1}')
break
return best_val_f1, best_val_recall, best_val_precision, best_epoch, best_model
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--config', type=str, default='config.yaml', help='Path to the configuration file')
args = parser.parse_args()
with open(args.config, 'r') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
# 配置日志
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
log_path = os.path.join(parent_dir, config['log_path'])
logging.basicConfig(filename=log_path, level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
list_avg_f1 = []
list_wrong_percentage = []
list_precision = []
list_recall = []
list_f1 = []
train_times = 1 if config['data_train']==r'all' else config["experiments_count"]
for i in range(train_times):
avg_f1, wrong_percentage, precision, recall, f1 = train_detect(config)
list_avg_f1.append(avg_f1)
list_wrong_percentage.append(wrong_percentage)
list_precision.append(precision)
list_recall.append(recall)
list_f1.append(f1)
logging.info(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
logging.info(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
logging.info(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
logging.info(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")
print(f"Result: Avg F1: {sum(list_avg_f1) / len(list_avg_f1):.4f} Avg Wrong Percentage: {sum(list_wrong_percentage) / len(list_wrong_percentage):.2f}%")
print(f"Result: Avg Precision: {[sum(p[i] for p in list_precision) / len(list_precision) for i in range(len(list_precision[0]))]} | {np.mean(list_precision)}")
print(f"Result: Avg Recall: {[sum(r[i] for r in list_recall) / len(list_recall) for i in range(len(list_recall[0]))]} | {np.mean(list_recall)}")
print(f"Result: Avg F1: {[sum(f1[i] for f1 in list_f1) / len(list_f1) for i in range(len(list_f1[0]))]} | {np.mean(list_f1)}")

@ -0,0 +1,93 @@
from pydantic import BaseModel
import requests
import pandas as pd
import os
def preprocess_data(df_src, df_leave, df_dropout_warning):
"""
对原始数据进行预处理,返回处理好的 DataFrame
参数:
df_src (pandas.DataFrame): 学生信息表
df_leave (pandas.DataFrame): 请假记录表
df_dropout_warning (pandas.DataFrame): 学业预警表
返回:
pandas.DataFrame: 处理好的数据 DataFrame
"""
# 定义SCL-90的10个因子
scl_90_factors = ["躯体化", "强迫症状", "人际关系敏感", "抑郁", "焦虑", "敌对", "恐怖", "偏执", "精神病性", "其他"]
new_factor_names = ["somatization", "obsessive_compulsive", "interpersonal_sensitivity", "depression", "anxiety", "hostility", "terror", "paranoia", "psychoticism", "other"]
def calculate_warning_level(row):
factors = row[scl_90_factors]
if (factors >= 4).sum() >= 1 or (factors >= 3).sum() >= 8:
return 1
elif (factors >= 3).sum() >= 1:
return 2
elif (factors >= 2).sum() >= 1:
return 3
else:
return 4
# 根据学号填充请假次数
df_leave['请假次数'] = df_leave['学号'].map(df_leave.groupby('学号')['请假次数'].sum().to_dict())
df_src['请假次数'] = df_src['编号'].map(df_leave.set_index('学号')['请假次数']).fillna(0)
# 计算请假次数平均值
leave_mean = df_leave['请假次数'].mean()
# 根据学号填充是否受过退学预警
df_dropout_warning['是否受过退学预警'] = df_dropout_warning['学号'].map(df_dropout_warning.groupby('学号')['是否受过退学预警'].sum().to_dict())
df_src['是否受过退学预警'] = df_src['编号'].map(df_dropout_warning.set_index('学号')['是否受过退学预警']).fillna(0)
# 计算预警等级
df_src['类别'] = df_src.apply(calculate_warning_level, axis=1)
# 英文数字化特征
for i, factor in enumerate(scl_90_factors):
df_src[new_factor_names[i]] = df_src[factor]
df_src['label'] = df_src['类别'].apply(lambda x: x - 1)
# 对df_src进行统一处理
df_src['father_parenting_style'] = df_src['父亲教养方式'].apply(lambda x: 1 if x == "温暖与理解" else 0)
df_src['mother_parenting_style'] = df_src['母亲教养方式'].apply(lambda x: 1 if x == "温暖与理解" else 0)
df_src['self_assessed_family_economic_condition'] = df_src['自评家庭经济条件'].apply(lambda x: 2 if x == "贫困" else 1 if x == "较差" else 0)
df_src['history_of_psychological_counseling'] = df_src['心理治疗(咨询)史'].apply(lambda x: 0 if x in ['', '没有'] else 1)
df_src['absenteeism_above_average'] = df_src['请假次数'].apply(lambda x: 1 if x >= leave_mean else 0)
df_src['academic_warning'] = df_src['是否受过退学预警'].apply(lambda x: 1 if x == 1 else 0)
return df_src
def convert_to_list(df):
"""
DataFrame 转换成包含所有特征和标签的数据列表
参数:
df (pandas.DataFrame): 处理好的数据 DataFrame
返回:
list: 包含所有特征和标签的数据列表
"""
features_data_list = []
for _, row in df.iterrows():
features_data = {
"somatization": row["somatization"],
"obsessive_compulsive": row["obsessive_compulsive"],
"interpersonal_sensitivity": row["interpersonal_sensitivity"],
"depression": row["depression"],
"anxiety": row["anxiety"],
"hostility": row["hostility"],
"terror": row["terror"],
"paranoia": row["paranoia"],
"psychoticism": row["psychoticism"],
"other": row["other"],
"father_parenting_style": row["father_parenting_style"],
"mother_parenting_style": row["mother_parenting_style"],
"self_assessed_family_economic_condition": row["self_assessed_family_economic_condition"],
"history_of_psychological_counseling": row["history_of_psychological_counseling"],
"absenteeism_above_average": row["absenteeism_above_average"],
"academic_warning": row["academic_warning"],
"label": row["label"]
}
features_data_list.append(features_data)
return features_data_list

@ -0,0 +1,134 @@
import os
import sys
root_path = os.getcwd()
sys.path.append(root_path)
import time
import datetime
import signal
import uvicorn
import pandas as pd
from fastapi import FastAPI, Request
from pydantic import BaseModel
from typing import List
from fastapi.middleware.cors import CORSMiddleware
import logging
import matplotlib.pyplot as plt
import argparse
import numpy as np
import yaml
import threading
import pickle
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
# 定义单个样本的特征类
class Features(BaseModel):
# 10个SCL评测量后续再处理范围0-4
somatization: float
obsessive_compulsive: float
interpersonal_sensitivity: float
depression: float
anxiety: float
hostility: float
terror: float
paranoia: float
psychoticism: float
other: float
# 基本信息特征量
father_parenting_style: int # 温暖与理解1其他0
mother_parenting_style: int # 温暖与理解1其他0
self_assessed_family_economic_condition: int # 贫困2较差1其他0
history_of_psychological_counseling: bool # 有10
# 日常行为特征量
absenteeism_above_average: bool # 大于平均次数1小于等于0
academic_warning: bool # 有预警1无预警0
# 标签
label: int # 0-3 共4个类别
def process_features_list(features_list: List[dict]) -> List[Features]:
"""
将包含字典的列表转换为包含 Features 实例的列表
"""
return [Features(**features_dict) for features_dict in features_list]
def create_feature_df(features_list):
"""
根据features_list对象创建一个DataFrame
参数:
features_list (Features): 包含特征值的对象的数组
返回:
pandas.DataFrame: 包含特征和标签的DataFrame
"""
# 定义一个空的 DataFrame 用于存储所有样本特征
all_features = pd.DataFrame()
for features in features_list:
relevant_features = {
"somatization": features.somatization,
"obsessive_compulsive": features.obsessive_compulsive,
"interpersonal_sensitivity": features.interpersonal_sensitivity,
"depression": features.depression,
"anxiety": features.anxiety,
"hostility": features.hostility,
"terror": features.terror,
"paranoia": features.paranoia,
"psychoticism": features.psychoticism,
"other": features.other
}
df_feature = pd.DataFrame({
# 数字化特征--基本信息
'父亲教养方式数字化': [(lambda x: 0.59 if x == 1 else 0.46)(features.father_parenting_style)],
'母亲教养方式数字化': [(lambda x: 0.69 if x == 1 else 0.56)(features.mother_parenting_style)],
'自评家庭经济条件数字化': [(lambda x: 0.54 if x in [2, 1] else 0.47)(features.self_assessed_family_economic_condition)],
'有无心理治疗(咨询)史数字化': [(lambda x: 0.21 if x else 0.09)(features.history_of_psychological_counseling)],
# 数字化特征--症状因子
'强迫症状数字化': [features.obsessive_compulsive / 4],
'人际关系敏感数字化': [features.interpersonal_sensitivity / 4],
'抑郁数字化': [features.depression / 4],
'多因子症状': [(lambda x: sum(1 for value in x.values() if value > 3.0) / 10)(relevant_features)],
# 数字化特征--日常行为
'出勤情况数字化': [0.74 if features.absenteeism_above_average else 0.67],
'学业情况数字化': [0.59 if features.academic_warning else 0.50],
"类别": [features.label]
})
all_features = pd.concat([all_features, df_feature], ignore_index=True)
return all_features
def apply_feature_weights(df, feature_names, feature_weights):
"""
将特征权重应用到DataFrame中
参数:
df (pandas.DataFrame): 包含特征和标签的DataFrame
feature_names (list): 特征名称列表
feature_weights (list): 特征权重列表
返回:
pandas.DataFrame: 应用权重后的DataFrame
"""
# 找到最大值
max_value = max(feature_weights)
# 缩放权重
feature_weights_scaled = [x / max_value for x in feature_weights]
# 打印缩放后的特征权重
# print("Scaled Feature Weights:", feature_weights_scaled)
# 将特征和标签分开,并做归一化处理
X = df[feature_names].values
y = df['类别'].values
# 分别乘以权重,放在归一化后
for i in range(len(feature_names)):
X[:, i] = X[:, i] * feature_weights_scaled[i]
feature_label_weighted = pd.DataFrame(X, columns=feature_names)
feature_label_weighted['类别'] = y
return feature_label_weighted
Loading…
Cancel
Save