当前位置: 首页 > wzjs >正文

如何建设一个属于自己的网站广西新闻最新消息今天

如何建设一个属于自己的网站,广西新闻最新消息今天,网站开发详细设计模板,百度搜索风云榜人物知识点回顾: PyTorch和cuda的安装查看显卡信息的命令行命令(cmd中使用)cuda的检查简单神经网络的流程 数据预处理(归一化、转换成张量)模型的定义 继承nn.Module类定义每一个层定义前向传播流程 定义损失函数和优化器定…

知识点回顾:

  1. PyTorch和cuda的安装
  2. 查看显卡信息的命令行命令(cmd中使用)
  3. cuda的检查
  4. 简单神经网络的流程
    1. 数据预处理(归一化、转换成张量)
    2. 模型的定义
      1. 继承nn.Module类
      2. 定义每一个层
      3. 定义前向传播流程
    3. 定义损失函数和优化器
    4. 定义训练流程
    5. 可视化loss过程
    6. # test_pytorch.py
      import torch# 检查导入是否成功
      print(f"PyTorch版本: {torch.__version__}")
      print(f"CUDA可用: {torch.cuda.is_available()}")# 设置随机种子
      torch.manual_seed(42)# 创建一个张量测试
      x = torch.randn(5, 5)
      print(f"随机张量:\n{x}")
      import torch.nn as nn
      import torch.optim as optim
      from torch.utils.data import DataLoader, TensorDataset
      import numpy as np
      import matplotlib.pyplot as plt# 设置随机种子确保结果可复现
      torch.manual_seed(42)
      np.random.seed(42)# -------------------------
      # 1. 环境检查
      # -------------------------
      def check_environment():"""检查CUDA可用性并打印环境信息"""if torch.cuda.is_available():print(f"CUDA可用 - 设备: {torch.cuda.get_device_name(0)}")print(f"CUDA版本: {torch.version.cuda}")else:print("CUDA不可用,将使用CPU进行计算")print(f"PyTorch版本: {torch.__version__}")# -------------------------
      # 2. 数据预处理
      # -------------------------
      class DataPreprocessor:"""数据预处理类,支持回归和分类任务"""def __init__(self, task_type="regression"):"""task_type: 'regression' 或 'classification'"""self.task_type = task_typeself.x_mean, self.x_std = None, Noneself.y_mean, self.y_std = None, Nonedef preprocess(self, x, y):"""预处理数据并转换为张量"""# 特征归一化self.x_mean, self.x_std = x.mean(), x.std()x_normalized = (x - self.x_mean) / self.x_std# 根据任务类型处理标签if self.task_type == "regression":self.y_mean, self.y_std = y.mean(), y.std()y_normalized = (y - self.y_mean) / self.y_stdy_tensor = torch.tensor(y_normalized, dtype=torch.float32).view(-1, 1)else:  # 分类任务y_tensor = torch.tensor(y, dtype=torch.long)x_tensor = torch.tensor(x_normalized, dtype=torch.float32).view(-1, 1)return x_tensor, y_tensordef denormalize_prediction(self, pred):"""将预测结果反归一化(仅用于回归任务)"""if self.task_type == "regression":return pred * self.y_std + self.y_meanreturn pred# -------------------------
      # 3. 模型定义
      # -------------------------
      class SimpleNet(nn.Module):"""简单的两层神经网络"""def __init__(self, input_size=1, hidden_size=10, output_size=1):super(SimpleNet, self).__init__()self.fc1 = nn.Linear(input_size, hidden_size)self.relu = nn.ReLU()self.fc2 = nn.Linear(hidden_size, output_size)def forward(self, x):x = self.fc1(x)x = self.relu(x)x = self.fc2(x)return x# -------------------------
      # 4. 训练模块
      # -------------------------
      class Trainer:"""模型训练器"""def __init__(self, model, task_type="regression", lr=0.01):self.model = modelself.task_type = task_type# 根据任务类型选择损失函数self.criterion = nn.MSELoss() if task_type == "regression" else nn.CrossEntropyLoss()self.optimizer = optim.Adam(model.parameters(), lr=lr)self.train_losses = []def train(self, dataloader, num_epochs=100, print_every=10):"""训练模型并记录损失"""for epoch in range(num_epochs):epoch_loss = 0.0for inputs, targets in dataloader:# 前向传播outputs = self.model(inputs)loss = self.criterion(outputs, targets)# 反向传播和优化self.optimizer.zero_grad()loss.backward()self.optimizer.step()epoch_loss += loss.item()# 记录每个epoch的平均损失avg_loss = epoch_loss / len(dataloader)self.train_losses.append(avg_loss)if (epoch + 1) % print_every == 0:print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {avg_loss:.4f}')return self.train_lossesdef plot_loss(self):"""可视化训练损失"""plt.figure(figsize=(10, 6))plt.plot(range(1, len(self.train_losses) + 1), self.train_losses, label='Training Loss')plt.xlabel('Epoch')plt.ylabel('Loss')plt.title('Training Loss over Epochs')plt.legend()plt.grid(True)plt.show()# -------------------------
      # 5. 主函数
      # -------------------------
      def main():# 检查环境check_environment()# 生成示例数据task_type = "regression"  # 或 "classification"if task_type == "regression":# 回归任务数据x = np.linspace(0, 10, 100)y = 2 * x + 1 + np.random.randn(100) * 0.5  # y = 2x + 1 + 噪声else:# 分类任务数据x = np.linspace(0, 10, 100)y = (x > 5).astype(int)  # 二分类问题# 数据预处理preprocessor = DataPreprocessor(task_type)x_tensor, y_tensor = preprocessor.preprocess(x, y)# 创建数据加载器dataset = TensorDataset(x_tensor, y_tensor)dataloader = DataLoader(dataset, batch_size=16, shuffle=True)# 初始化模型if task_type == "regression":model = SimpleNet(input_size=1, output_size=1)else:model = SimpleNet(input_size=1, output_size=2)  # 二分类问题有2个类别# 训练模型trainer = Trainer(model, task_type=task_type, lr=0.01)losses = trainer.train(dataloader, num_epochs=100)# 可视化损失trainer.plot_loss()# 评估模型model.eval()with torch.no_grad():test_x = np.array([5.0])  # 测试输入test_x_normalized = (test_x - preprocessor.x_mean) / preprocessor.x_stdtest_tensor = torch.tensor(test_x_normalized, dtype=torch.float32).view(-1, 1)prediction = model(test_tensor)if task_type == "regression":# 反归一化回归预测结果prediction = preprocessor.denormalize_prediction(prediction.item())print(f"回归预测结果: {prediction:.4f}")print(f"真实值: {2*test_x[0] + 1:.4f}")  # 基于y=2x+1else:# 获取分类预测结果_, predicted = torch.max(prediction, 1)print(f"分类预测类别: {predicted.item()}")print(f"真实类别: {1 if test_x[0] > 5 else 0}")if __name__ == "__main__":main()    

http://www.dtcms.com/wzjs/535162.html

相关文章:

  • 电商网站建设技术员的工作职责wordpress 管理员标签
  • 网站做的好的医院企业网站seo维护
  • 网站怎么防止黑客攻击英文营销型网站建设
  • 网站的注册风铃网站具体是做那方面的
  • 山东网站建设排行榜wordpress 只在首页显示
  • 做网站公违法嘛工信部icp备案流程
  • 做网站展示软件做家教用什么网站
  • 哪里有做商城的网站wordpress 页面下载文件
  • 教育机构网站制作模板校园官方网站建设的书籍
  • 优质企业网站开发企业网站认证
  • 服装公司网站建设方案樱花12e56
  • 网站后端怎么做河南省新闻出版局
  • 建设网站关键词怎么写宿州城乡建设局网站
  • 电商网站费用中国还有哪些做外贸的网站
  • 莱州环球网站建设新乡网站开发的公司
  • 国外推广网站wordpress 类似divi的
  • 网站建设和网站设计区别网页文件模板下载
  • 太原做网站的工作室wordpress搜索设置
  • 网站制作软件手机版下载做网站导航多大字号
  • 公关公司职级求职seo推荐
  • 建设热电偶网站山西正规网站建设报价公司
  • 臭臭猫网站建设福州网站建设哪家专业
  • 在凡科上做的网站无法加载出来工商局网站开发费用
  • 建设网贷网站网页排版软件
  • 网站内链分析中装建设股票有潜力吗
  • 网站的icp备案信息网站对企业的重要性
  • 用vue element-ui做的网站上海市工程建设检测网
  • 呼市赛罕区信息网站做一顿饭工作一站式做网站多少钱
  • 温州建设诚信网站服装代销的网站源码
  • 西安双语网站建设邗江建设局网站