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

网站服务器的DNs怎么查公司建官网找谁弄

网站服务器的DNs怎么查,公司建官网找谁弄,公司网站建设原则,网站建设北京贵目录 前言 1.导入数据及数据可视化 2.构建模型 3.训练模型 4.模型分析并生成指定图像 总结 前言 #x1f368; 本文为#x1f517;365天深度学习训练营中的学习记录博客#x1f356; 原作者#xff1a;K同学啊 1.导入数据及数据可视化 from torchvision import data… 目录 前言 1.导入数据及数据可视化 2.构建模型 3.训练模型 4.模型分析并生成指定图像 总结 前言 本文为365天深度学习训练营中的学习记录博客 原作者K同学啊 1.导入数据及数据可视化 from torchvision import datasets, transforms from torch.autograd import Variable from torchvision.utils import save_image, make_grid from torchsummary import summary import matplotlib.pyplot as plt import numpy as np import torch.nn as nn import torch.optim as optim import torchdevice torch.device(cuda if torch.cuda.is_available() else cpu) devicebatch_size 128train_transform transforms.Compose([transforms.Resize(128),transforms.ToTensor(),transforms.Normalize([0.5,0.5,0.5], [0.5,0.5,0.5])])train_dataset datasets.ImageFolder(rootdata/data/rps/, transformtrain_transform)train_loader torch.utils.data.DataLoader(datasettrain_dataset, batch_sizebatch_size, shuffleTrue,num_workers6)# 可视化第一个 batch 的数据 def show_images(dl):for images, _ in dl:fig, ax plt.subplots(figsize(10, 10))ax.set_xticks([]); ax.set_yticks([])ax.imshow(make_grid(images.detach(), nrow16).permute(1, 2, 0))breakshow_images(train_loader) 2.构建模型 latent_dim 100 n_classes 3 embedding_dim 100# 自定义权重初始化函数用于初始化生成器和判别器的权重 def weights_init(m):# 获取当前层的类名classname m.__class__.__name__# 如果当前层是卷积层类名中包含 Conv if classname.find(Conv) ! -1:# 使用正态分布随机初始化权重均值为0标准差为0.02torch.nn.init.normal_(m.weight, 0.0, 0.02)# 如果当前层是批归一化层类名中包含 BatchNorm elif classname.find(BatchNorm) ! -1:# 使用正态分布随机初始化权重均值为1标准差为0.02torch.nn.init.normal_(m.weight, 1.0, 0.02)# 将偏置项初始化为全零torch.nn.init.zeros_(m.bias)class Generator(nn.Module):def __init__(self):super(Generator, self).__init__()# 定义条件标签的生成器部分用于将标签映射到嵌入空间中# n_classes条件标签的总数# embedding_dim嵌入空间的维度self.label_conditioned_generator nn.Sequential(nn.Embedding(n_classes, embedding_dim), # 使用Embedding层将条件标签映射为稠密向量nn.Linear(embedding_dim, 16) # 使用线性层将稠密向量转换为更高维度)# 定义潜在向量的生成器部分用于将噪声向量映射到图像空间中# latent_dim潜在向量的维度self.latent nn.Sequential(nn.Linear(latent_dim, 4*4*512), # 使用线性层将潜在向量转换为更高维度nn.LeakyReLU(0.2, inplaceTrue) # 使用LeakyReLU激活函数进行非线性映射)# 定义生成器的主要结构将条件标签和潜在向量合并成生成的图像self.model nn.Sequential(# 反卷积层1将合并后的向量映射为64x8x8的特征图nn.ConvTranspose2d(513, 64*8, 4, 2, 1, biasFalse),nn.BatchNorm2d(64*8, momentum0.1, eps0.8), # 批标准化nn.ReLU(True), # ReLU激活函数# 反卷积层2将64x8x8的特征图映射为64x4x4的特征图nn.ConvTranspose2d(64*8, 64*4, 4, 2, 1, biasFalse),nn.BatchNorm2d(64*4, momentum0.1, eps0.8),nn.ReLU(True),# 反卷积层3将64x4x4的特征图映射为64x2x2的特征图nn.ConvTranspose2d(64*4, 64*2, 4, 2, 1, biasFalse),nn.BatchNorm2d(64*2, momentum0.1, eps0.8),nn.ReLU(True),# 反卷积层4将64x2x2的特征图映射为64x1x1的特征图nn.ConvTranspose2d(64*2, 64*1, 4, 2, 1, biasFalse),nn.BatchNorm2d(64*1, momentum0.1, eps0.8),nn.ReLU(True),# 反卷积层5将64x1x1的特征图映射为3x64x64的RGB图像nn.ConvTranspose2d(64*1, 3, 4, 2, 1, biasFalse),nn.Tanh() # 使用Tanh激活函数将生成的图像像素值映射到[-1, 1]范围内)def forward(self, inputs):noise_vector, label inputs# 通过条件标签生成器将标签映射为嵌入向量label_output self.label_conditioned_generator(label)# 将嵌入向量的形状变为batch_size, 1, 4, 4以便与潜在向量进行合并label_output label_output.view(-1, 1, 4, 4)# 通过潜在向量生成器将噪声向量映射为潜在向量latent_output self.latent(noise_vector)# 将潜在向量的形状变为batch_size, 512, 4, 4以便与条件标签进行合并latent_output latent_output.view(-1, 512, 4, 4)# 将条件标签和潜在向量在通道维度上进行合并得到合并后的特征图concat torch.cat((latent_output, label_output), dim1)# 通过生成器的主要结构将合并后的特征图生成为RGB图像image self.model(concat)return image generator Generator().to(device) generator.apply(weights_init) print(generator)from torchinfo import summarysummary(generator)a torch.ones(100) b torch.ones(1) b b.long() a a.to(device) b b.to(device)import torch import torch.nn as nnclass Discriminator(nn.Module):def __init__(self):super(Discriminator, self).__init__()# 定义一个条件标签的嵌入层用于将类别标签转换为特征向量self.label_condition_disc nn.Sequential(nn.Embedding(n_classes, embedding_dim), # 嵌入层将类别标签编码为固定长度的向量nn.Linear(embedding_dim, 3*128*128) # 线性层将嵌入的向量转换为与图像尺寸相匹配的特征张量)# 定义主要的鉴别器模型self.model nn.Sequential(nn.Conv2d(6, 64, 4, 2, 1, biasFalse), # 输入通道为6包含图像和标签的通道数输出通道为644x4的卷积核步长为2padding为1nn.LeakyReLU(0.2, inplaceTrue), # LeakyReLU激活函数带有负斜率增加模型对输入中的负值的感知能力nn.Conv2d(64, 64*2, 4, 3, 2, biasFalse), # 输入通道为64输出通道为64*24x4的卷积核步长为3padding为2nn.BatchNorm2d(64*2, momentum0.1, eps0.8), # 批量归一化层有利于训练稳定性和收敛速度nn.LeakyReLU(0.2, inplaceTrue),nn.Conv2d(64*2, 64*4, 4, 3, 2, biasFalse), # 输入通道为64*2输出通道为64*44x4的卷积核步长为3padding为2nn.BatchNorm2d(64*4, momentum0.1, eps0.8),nn.LeakyReLU(0.2, inplaceTrue),nn.Conv2d(64*4, 64*8, 4, 3, 2, biasFalse), # 输入通道为64*4输出通道为64*84x4的卷积核步长为3padding为2nn.BatchNorm2d(64*8, momentum0.1, eps0.8),nn.LeakyReLU(0.2, inplaceTrue),nn.Flatten(), # 将特征图展平为一维向量用于后续全连接层处理nn.Dropout(0.4), # 随机失活层用于减少过拟合风险nn.Linear(4608, 1), # 全连接层将特征向量映射到输出维度为1的向量nn.Sigmoid() # Sigmoid激活函数用于输出范围限制在0到1之间的概率值)def forward(self, inputs):img, label inputs# 将类别标签转换为特征向量label_output self.label_condition_disc(label)# 重塑特征向量为与图像尺寸相匹配的特征张量label_output label_output.view(-1, 3, 128, 128)# 将图像特征和标签特征拼接在一起作为鉴别器的输入concat torch.cat((img, label_output), dim1)# 将拼接后的输入通过鉴别器模型进行前向传播得到输出结果output self.model(concat)return outputdiscriminator Discriminator().to(device) discriminator.apply(weights_init) print(discriminator)summary(discriminator)a torch.ones(2,3,128,128) b torch.ones(2,1) b b.long() a a.to(device) b b.to(device)c discriminator((a,b)) c.size() 3.训练模型 adversarial_loss nn.BCELoss() def generator_loss(fake_output, label):gen_loss adversarial_loss(fake_output, label)return gen_lossdef discriminator_loss(output, label):disc_loss adversarial_loss(output, label)return disc_losslearning_rate 0.0002G_optimizer optim.Adam(generator.parameters(), lr learning_rate, betas(0.5, 0.999)) D_optimizer optim.Adam(discriminator.parameters(), lr learning_rate, betas(0.5, 0.999))# 设置训练的总轮数 num_epochs 300 # 初始化用于存储每轮训练中判别器和生成器损失的列表 D_loss_plot, G_loss_plot [], []# 循环进行训练 for epoch in range(1, num_epochs 1):# 初始化每轮训练中判别器和生成器损失的临时列表D_loss_list, G_loss_list [], []# 遍历训练数据加载器中的数据for index, (real_images, labels) in enumerate(train_loader):# 清空判别器的梯度缓存D_optimizer.zero_grad()# 将真实图像数据和标签转移到GPU如果可用real_images real_images.to(device)labels labels.to(device)# 将标签的形状从一维向量转换为二维张量用于后续计算labels labels.unsqueeze(1).long()# 创建真实目标和虚假目标的张量用于判别器损失函数real_target Variable(torch.ones(real_images.size(0), 1).to(device))fake_target Variable(torch.zeros(real_images.size(0), 1).to(device))# 计算判别器对真实图像的损失D_real_loss discriminator_loss(discriminator((real_images, labels)), real_target)# 从噪声向量中生成假图像生成器的输入noise_vector torch.randn(real_images.size(0), latent_dim, devicedevice)noise_vector noise_vector.to(device)generated_image generator((noise_vector, labels))# 计算判别器对假图像的损失注意detach()函数用于分离生成器梯度计算图output discriminator((generated_image.detach(), labels))D_fake_loss discriminator_loss(output, fake_target)# 计算判别器总体损失真实图像损失和假图像损失的平均值D_total_loss (D_real_loss D_fake_loss) / 2D_loss_list.append(D_total_loss.item())# 反向传播更新判别器的参数D_total_loss.backward()D_optimizer.step()# 清空生成器的梯度缓存G_optimizer.zero_grad()# 计算生成器的损失G_loss generator_loss(discriminator((generated_image, labels)), real_target)G_loss_list.append(G_loss.item())# 反向传播更新生成器的参数G_loss.backward()G_optimizer.step()# 打印当前轮次的判别器和生成器的平均损失print(Epoch: [%d/%d]: D_loss: %.3f, G_loss: %.3f % ((epoch), num_epochs, torch.mean(torch.FloatTensor(D_loss_list)), torch.mean(torch.FloatTensor(G_loss_list))))# 将当前轮次的判别器和生成器的平均损失保存到列表中D_loss_plot.append(torch.mean(torch.FloatTensor(D_loss_list)))G_loss_plot.append(torch.mean(torch.FloatTensor(G_loss_list)))if epoch%10 0:# 将生成的假图像保存为图片文件save_image(generated_image.data[:50], ./images/sample_%d % epoch .png, nrow5, normalizeTrue)# 将当前轮次的生成器和判别器的权重保存到文件torch.save(generator.state_dict(), ./training_weights/generator_epoch_%d.pth % (epoch))torch.save(discriminator.state_dict(), ./training_weights/discriminator_epoch_%d.pth % (epoch)) 4.模型分析并生成指定图像 G_loss_list [i.item() for i in G_loss_plot] D_loss_list [i.item() for i in D_loss_plot]import matplotlib.pyplot as plt #隐藏警告 import warnings warnings.filterwarnings(ignore) #忽略警告信息 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号 plt.rcParams[figure.dpi] 100 #分辨率plt.figure(figsize(8,4)) plt.title(Generator and Discriminator Loss During Training) plt.plot(G_loss_list,labelG) plt.plot(D_loss_list,labelD) plt.xlabel(iterations) plt.ylabel(Loss) plt.legend() plt.show()# 导入所需的库 from numpy.random import randint, randn from numpy import linspace from matplotlib import pyplot, gridspec# 导入生成器模型 generator.load_state_dict(torch.load(./training_weights/generator_epoch_300.pth), strictFalse) generator.eval() interpolated randn(100) # 生成两个潜在空间的点 # 将数据转换为torch张量并将其移至GPU假设device已正确声明为GPU interpolated torch.tensor(interpolated).to(device).type(torch.float32)label 0 # 手势标签可在0,1,2之间选择 labels torch.ones(1) * label labels labels.to(device).unsqueeze(1).long()# 使用生成器生成插值结果 predictions generator((interpolated, labels)) predictions predictions.permute(0,2,3,1).detach().cpu()#隐藏警告 import warnings warnings.filterwarnings(ignore) #忽略警告信息 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号 plt.rcParams[figure.dpi] 100 #分辨率plt.figure(figsize(8, 3))pred (predictions[0, :, :, :] 1 ) * 127.5 pred np.array(pred) plt.imshow(pred.astype(np.uint8)) plt.show() 总结 在本次实验中我们完成了数据准备、模型构建、训练与结果分析的完整流程。 数据准备方面采用 torchvision.datasets.ImageFolder 从自定义文件夹中加载图像数据并依次进行缩放、张量化和归一化等预处理操作。为了直观了解输入情况利用 show_images 函数展示了训练集中首个批次的图像这有助于确认数据管道是否正常。 模型设计部分包括生成器和判别器两个核心模块。生成器接收潜在向量与类别标签作为输入其中类别标签先经过嵌入层映射为特征向量再与潜在向量结合经由多层反卷积逐步生成目标图像。判别器则接收图像和类别标签作为输入将标签转化为特征图并与图像拼接随后通过多层卷积进行特征提取最终输出一个标量用于判别真伪。此外使用自定义的 weights_init 方法对模型参数进行初始化保证了训练的稳定性。 在训练过程中损失函数选择了二元交叉熵BCELoss优化器采用 Adam对生成器与判别器分别进行参数更新。具体流程为在每个 epoch 内判别器和生成器交替更新对于每个 batch先更新判别器使其更好地区分真实与伪造图像再更新生成器使其生成的结果更具迷惑性。训练过程中每隔 10 个 epoch 保存生成样本和模型权重方便后续分析与复现。 结果分析环节通过记录生成器和判别器的损失曲线可以直观反映训练进展和收敛趋势。随着对抗博弈的进行生成器不断提高欺骗判别器的能力而判别器也在努力提升辨别水平二者的竞争推动了模型整体性能的提升。
http://www.pierceye.com/news/257543/

相关文章:

  • 在哪里找做网站的北京的招聘网站有哪些
  • 做旅行网站aspx网站开发
  • 网站接入服务器商查询wordpress更换端口
  • 网站网页设计师武义县网站建设
  • 中铁建设集团有限公司官网建站到网站收录到优化
  • 做seo网站要多少钱网页设计师好吗
  • 建设部网站 绿色建筑评价表哪里页面设计培训好
  • 西部数码网站源码虹桥做网站公司
  • 生鲜网站开发wordpress mysql 链接
  • 做网站是怎么挣钱的网站建设福永附近网络公司
  • 关于网站制作的评价.net网站制作综合实训报告
  • 合肥专业制作网站科技创新绘画作品图片
  • 站内推广的主要目的是商业空间设计心得体会
  • 网站建设丨金手指15phpcms建设网站
  • 怎么网上推广自己的产品郑州seo优化外包顾问阿亮
  • 灵台门户网站建设网站开发费用会计分录
  • wordpress替换公共js北京seo推广服务
  • 公司付的网站费怎么做分录黑色网站配色
  • 体育门户网站源码峰峰做网站
  • 山西网站建设多少钱电商网站建设需要
  • 海西电子商务网站建设wordpress 主题宽度
  • 网站建设首选公司wordpress需要mysql
  • 织梦 旅游网站模板深圳公司招牌制作
  • PHP网站开发如何建立vipwordpress页面伪静态
  • 主题公园旅游景区网站建设网站后台图片模板
  • 慈溪网站建设慈溪WordPress点击文章显示404
  • 网站建设与seo网站开发项目总结范文
  • 做竞彩网站代理犯法么建站公司 网站
  • 浙江建设证书查询seo服务公司深圳
  • 长沙协会网站设计专业服务医疗信息化软件公司排名