115 lines
3.7 KiB
Python
115 lines
3.7 KiB
Python
![]() |
#!/usr/bin/env python3
|
|||
|
# -*- coding: utf-8 -*-
|
|||
|
"""
|
|||
|
直接控制台测试 - 验证编码和表情符号显示
|
|||
|
"""
|
|||
|
|
|||
|
import os
|
|||
|
import sys
|
|||
|
|
|||
|
# 设置环境变量
|
|||
|
os.environ['PYTHONIOENCODING'] = 'utf-8'
|
|||
|
|
|||
|
# 添加server路径
|
|||
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'server'))
|
|||
|
|
|||
|
def test_console_output():
|
|||
|
"""测试控制台输出"""
|
|||
|
|
|||
|
print("=" * 60)
|
|||
|
print("🧪 控制台编码测试开始")
|
|||
|
print("=" * 60)
|
|||
|
|
|||
|
# 测试基本中文和表情符号
|
|||
|
print("📝 基本测试:")
|
|||
|
print(" ✅ 简体中文: 药店销售预测系统")
|
|||
|
print(" 🚀 表情符号: 启动 📊 数据 🤖 模型")
|
|||
|
print(" 💾 混合文本: Product P001 - 感冒灵颗粒")
|
|||
|
|
|||
|
# 测试训练相关输出
|
|||
|
print("\n🏃 训练日志模拟:")
|
|||
|
task_id = "test-12345"
|
|||
|
print(f"🚀 训练任务开始: {task_id}")
|
|||
|
print(f"📋 任务详情: 训练 TRANSFORMER 模型 - 药品 P001")
|
|||
|
print(f"⚙️ 配置参数: 共 3 个轮次")
|
|||
|
print(f"🤖 调用 TRANSFORMER 训练器 - 产品: P001")
|
|||
|
|
|||
|
# 模拟训练进度
|
|||
|
for epoch in range(1, 4):
|
|||
|
loss = 0.1234 - epoch * 0.01
|
|||
|
print(f"📊 Epoch {epoch}/3, 训练损失: {loss:.4f}, 测试损失: {loss+0.01:.4f}")
|
|||
|
|
|||
|
print(f"✅ 训练完成!")
|
|||
|
print(f"📈 训练指标: {{'mse': 0.0123, 'rmse': 0.1107, 'r2': 0.95}}")
|
|||
|
print(f"💾 模型保存路径: saved_models/transformer/P001_v1.0.pth")
|
|||
|
print(f"✔️ 任务状态更新: 已完成")
|
|||
|
|
|||
|
print("\n" + "=" * 60)
|
|||
|
print("🎉 控制台编码测试完成")
|
|||
|
print("💡 如果上述中文和表情符号都能正确显示,说明编码配置成功")
|
|||
|
print("=" * 60)
|
|||
|
|
|||
|
def test_direct_trainer():
|
|||
|
"""直接测试训练器"""
|
|||
|
|
|||
|
print("\n" + "=" * 60)
|
|||
|
print("🔧 直接训练器测试")
|
|||
|
print("=" * 60)
|
|||
|
|
|||
|
try:
|
|||
|
# 导入预测器
|
|||
|
print("📦 导入预测器模块...")
|
|||
|
from core.predictor import PharmacyPredictor
|
|||
|
|
|||
|
print("✅ 预测器导入成功")
|
|||
|
|
|||
|
# 创建实例
|
|||
|
predictor = PharmacyPredictor()
|
|||
|
|
|||
|
if predictor.data is not None:
|
|||
|
print(f"📊 数据加载成功,行数: {len(predictor.data)}")
|
|||
|
|
|||
|
# 获取产品列表
|
|||
|
products = predictor.data['product_id'].unique()
|
|||
|
print(f"🎯 可用产品: {list(products[:3])}...") # 只显示前3个
|
|||
|
|
|||
|
# 选择产品进行快速测试
|
|||
|
test_product = products[0]
|
|||
|
print(f"\n🚀 开始训练测试 - 产品: {test_product}")
|
|||
|
print("=" * 40)
|
|||
|
|
|||
|
# 调用训练(少量轮次)
|
|||
|
metrics = predictor.train_model(
|
|||
|
product_id=test_product,
|
|||
|
model_type='transformer',
|
|||
|
epochs=1, # 只训练1轮快速测试
|
|||
|
training_mode='product'
|
|||
|
)
|
|||
|
|
|||
|
print("=" * 40)
|
|||
|
if metrics:
|
|||
|
print("✅ 训练成功完成")
|
|||
|
print(f"📊 返回指标: {metrics}")
|
|||
|
else:
|
|||
|
print("⚠️ 训练返回None,可能是数据不足")
|
|||
|
|
|||
|
else:
|
|||
|
print("❌ 数据加载失败")
|
|||
|
|
|||
|
except Exception as e:
|
|||
|
print(f"❌ 训练测试失败: {e}")
|
|||
|
# 不打印完整traceback,只显示错误信息
|
|||
|
|
|||
|
print("\n" + "=" * 60)
|
|||
|
print("🎯 重点观察:")
|
|||
|
print("1. 控制台是否显示完整的训练过程日志")
|
|||
|
print("2. 中文和表情符号是否正确显示")
|
|||
|
print("3. 训练进度是否实时输出")
|
|||
|
print("=" * 60)
|
|||
|
|
|||
|
if __name__ == "__main__":
|
|||
|
# 先测试基本输出
|
|||
|
test_console_output()
|
|||
|
|
|||
|
# 再测试实际训练
|
|||
|
test_direct_trainer()
|