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

开发电商网站订阅号可以做网站吗

开发电商网站,订阅号可以做网站吗,昆明房地产网站建设,互联网营销师资格证目录 CNN代码读取数据搭建CNN训练网络模型 数据增强迁移学习图像识别策略数据读取定义数据预处理操作冻结resnet18的函数把模型输出层改成自己的设置哪些层需要训练设置优化器和损失函数训练开始训练再训练所有层关机了#xff0c;再开机#xff0c;加载训练好的模型 CNN 代码… 目录 CNN代码读取数据搭建CNN训练网络模型 数据增强迁移学习图像识别策略数据读取定义数据预处理操作冻结resnet18的函数把模型输出层改成自己的设置哪些层需要训练设置优化器和损失函数训练开始训练再训练所有层关机了再开机加载训练好的模型 CNN 代码 import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torchvision import datasets,transforms import matplotlib.pyplot as plt import numpy as np %matplotlib inline读取数据 #定义超参数 input_size28 num_class10 num_epochs3 batch_size64#训练集 train_datasetdatasets.MNIST(root./data,trainTrue,transformtransforms.ToTensor(),downloadTrue)test_datasetdatasets.MNIST(root./data,trainFalse,transformtransforms.ToTensor())#构建batch数据 train_loadertorch.utils.data.DataLoader(datasettrain_dataset,batch_sizebatch_size,shuffleTrue) #num_worker4 使用4个子线程加载数据 test_loadertorch.utils.data.DataLoader(datasettest_dataset,batch_sizebatch_size,shuffleFalse)train_data_iteriter(train_loader) #获取训练集的第一个批次数据第一个快递包 batch_x,batch_ynext(train_data_iter) print(batch_x.shape,batch_y.shape)test_data_iteriter(test_loader) batch_x_test,batch_y_testnext(test_data_iter) print(batch_x_test.shape,batch_y_test.shape)搭建CNN class CNN(nn.Module):def __init__(self):super(CNN,self).__init__() #batch_size,1,28,28self.conv1nn.Sequential(nn.Conv2d(in_channels1,out_channels16,kernel_size5,stride1,padding2), #batch_size,16,28,28nn.ReLU(),nn.MaxPool2d(kernel_size2), #batch_size,16,14,14)self.conv2nn.Sequential(nn.Conv2d(16,32,5,1,2), #batch_size,32,14,14nn.ReLU(),nn.Conv2d(32,32,5,1,2), #batch_size,32,14,14 #输入输出通道不变让其在隐藏层里面更进一步提取特征nn.ReLU(),nn.MaxPool2d(2), #batch_size,32,7,7)self.conv3nn.Sequential(nn.Conv2d(32,64,5,1,2), #batch_size,64,7,7nn.ReLU(),)#batch_size,64*7*7self.outnn.Linear(64*7*7,10)def forward(self,x):xself.conv1(x)xself.conv2(x)xnn.Flatten(self.conv3(x))outputself.out(x)return outputdef accuracy(prediction,labels):predtorch.argmax(prediction.data,dim1) #prediction.data中加data是为了防止数据里面单独数据可能会带来梯度信息rightspred.eq(labels.data,view_as(pred)).sum()return rights,len(labels) #(batch_size,)/(batch_size,1)训练网络模型 netCNN()criterionnn.CrossEntropyLoss() #不需要在CNN中将logistic转换为概率因为pytorch的交叉熵损失函数会自动进行optimizeroptim.Adam(net.parameters(),lr0.001)for epoch in range(num_epochs):train_rights[]for batch_idx,(data,target) in enumerate(train_loader):net.train() #进入训练状态也就是所有网络参数都处于可更新状态outputnet(data) #output只是logits得分losscriterion(output,target)optimizer.zero_grad()loss.backward()optimizer.step()rightaccuracy(output,target)train_rights.append(right)if batch_idx %100 0:net.eval() #进入评估模式自动关闭求导机制和模型中的BN层drop out层val_rights[]for (data,target) in test_loader:outputnet(data)rightaccuracy(output,target)val_rights.append(right)train_r(sum([tup[0] for tup in train_rights]),sum([tup[1] for tup in train_rights]))val_r(sum([tup[0] for tup in val_rights]),sum([tup[1] for tup in val_rights]))print(当前epoch:{} [{}/{} ({:.0f}%)]\t损失:{:.6f}\t训练集准确率:{:.2f}%\t测试集准确率:{:.2f}%.format(epoch,batch_idx*batch_size,len(train_loader.dataset),100.*batch_idx/len(train_loader),loss.data,100.*train_r[0].numpy()/train_r[1],100.*val_r[0].numpy()/val_r[1]))数据增强 比如数据不够可以对数据进行旋转翻转等操作来添加数据 迁移学习 例如使用预训练模型 图像识别策略 输出为102 数据读取 data_dir ./汪学长的随堂资料/2/flower_data/ train_dir data_dir /train # 训练数据的文件路径 valid_dir data_dir /valid # 验证数据的文件路径定义数据预处理操作 data_transforms {train:transforms.Compose([transforms.Resize([96, 96]),transforms.RandomRotation(45), # 随机旋转 -45~45度之间transforms.CenterCrop(64), #对中心进行裁剪变成64*64transforms.RandomHorizontalFlip(p0.5),transforms.RandomVerticalFlip(p0.5),transforms.ColorJitter(brightness0.2, contrast0.1, saturation0.1, hue0.1), # 亮度、对比度、饱和度、色调transforms.RandomGrayscale(p0.025), #彩色图变成灰度图transforms.ToTensor(), # 0-255 —— 0-1transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) #这组均值和标准差是最适合图片进行使用的因为是3通道所以有3组]),valid:transforms.Compose([transforms.Resize([64, 64]),transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]),}image_datasetsdataloadersdataset_sizesmodel_name resnet18 # resnet34, resnet50, feature_extract True #使用训练好的参数冻结resnet18的函数 def set_parameter_requires_gard(model ,feature_extracting):if feature_extracting:for param in model.parameters():param.requires_grad Falsemodel_ft models.resnet18() #内置的resnet18 model_ft改最后一层的因为默认的是1000输出 把模型输出层改成自己的 def initialize_model(feature_extract, use_pretrainedTrue):model_ft models.resnet18(pretrained use_pretrained)set_parameter_requires_gard(model_ft, feature_extract)model_ft.fc nn.Linear(512, 102)input_size 64return model_ft, input_size 设置哪些层需要训练 model_ft, input_size initialize_model(feature_extract, use_pretrainedTrue)device torch.device(mps) # cuda/cpumodel_ft model_ft.to(device)filename best.pt # .pt .pthparams_to_update model_ft.parameters()if feature_extract:params_to_update []for name, parm in model_ft.named_parameters():if parm.requires_grad True:params_to_update.append(parm)print(name)model_ft设置优化器和损失函数 optimizer_ft optim.Adam(params_to_update, lr1e-3)# 定义学习率调度器 scheduler optim.lr_scheduler.StepLR(optimizer_ft, step_size10, gamma0.1)criterion nn.CrossEntropyLoss()optimizer_ft.param_groups[0]训练 def train_model(model, dataloaders, criterion, optimizer, num_epochs50, filenamebest.pt):# 初始化一些变量since time.time() # 记录初始时间best_acc 0 # 记录验证集上的最佳精度model.to(device)train_acc_history []val_acc_history []train_losses []valid_losses []LRS [optimizer.param_groups[0][lr]]best_model_wts copy.deepcopy(model.state_dict())for epoch in range(num_epochs):print(Epoch {}/{}.format(epoch 1, num_epochs))print(- * 10)# 在每个epoch内遍历训练和验证两个阶段for phase in [train, valid]:if phase train:model.train()else:model.eval()running_loss 0.0 # 累积训练过程中的损失running_corrects 0 # 累积训练过程中的正确预测的样本数量for inputs, labels in dataloaders[phase]:inputs inputs.to(device)labels labels.to(device)outputs model(inputs)loss criterion(outputs, labels)preds torch.argmax(outputs, dim1)optimizer.zero_grad()if phase train:loss.backward()optimizer.step()running_loss loss.item() * inputs.size(0)running_corrects torch.sum(preds labels.data)epoch_loss running_loss / len(dataloaders[phase].dataset)# 整个epoch的平均损失epoch_acc running_corrects.float() / len(dataloaders[phase].dataset) # 整个epoch的准确率time_elapsed time.time() - sinceprint(Time elapsed {:.0f}m {:.0f}s.format(time_elapsed // 60, time_elapsed % 60))print({} Loss: {:.4f}; ACC: {:.4f}.format(phase, epoch_loss, epoch_acc))if phase valid and epoch_acc best_acc:best_acc epoch_accbest_model_wts copy.deepcopy(model.state_dict())state {state_dict: model.state_dict(),best_acc: best_acc,optimizer: optimizer.state_dict()}torch.save(state, filename)if phase valid:val_acc_history.append(epoch_acc)valid_losses.append(epoch_loss)if phase train:train_acc_history.append(epoch_acc)train_losses.append(epoch_loss)print(Optimizer learning rate : {:.7f}.format(optimizer.param_groups[0][lr]))LRS.append(optimizer.param_groups[0][lr])print()scheduler.step() # 调用学习率调度器来进行学习率更新操作# 已经全部训练完了time_elapsed time.time() - sinceprint(Training complete in {:.0f}m {:.0f}s.format(time_elapsed // 60, time_elapsed % 60))print(Best val Acc: {:.4f}.format(best_acc))model.load_state_dict(best_model_wts)return model, val_acc_history, train_acc_history, valid_losses, train_losses ,LRS开始训练 # def train_model(model, dataloaders, criterion, optimizer, num_epochs50, filenamebest.pt): model_ft, val_acc_history, train_acc_history, valid_losses, train_losses ,LRS train_model(model_ft, dataloaders, criterion, optimizer_ft, num_epochs5)再训练所有层 # 解冻 for param in model_ft.parameters():parm.requires_grad Trueoptimizer optim.Adam(model_ft.parameters(), lr1e-3) scheduler optim.lr_scheduler.StepLR(optimizer_ft, step_size7, gamma0.1) # 每7个epoch, 学习率衰减1/10 criterion nn.CrossEntropyLoss()# 加载之间训练好的权重参数 checkpoint torch.load(filename) best_acc checkpoint[best_acc] model_ft.load_state_dict(checkpoint[state_dict])model_ft, val_acc_history, train_acc_history, valid_losses, train_losses ,LRS train_model(model_ft, dataloaders, criterion, optimizer_ft, num_epochs3)关机了再开机加载训练好的模型 model_ft, input_size initialize_model(feature_extract, use_pretrainedTrue)filename best.pt# 加载模型 checkpoint torch.load(filename) model_ft.load_state_dict(checkpoint[state_dict])
http://www.zqtcl.cn/news/486632/

相关文章:

  • 一个网站如何优化企业资质查询平台
  • 模板网站为什么做不了优化山西网络网站建设销售公司
  • 建设什么网站可以赚钱设计本网站是用什么做的
  • 荆州市网站建设策划师
  • 苏州中国建设银行招聘信息网站中国企业登记网
  • 网站服务器的重要性新闻软文范例大全
  • 茶叶网站建设一般的风格加大志愿服务网站建设
  • 湖州医院网站建设方案网页游戏知乎
  • 以网站建设为开题报告临海门户网站住房和城乡建设规划局
  • 河南省大型项目建设办公室网站wordpress置顶功能
  • 奉化网站建设三合一网站建设多少钱
  • wordpress文章页怎么调用网站图片wordpress菜单锚点定位
  • 网站建设运营合作合同网站建设英文合同
  • wordpress chrome插件开发图片式网站利于做优化吗
  • 如何做好品牌网站建设策划app要有网站做基础
  • 横沥网站建设公司wordpress运行php
  • 南皮网站建设价格网络推广这个工作好做吗
  • 长安大学门户网站是谁给做的网站排名logo怎么做
  • 襄樊做网站做网站做网站
  • 百度做网站续费费用网站开发的可行性
  • 电子商务网站建设效益分析如何才能做好品牌网站建设策划
  • 能打开各种网站的浏览器app文章目录wordpress
  • 网站注册页面html中国建设招标网网站
  • 云南网站设计海外直购网站建设方案书范文
  • 网站视频小程序商城多少钱
  • 美耐皿 技术支持 东莞网站建设如何将网站指向404
  • 如何做网站的维护和推广wordpress首页在哪里修改
  • 网站建设公司在哪里宣传网站群系统建设的目的
  • 建立网站的教学书籍最新网站建设哪家公司好
  • 视频网站开发者工具科技网站新版网站上线