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

网页出现网站维护开通网站需要什么手续

网页出现网站维护,开通网站需要什么手续,还有做网站的必要吗,阿里巴巴网站谁做的#x1f368; 本文为#x1f517;365天深度学习训练营中的学习记录博客#x1f356; 原作者#xff1a;K同学啊 我的环境 语言环境#xff1a;Python 3.8.12 编译器#xff1a;jupyter notebook 深度学习环境#xff1a;torch 1.12.0cu113 一、前期准备 1.设置GPU im… 本文为365天深度学习训练营中的学习记录博客 原作者K同学啊 我的环境 语言环境Python 3.8.12 编译器jupyter notebook 深度学习环境torch 1.12.0cu113 一、前期准备 1.设置GPU import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvision import transforms, datasets import os,PIL,pathlib,warningswarnings.filterwarnings(ignore) #忽略警告信息device torch.device(cuda if torch.cuda.is_available() else cpu) device device(typecuda) 2.导入数据 import os,PIL,random,pathlibdata_dir F:/jupyter lab/DL-100-days/datasets/Hollywood_stars_photos/ data_dir pathlib.Path(data_dir)data_paths list(data_dir.glob(*)) classeNames [str(path).split(\\)[5] for path in data_paths] classeNames [Angelina Jolie,Brad Pitt,Denzel Washington,Hugh Jackman,Jennifer Lawrence,Johnny Depp,Kate Winslet,Leonardo DiCaprio,Megan Fox,Natalie Portman,Nicole Kidman,Robert Downey Jr,Sandra Bullock,Scarlett Johansson,Tom Cruise,Tom Hanks,Will Smith] # 关于transforms.Compose的更多介绍可以参考https://blog.csdn.net/qq_38251616/article/details/124878863 train_transforms transforms.Compose([transforms.Resize([224, 224]), # 将输入图片resize成统一尺寸# transforms.RandomHorizontalFlip(), # 随机水平翻转transforms.ToTensor(), # 将PIL Image或numpy.ndarray转换为tensor并归一化到[0,1]之间transforms.Normalize( # 标准化处理--转换为标准正太分布高斯分布使模型更容易收敛mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) # 其中 mean[0.485,0.456,0.406]与std[0.229,0.224,0.225] 从数据集中随机抽样计算得到的。 ])total_data datasets.ImageFolder(F:/jupyter lab/DL-100-days/datasets/Hollywood_stars_photos/,transformtrain_transforms) total_data Dataset ImageFolderNumber of datapoints: 1800Root location: F:/jupyter lab/DL-100-days/datasets/Hollywood_stars_photos/StandardTransform Transform: Compose(Resize(size[224, 224], interpolationbilinear, max_sizeNone, antialiasNone)ToTensor()Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225])) total_data.class_to_idx {Angelina Jolie: 0,Brad Pitt: 1,Denzel Washington: 2,Hugh Jackman: 3,Jennifer Lawrence: 4,Johnny Depp: 5,Kate Winslet: 6,Leonardo DiCaprio: 7,Megan Fox: 8,Natalie Portman: 9,Nicole Kidman: 10,Robert Downey Jr: 11,Sandra Bullock: 12,Scarlett Johansson: 13,Tom Cruise: 14,Tom Hanks: 15,Will Smith: 16} 3.划分数据集  train_size int(0.8 * len(total_data)) test_size len(total_data) - train_size train_dataset, test_dataset torch.utils.data.random_split(total_data, [train_size, test_size]) train_dataset, test_dataset (torch.utils.data.dataset.Subset at 0x187391e5a60,torch.utils.data.dataset.Subset at 0x187391e5b20) batch_size 32train_dl torch.utils.data.DataLoader(train_dataset,batch_sizebatch_size,shuffleTrue,num_workers1) test_dl torch.utils.data.DataLoader(test_dataset,batch_sizebatch_size,shuffleTrue,num_workers1) for X, y in test_dl:print(Shape of X [N, C, H, W]: , X.shape)print(Shape of y: , y.shape, y.dtype)break Shape of X [N, C, H, W]: torch.Size([32, 3, 224, 224]) Shape of y: torch.Size([32]) torch.int64 二、调用官方的VGG16模型 from torchvision.models import vgg16device cuda if torch.cuda.is_available() else cpu print(Using {} device.format(device))# 加载预训练模型并且对模型进行微调 model vgg16(pretrained True).to(device) # 加载预训练的vgg16模型for param in model.parameters():param.requires_grad False # 冻结模型的参数这样子在训练的时候只训练最后一层的参数# 修改classifier模块的第6层即(6): Linear(in_features4096, out_features2, biasTrue) # 注意查看我们下方打印出来的模型 model.classifier._modules[6] nn.Linear(4096,len(classeNames)) # 修改vgg16模型中最后一层全连接层输出目标类别个数 model.to(device) model Using cuda device VGG((features): Sequential((0): Conv2d(3, 64, kernel_size(3, 3), stride(1, 1), padding(1, 1))(1): ReLU(inplaceTrue)(2): Conv2d(64, 64, kernel_size(3, 3), stride(1, 1), padding(1, 1))(3): ReLU(inplaceTrue)(4): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse)(5): Conv2d(64, 128, kernel_size(3, 3), stride(1, 1), padding(1, 1))(6): ReLU(inplaceTrue)(7): Conv2d(128, 128, kernel_size(3, 3), stride(1, 1), padding(1, 1))(8): ReLU(inplaceTrue)(9): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse)(10): Conv2d(128, 256, kernel_size(3, 3), stride(1, 1), padding(1, 1))(11): ReLU(inplaceTrue)(12): Conv2d(256, 256, kernel_size(3, 3), stride(1, 1), padding(1, 1))(13): ReLU(inplaceTrue)(14): Conv2d(256, 256, kernel_size(3, 3), stride(1, 1), padding(1, 1))(15): ReLU(inplaceTrue)(16): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse)(17): Conv2d(256, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(18): ReLU(inplaceTrue)(19): Conv2d(512, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(20): ReLU(inplaceTrue)(21): Conv2d(512, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(22): ReLU(inplaceTrue)(23): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse)(24): Conv2d(512, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(25): ReLU(inplaceTrue)(26): Conv2d(512, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(27): ReLU(inplaceTrue)(28): Conv2d(512, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(29): ReLU(inplaceTrue)(30): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse))(avgpool): AdaptiveAvgPool2d(output_size(7, 7))(classifier): Sequential((0): Linear(in_features25088, out_features4096, biasTrue)(1): ReLU(inplaceTrue)(2): Dropout(p0.5, inplaceFalse)(3): Linear(in_features4096, out_features4096, biasTrue)(4): ReLU(inplaceTrue)(5): Dropout(p0.5, inplaceFalse)(6): Linear(in_features4096, out_features17, biasTrue)) ) 三、训练循环  1.编写训练函数 # 训练循环 def train(dataloader, model, loss_fn, optimizer):size len(dataloader.dataset) # 训练集的大小num_batches len(dataloader) # 批次数目, (size/batch_size向上取整)train_loss, train_acc 0, 0 # 初始化训练损失和正确率for X, y in dataloader: # 获取图片及其标签X, y X.to(device), y.to(device)# 计算预测误差pred model(X) # 网络输出loss loss_fn(pred, y) # 计算网络输出和真实值之间的差距targets为真实值计算二者差值即为损失# 反向传播optimizer.zero_grad() # grad属性归零loss.backward() # 反向传播optimizer.step() # 每一步自动更新# 记录acc与losstrain_acc (pred.argmax(1) y).type(torch.float).sum().item()train_loss loss.item()train_acc / sizetrain_loss / num_batchesreturn train_acc, train_loss 2.编写测试函数  def test (dataloader, model, loss_fn):size len(dataloader.dataset) # 测试集的大小num_batches len(dataloader) # 批次数目, (size/batch_size向上取整)test_loss, test_acc 0, 0# 当不进行训练时停止梯度更新节省计算内存消耗with torch.no_grad():for imgs, target in dataloader:imgs, target imgs.to(device), target.to(device)# 计算losstarget_pred model(imgs)loss loss_fn(target_pred, target)test_loss loss.item()test_acc (target_pred.argmax(1) target).type(torch.float).sum().item()test_acc / sizetest_loss / num_batchesreturn test_acc, test_loss 3.设置动态学习率  # 调用官方动态学习率接口时使用 learn_rate 1e-3 # 初始学习率 lambda1 lambda epoch: 0.92 ** (epoch // 4) optimizer torch.optim.SGD(model.parameters(), lrlearn_rate) scheduler torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambdalambda1) #选定调整方法 4.正式训练 import copyloss_fn nn.CrossEntropyLoss() # 创建损失函数 epochs 40train_loss [] train_acc [] test_loss [] test_acc []best_acc 0 # 设置一个最佳准确率作为最佳模型的判别指标for epoch in range(epochs):# 更新学习率使用自定义学习率时使用# adjust_learning_rate(optimizer, epoch, learn_rate)model.train()epoch_train_acc, epoch_train_loss train(train_dl, model, loss_fn, optimizer)scheduler.step() # 更新学习率调用官方动态学习率接口时使用model.eval()epoch_test_acc, epoch_test_loss test(test_dl, model, loss_fn)# 保存最佳模型到 best_modelif epoch_test_acc best_acc:best_acc epoch_test_accbest_model copy.deepcopy(model)train_acc.append(epoch_train_acc)train_loss.append(epoch_train_loss)test_acc.append(epoch_test_acc)test_loss.append(epoch_test_loss)# 获取当前的学习率lr optimizer.state_dict()[param_groups][0][lr]template (Epoch:{:2d}, Train_acc:{:.1f}%, Train_loss:{:.3f}, Test_acc:{:.1f}%, Test_loss:{:.3f}, Lr:{:.2E})print(template.format(epoch1, epoch_train_acc*100, epoch_train_loss, epoch_test_acc*100, epoch_test_loss, lr))# 保存最佳模型到文件中 PATH ./best_model123.pth # 保存的参数文件名 torch.save(model.state_dict(), PATH)print(Done) Epoch: 1, Train_acc:11.9%, Train_loss:2.810, Test_acc:14.4%, Test_loss:2.639, Lr:1.00E-03 Epoch: 2, Train_acc:17.4%, Train_loss:2.590, Test_acc:15.3%, Test_loss:2.512, Lr:1.00E-03 Epoch: 3, Train_acc:17.8%, Train_loss:2.483, Test_acc:17.5%, Test_loss:2.400, Lr:1.00E-03 Epoch: 4, Train_acc:21.0%, Train_loss:2.409, Test_acc:20.8%, Test_loss:2.344, Lr:9.20E-04 Epoch: 5, Train_acc:22.1%, Train_loss:2.331, Test_acc:23.9%, Test_loss:2.289, Lr:9.20E-04 ........... Epoch:36, Train_acc:42.2%, Train_loss:1.763, Test_acc:38.9%, Test_loss:1.858, Lr:4.72E-04 Epoch:37, Train_acc:43.8%, Train_loss:1.744, Test_acc:39.2%, Test_loss:1.872, Lr:4.72E-04 Epoch:38, Train_acc:44.0%, Train_loss:1.747, Test_acc:39.4%, Test_loss:1.872, Lr:4.72E-04 Epoch:39, Train_acc:43.9%, Train_loss:1.744, Test_acc:39.7%, Test_loss:1.859, Lr:4.72E-04 Epoch:40, Train_acc:44.4%, Train_loss:1.731, Test_acc:39.7%, Test_loss:1.885, Lr:4.34E-04 Done 四、结果可视化 1.Loss与Accuracy图 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 #分辨率from datetime import datetime current_time datetime.now() # 获取当前时间epochs_range range(epochs)plt.figure(figsize(12, 3)) plt.subplot(1, 2, 1)plt.plot(epochs_range, train_acc, labelTraining Accuracy) plt.plot(epochs_range, test_acc, labelTest Accuracy) plt.legend(loclower right) plt.title(Training and Validation Accuracy) plt.xlabel(current_time) # 打卡请带上时间戳否则代码截图无效plt.subplot(1, 2, 2) plt.plot(epochs_range, train_loss, labelTraining Loss) plt.plot(epochs_range, test_loss, labelTest Loss) plt.legend(locupper right) plt.title(Training and Validation Loss) plt.show() 2.对指定图片进行预测  from PIL import Image classes list(total_data.class_to_idx)def predict_one_image(image_path, model, transform, classes):test_img Image.open(image_path).convert(RGB)plt.imshow(test_img) # 展示预测的图片test_img transform(test_img)img test_img.to(device).unsqueeze(0)model.eval()output model(img)_,pred torch.max(output,1)pred_class classes[pred]print(f预测结果是{pred_class}) # 预测训练集中的某张照片 predict_one_image(image_pathF:/jupyter lab/DL-100-days/datasets/Hollywood_stars_photos/Angelina Jolie/001_fe3347c0.jpg, modelmodel, transformtrain_transforms, classesclasses) 预测结果是Angelina Jolie 3.模型评估 best_model.eval() epoch_test_acc, epoch_test_loss test(test_dl, best_model, loss_fn) epoch_test_acc, epoch_test_loss (0.3972222222222222, 1.8640953699747722) # 查看是否与我们记录的最高准确率一致 epoch_test_acc 0.3972222222222222 五、学习心得 1.本次使用pytorch深度学习环境对官方的VGG-16模型进行调用并且保存最佳模型权重。VGG-16模型的最大特点是深度。除此之外其卷积层都采用3x3的卷积核和步长为1的卷积操作同时卷积层后都有ReLU激活函数从而降低过拟合风险。 2.训练过程中发现训练和测试的acc都过低约为20%通过调整动态学习率予以调整初始学习率增大一个数量级之后此问题得到一定的解决。 3.下一步将自行搭建VGG-16模型。
http://www.hkea.cn/news/14337224/

相关文章:

  • 企业建站搭建页游中心
  • 曲周县建设局网站做电影网站被告版权
  • 豫港大厦 做网站怎样做自己介绍网站
  • 建个人网站怎么赚钱吗做出个人网站什么水平
  • 网站 流量 不够用网站建设培训龙岗
  • 建湖做网站哪家好汉化WORDPRESS聊天软件
  • 怎么免费做网站视频教学成都中小企业网站建设哪家公司好
  • 网站建设考核指标佛山有那些定制网站建设公司
  • 临沂网站建设技术托管游戏网站开发需求分析
  • 做3d在哪个网站上接单比较好wordpress文章主题适合seo
  • 上海软件培训网站建设如何评价一个网站的网站建设
  • 临沂网站建设熊掌号网页设计怎么把图片上移
  • 网站qq代码生成安徽网站建设SEO优化制作设计公司
  • 吉林省建设行业继续教续网站wordpress支付宝支付宝
  • 网页制作与网站建设的发展趋势设想抚州的电子商务网站建设公司
  • 营销网站建设计划书昆明做网站排名
  • 网站建设ssc源码建设银行网站 个人客户
  • 网站多长时间到期o2o网站建设最好公司排名
  • 做零售去哪个外贸网站如何做网站进行推广
  • 网站文章多久收录炒股配资网站建设
  • 个人手机版网站app怎么做图案设计
  • 面料 做网站网站喜报怎么做
  • 福田网站建设 信科网络广告策划方案万能模板
  • python编程代码大全seo网站营销公司哪家好
  • 班级网站建设步骤wordpress 最简单模板
  • 网站开发 软件有哪些企业老总电话名录
  • 钻井网站建设长沙建站网
  • 兰州公司网站建设做挂件像网站
  • 网站推广办法自建网站模板下载
  • 淘宝seo名词解释网站建设优化服务公司