在网格搜索中加入了可视化,但是训练脚本好像给改错了。
This commit is contained in:
@@ -46,6 +46,10 @@ logger = logging.getLogger(__name__)
|
||||
's': [56.0, 60.0, 64.0, 68.0], # scale参数
|
||||
'm': [0.32, 0.35, 0.38, 0.40], # margin参数
|
||||
},
|
||||
'whole_ingredient': {
|
||||
's': [56.0, 60.0, 64.0, 68.0, 72.0],
|
||||
'm': [0.32, 0.35, 0.38, 0.40, 0.45],
|
||||
},
|
||||
"""
|
||||
GRID_PARAMS = {
|
||||
'dish': {
|
||||
@@ -53,8 +57,8 @@ GRID_PARAMS = {
|
||||
'm': [0.32, 0.35, 0.38, 0.40,0.45,0.50], # margin参数
|
||||
},
|
||||
'whole_ingredient': {
|
||||
's': [56.0, 60.0, 64.0, 68.0, 72.0],
|
||||
'm': [0.32, 0.35, 0.38, 0.40, 0.45],
|
||||
's': [56.0, 60.0 ,64.0, 68.0],
|
||||
'm': [0.32, 0.35, 0.38, 0.40],
|
||||
},
|
||||
'processed_ingredient': {
|
||||
's': [56.0, 60.0, 64.0, 68.0],
|
||||
|
||||
@@ -411,6 +411,53 @@ def main(task_key: str = 'dish', s: Optional[float] = None, m: Optional[float] =
|
||||
logger.info(f' 最佳验证损失: {best_val_loss:.4f}')
|
||||
logger.info(f' 最佳验证准确率: {best_val_acc:.2f}%')
|
||||
logger.info('=' * 60)
|
||||
|
||||
# ===== 生成特征向量可视化 =====
|
||||
logger.info('🎨 开始生成特征向量可视化...')
|
||||
try:
|
||||
# 动态导入函数(避免影响其他部分)
|
||||
faiss_db_dir = os.path.join(settings.BASE_DIR, 'faiss_vector_db')
|
||||
if faiss_db_dir not in sys.path:
|
||||
sys.path.insert(0, faiss_db_dir)
|
||||
|
||||
from build_faiss_index import extract_embeddings_only
|
||||
from visualize_embeddings import visualize_embeddings_from_files
|
||||
|
||||
# 创建可视化输出目录
|
||||
vis_output_dir = os.path.join(save_dir, 'embeddings_visualization')
|
||||
|
||||
# 1. 提取特征向量
|
||||
logger.info(' 步骤1/2: 提取训练集特征向量...')
|
||||
extract_embeddings_only(
|
||||
model_path=best_model_path,
|
||||
train_dir=cfg.train_dir,
|
||||
output_dir=vis_output_dir,
|
||||
embedding_dim=cfg.embedding_dim,
|
||||
batch_size=cfg.batch_size
|
||||
)
|
||||
|
||||
# 2. 生成可视化(使用PCA方法,快速)
|
||||
logger.info(' 步骤2/2: 生成可视化图...')
|
||||
embeddings_json = os.path.join(vis_output_dir, 'embeddings.json')
|
||||
labels_json = os.path.join(vis_output_dir, 'labels.json')
|
||||
|
||||
visualize_embeddings_from_files(
|
||||
embeddings_path=embeddings_json,
|
||||
labels_path=labels_json,
|
||||
output_dir=vis_output_dir,
|
||||
method='pca', # 使用PCA方法(快速)
|
||||
max_points=None, # 训练集全量可视化
|
||||
seed=42
|
||||
)
|
||||
|
||||
logger.info(f'✓ 可视化完成,保存至: {vis_output_dir}')
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f'⚠ 可视化生成失败: {e}')
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
# ===== 可视化逻辑结束 =====
|
||||
|
||||
break
|
||||
else:
|
||||
logger.info(f'✓ 完成全部 {num_epochs} 轮训练(未触发早停)')
|
||||
|
||||
Reference in New Issue
Block a user