尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

用循环神经网络生成0^n 1^n形式的简单序列

用循环神经网络生成0^n 1^n形式的简单序列
📅 发布时间:2026/6/22 2:25:36

题目详细如下:

微信图片_20251211231041_46_13

源代码
import torch
import torch.nn as nn
import torch.optim as optim
import random#数据准备与预处理
def generate_data(num_samples, max_n=5):data = []for _ in range(num_samples):n = random.randint(1, max_n)seq = '0' * n + '1' * n data.append(seq)return datadef encode_seq(seq, max_len):encoded = [0 if c == '0' else 1 for c in seq]padded = encoded + [2] * (max_len - len(encoded))  #2为填充符return torch.tensor(padded, dtype=torch.long)max_n = 5
max_seq_len = 2 * max_n
train_data = generate_data(1000, max_n)#定义LSTM模型
class SeqGenerate(nn.Module):def __init__(self, vocab_size=3, embed_dim=8, hidden_dim=16):super().__init__()self.embedding = nn.Embedding(vocab_size, embed_dim)self.lstm = nn.LSTM(embed_dim, hidden_dim, batch_first=True)self.fc = nn.Linear(hidden_dim, vocab_size)def forward(self, x, hidden=None):# x形状:(batch_size, seq_len)x = self.embedding(x)x, hidden = self.lstm(x, hidden)logits = self.fc(x)return logits, hidden#训练模型
model = SeqGenerate()
criterion = nn.CrossEntropyLoss(ignore_index=2)
optimizer = optim.Adam(model.parameters(), lr=0.001)
#训练循环
epochs = 50
batch_size = 32
for epoch in range(epochs):total_loss = 0random.shuffle(train_data)for i in range(0, len(train_data), batch_size):batch = train_data[i: (i+batch_size)]inputs = [encode_seq(seq[:-1], max_seq_len-1) for seq in batch]labels = [encode_seq(seq[1:], max_seq_len-1) for seq in batch]inputs = torch.stack(inputs)labels = torch.stack(labels)optimizer.zero_grad()logits, _ = model(inputs)loss = criterion(logits.reshape(-1, 3), labels.reshape(-1))loss.backward()optimizer.step()total_loss += loss.item()if (epoch + 1) % 10 == 0:print(f"Epoch {epoch+1}, Loss:{total_loss / len(train_data):.4f}")#生成 0n 1n序列
def generate_seq(model, start_char='0', target_n=3):model.eval()seq = [start_char]hidden = Nonefor _ in range(target_n - 1):input_tensor = torch.tensor([[0]], dtype=torch.long)logits, hidden = model(input_tensor, hidden)next_char = torch.argmax(logits, dim=-1).item()seq.append('0' if next_char == 0 else '1')for _ in range(target_n):nput_tensor = torch.tensor([[1]], dtype=torch.long)logits, hidden = model(input_tensor, hidden)next_char = torch.argmax(logits, dim=-1).item()seq.append('0' if next_char == 0 else '1')return ''.join(seq)generate_seq = generate_seq(model, target_n=3)
print(f"生成的0^n 1^n序列:{generate_seq}")

输出结果:

屏幕截图 2025-12-11 230755

相关新闻

  • AcWing 846:树的重心 ← 链式前向星 or 邻接表
  • 251211
  • Python自然语言处理的未来:技术栈与开发范式

最新新闻

  • Display Driver Uninstaller:彻底解决显卡驱动冲突的终极免费工具
  • 1.1 大模型金融分类文本 提示词案例
  • 2026郑州漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • 抖店新店冷启动实操方案,新手起店逻辑 + 流量获取一站式教学 - 抖掌柜
  • Real-ESRGAN-GUI:5分钟让你的模糊图像焕然一新!双引擎AI超分工具完整实战指南
  • 抖店无货源售后全流程解决方案:一键同步厂家退货地址,规避售后处罚 - 抖掌柜

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号