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() |