# AI的NLP学习/embedding/tensorboard



import torch

import torch.nn as nn

from torch.utils.tensorboard import SummaryWriter

import jieba

import os

import shutil

===================== 加载自定义词表,确保人名完整分词 =====================

jieba_tokenizer = jieba.Tokenizer()

custom_words = "龙文浩", "张三", "李四", "王五", "工程师", "学生", "教师", "医生"

for word in custom_words:

jieba_tokenizer.add_word(word)

构建语料 + 词表

def build_vocab():

texts = [

"龙文浩是工程师",

"张三是学生",

"李四是教师",

"王五是医生"

]

words = \[\]

for text in texts:

words += jieba_tokenizer.lcut(text)

vocab = sorted(list(set(words)))

word2idx = {w: i for i, w in enumerate(vocab)}

print("词表:", word2idx)

return vocab, word2idx

===================== 构建简单 Embedding 模型 =====================

class EmbeddingModel(nn.Module):

def init (self, vocab_size, embed_dim=10):

super().init ()

self.embedding = nn.Embedding(vocab_size, embed_dim)

def forward(self, x):

return self.embedding(x)

===================== 主函数:训练 + TensorBoard 可视化 =====================

if name == 'main ':

vocab, word2idx = build_vocab()

vocab_size = len(vocab)

复制代码
model = EmbeddingModel(vocab_size, embed_dim=10)
word_indices = torch.tensor(list(word2idx.values()), dtype=torch.long)

with torch.no_grad():
    embeddings = model.embedding(word_indices)

# ===================== 设置根目录 =====================
# 统一使用绝对路径,避免相对路径歧义
log_dir = os.path.abspath(r"runs\embedding_visual")
# 强制清空旧日志,避免缓存/编码问题
if os.path.exists(log_dir):
    shutil.rmtree(log_dir)
os.makedirs(log_dir, exist_ok=True)

# ===================== 写入TensorBoard(简化目录,消除嵌套) =====================
writer = SummaryWriter(log_dir)
# 移除tag参数,避免生成嵌套目录;不指定global_step,简化目录结构
writer.add_embedding(
    mat=embeddings,
    metadata=vocab
)
writer.close()

print("\n✅ TensorBoard 文件已保存到", log_dir)
print("🚀 启动命令(复制直接执行,PowerShell/CMD通用):")
print(f"tensorboard --logdir={log_dir} --host=127.0.0.1 --port=6006")
print("🌐 浏览器访问:http://127.0.0.1:6006,点击 PROJECTOR 标签查看词向量可视化")
相关推荐
拆房老料1 小时前
【第四部分:Agentic 智能体设计模式】16. 一个 Prompt 搞不定复杂任务?试试 Prompt Chaining
java·前端·人工智能·设计模式·prompt
运维行者_2 小时前
应用性能监控怎么选?从调用链到用户体验的五个能力维度
运维·服务器·数据库·人工智能·mysql·性能优化·应用性能监控
张张123y2 小时前
后端第十四课:Agent 记忆系统(让 Agent 记住上下文和用户,跨会话不健忘)
java·大数据·人工智能·python·agent·记忆
国科安芯6 小时前
四重证据,一条逻辑链:商业航天级微控制器MCU抗辐射验证方法学综述——以国科安芯AS32S601为例
人工智能·单片机·嵌入式硬件·mcu·安全·抗辐射
dk_tjy6 小时前
AI驱动的自动化攻击背景下:企业端点安全体系的技术架构与建设路径
网络·人工智能·安全·自动化·终端安全管理·数据防泄漏
dadaobusi6 小时前
学习: PCIe 6.0 的 L0p
学习
布吉岛的石头6 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
2601_965454237 小时前
用AI把开源项目功能清单做成MG动画介绍视频
人工智能·开源·音视频
风雅GW7 小时前
局域网访问为何少一半配置页:DSH 的安全边界设计复盘
人工智能
衡石科技7 小时前
同一句业务问题,怎样持续问对数?衡石 ChatBI 的语义准备与回归验证
人工智能·数据挖掘·回归·chatbi