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

建设网站哪个公司好我们的社区手机在线观看

建设网站哪个公司好,我们的社区手机在线观看,河南网站建设首选公司,制作网站难不难文章目录 前言一、完整代码二、修改成自己的数据集总结 前言 胶囊网络的概念可以先行搜索。 一、完整代码 import torch import torch.nn.functional as F from torch import nn from torchvision import transforms, datasets from torch.optim import Adam from torch.util…

文章目录

  • 前言
  • 一、完整代码
  • 二、修改成自己的数据集
  • 总结


前言

胶囊网络的概念可以先行搜索。


一、完整代码

import torch
import torch.nn.functional as F
from torch import nn
from torchvision import transforms, datasets
from torch.optim import Adam
from torch.utils.data import DataLoader# 定义胶囊网络中的胶囊层
class CapsuleLayer(nn.Module):def __init__(self, num_capsules, num_route_nodes, in_channels, out_channels, kernel_size=None, stride=None,num_iterations=3):super(CapsuleLayer, self).__init__()self.num_route_nodes = num_route_nodesself.num_iterations = num_iterationsself.num_capsules = num_capsulesif num_route_nodes != -1:self.route_weights = nn.Parameter(torch.randn(num_capsules, num_route_nodes, in_channels, out_channels))else:self.capsules = nn.ModuleList([nn.Conv2d(in_channels, out_channels, kernel_size=kernel_size, stride=stride, padding=0)for _ in range(num_capsules)])def squash(self, tensor, dim=-1):squared_norm = (tensor ** 2).sum(dim=dim, keepdim=True)scale = squared_norm / (1 + squared_norm)return scale * tensor / torch.sqrt(squared_norm)def forward(self, x):if self.num_route_nodes != -1:priors = x[None, :, :, None, :] @ self.route_weights[:, None, :, :, :]logits = torch.zeros(*priors.size()).to(x.device)for i in range(self.num_iterations):probs = F.softmax(logits, dim=2)outputs = self.squash((probs * priors).sum(dim=2, keepdim=True))if i != self.num_iterations - 1:delta_logits = (priors * outputs).sum(dim=-1, keepdim=True)logits = logits + delta_logitselse:outputs = [capsule(x).view(x.size(0), -1, 1) for capsule in self.capsules]outputs = torch.cat(outputs, dim=-2)outputs = self.squash(outputs)return outputs# 定义整个胶囊网络模型
class CapsuleNet(nn.Module):def __init__(self):super(CapsuleNet, self).__init__()self.conv1 = nn.Conv2d(in_channels=1, out_channels=256, kernel_size=9, stride=1)self.primary_capsules = CapsuleLayer(num_capsules=8, num_route_nodes=-1, in_channels=256, out_channels=32,kernel_size=9, stride=2)self.digit_capsules = CapsuleLayer(num_capsules=10, num_route_nodes=32 * 6 * 6, in_channels=8,out_channels=16)def forward(self, x):x = F.relu(self.conv1(x), inplace=True)x = self.primary_capsules(x)x = self.digit_capsules(x).squeeze().transpose(0, 1)x = (x ** 2).sum(dim=-1) ** 0.5return x# 训练和评估
def train(model, train_loader, optimizer, epoch):model.train()for batch_idx, (data, target) in enumerate(train_loader):data, target = data.to(device), target.to(device)optimizer.zero_grad()output = model(data)loss = F.cross_entropy(output, target)loss.backward()optimizer.step()if batch_idx % 10 == 0:print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item()))def test(model, test_loader):model.eval()test_loss = 0correct = 0with torch.no_grad():for data, target in test_loader:data, target = data.to(device), target.to(device)output = model(data)test_loss += F.cross_entropy(output, target, reduction='sum').item()pred = output.argmax(dim=1, keepdim=True)correct += pred.eq(target.view_as(pred)).sum().item()test_loss /= len(test_loader.dataset)print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(test_loss, correct, len(test_loader.dataset),100. * correct / len(test_loader.dataset)))# 数据加载和预处理
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,), (0.3081,))
])train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
test_dataset = datasets.MNIST(root='./data', train=False, transform=transform)train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=True)# 设置设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")# 初始化模型和优化器
model = CapsuleNet().to(device)
optimizer = Adam(model.parameters())# 训练和测试模型
num_epochs = 10
for epoch in range(num_epochs):train(model, train_loader, optimizer, epoch)test(model, test_loader)

二、修改成自己的数据集

以下几个位置是需要修改的。


# 数据加载和预处理
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,), (0.3081,))
])train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
test_dataset = datasets.MNIST(root='./data', train=False, transform=transform)train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=True)

这些位置要根据数据集实际情况修改。主要是如果分辨率修改了,那么下面的也要跟着修改。

self.conv1 = nn.Conv2d(in_channels=1, out_channels=256, kernel_size=9, stride=1)
self.primary_capsules = CapsuleLayer(num_capsules=8, num_route_nodes=-1, in_channels=256, out_channels=32, kernel_size=9, stride=2)
self.digit_capsules = CapsuleLayer(num_capsules=10, num_route_nodes=32 * 6 * 6, in_channels=8,out_channels=16)

修改这3行代码很容易报错。要理解了以后修改。


总结

多试试。

http://www.yayakq.cn/news/921258/

相关文章:

  • 网站开发属于什么岗位p2p网站建设 上海
  • 热烈祝贺公司网站上线深圳网上推广怎么做
  • 微信公众号微网站开发类型广州番禺发布网
  • dw织梦做网站手机网站制作代理
  • 外贸网站的域名阿里买域名 电脑做网站
  • wordpress如何换域名襄阳网站seo技巧
  • 网站推广方案策划专业购物网站建设价格
  • dw设计一个简单网站网站开发需要懂多少代码
  • 重庆网站制作教程余姚网站建设的公司
  • 山东网站备案公司吗网页设计源代码
  • 临沂网站优化如何软文营销的概念是什么
  • 如何在路由器上做网站转跳网站定制开发收费标准是多少
  • 网站运营技术性高吗火蝠电商合作需要多少钱
  • 东莞做网站seo设计网站哪个好用
  • 免费代理做企业网站建筑公司的名字怎么取才好
  • 深圳好的网站建设公司哪家好企业网站跟微信支付怎么做
  • 长春网站建设技术托管app开发公司费用
  • 长春品牌网站建设公司房产网站系统哪个好
  • 苍南住房和城乡规划建设局网站深圳 网站设计师 招聘
  • 房屋租赁网站开发需求分析网站设计分析
  • 网站搭建免费软件x wordpress theme
  • 电影下载网站模板淘宝联盟填网站备案
  • 九龙坡网站建设哪家好wordpress主题识别
  • 哪个网站做二手叉车回收好手机优化助手怎么样
  • 做淘宝客网站详细步骤织梦网站字体
  • 台州seo网站管理服饰类网站模板
  • 做网站用什么格式的图片招标网站建设申请报告
  • 红酒 专业 网站建设济南网站建设tailook
  • 网站栏目相关内容在哪采集啊wordpress怎么博客排版
  • 如何选择网站公司wordpress禁用更新