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

网站建设 有限公司建设网站需要资料

网站建设 有限公司,建设网站需要资料,网站模块制作,网站建设教程怎么建本文记录自己的学习过程#xff0c;内容包括#xff1a; 代码解读#xff1a;Pytorch-UNet 深度学习编程基础#xff1a;Pytorch-深度学习#xff08;新手友好#xff09; UNet论文解读#xff1a;医学图像分割#xff1a;U_Net 论文阅读 数据#xff1a;https://hack…本文记录自己的学习过程内容包括 代码解读Pytorch-UNet 深度学习编程基础Pytorch-深度学习新手友好 UNet论文解读医学图像分割U_Net 论文阅读 数据https://hackernoon.com/hacking-gta-v-for-carvana-kaggle-challenge-6d0b7fb4c781 完整代码解读详见U-Net代码复现–更新中 train.py CarvanaDataset 读取并创建输入数据具体实现详见U-Net代码复现–utils data_loading.py # 1. Create datasettry:dataset CarvanaDataset(dir_img, dir_mask, img_scale)except (AssertionError, RuntimeError, IndexError):dataset BasicDataset(dir_img, dir_mask, img_scale)random_split()函数说明 这个函数的作用是划分数据集 参数说明 dataset (Dataset): 划分的数据集lengths (sequence): 被划分数据集的长度 # 2. Split into train / validation partitions# 将数据集分为训练集和验证集n_val int(len(dataset) * val_percent)n_train len(dataset) - n_valtrain_set, val_set random_split(dataset, [n_train, n_val], generatortorch.Generator().manual_seed(0))加载和迭代数据集 关于DataLoader参考Pytorchtorch.utils.data.DataLoader() # 3. Create data loadersloader_args dict(batch_sizebatch_size, num_workersos.cpu_count(), pin_memoryTrue)train_loader DataLoader(train_set, shuffleTrue, **loader_args)val_loader DataLoader(val_set, shuffleFalse, drop_lastTrue, **loader_args)Wandb是Weights Biases的缩写是类似TensorBoard visdom的一款可视化工具是属于Python的不是Pytorch的大家感兴趣可以自己看看这里就不多解释了 # (Initialize logging)experiment wandb.init(projectU-Net, resumeallow, anonymousmust)experiment.config.update(dict(epochsepochs, batch_sizebatch_size, learning_ratelearning_rate,val_percentval_percent, save_checkpointsave_checkpoint, img_scaleimg_scale, ampamp))打印日志 logging.info(fStarting training:Epochs: {epochs}Batch size: {batch_size}Learning rate: {learning_rate}Training size: {n_train}Validation size: {n_val}Checkpoints: {save_checkpoint}Device: {device.type}Images scaling: {img_scale}Mixed Precision: {amp})关于 optim.RMSprop 参考机器学习优化器Optimizer的总结与比较torch.optim.lr_scheduler 模块提供了一些根据epoch训练次数来调整学习率learning rate的方法。一般情况下我们会设置随着epoch的增大而逐渐减小学习率从而达到更好的训练效果。torch.optim.lr_scheduler.ReduceLROnPlateau 则提供了基于训练中某些测量值使学习率动态下降的方法。torch.cuda.amp.GradScaler 参考PyTorch torch.cuda.amp: 自动混合精度详解nn.CrossEntropyLoss() 损失函数 # 4. Set up the optimizer, the loss, the learning rate scheduler and the loss scaling for AMPoptimizer optim.RMSprop(model.parameters(),lrlearning_rate, weight_decayweight_decay, momentummomentum, foreachTrue)scheduler optim.lr_scheduler.ReduceLROnPlateau(optimizer, max, patience5) # goal: maximize Dice scoregrad_scaler torch.cuda.amp.GradScaler(enabledamp)criterion nn.CrossEntropyLoss() if model.n_classes 1 else nn.BCEWithLogitsLoss()global_step 0训练函数这部分内容比较多将拆分为多个小部分分析 part 1 迭代数据集 for batch in train_loader: 对应前文中train_loader DataLoader (train_set, shuffleTrue, **loader_args) images, true_masks batch[image], batch[mask] 对应U-Net代码复现–utils data_loading.py中的 image: torch.as_tensor(img.copy()).float().contiguous(), mask: torch.as_tensor(mask.copy()).long().contiguous(). images images.to(devicedevice, dtypetorch.float32, memory_formattorch.channels_last) . true_masks true_masks.to(devicedevice, dtypetorch.long) . 将Tensor或模型移动到指定的设备上关于.to()的用法详见pytorchto()、device()、cuda() part 2 with torch.autocast(device.type if device.type ! mps else cpu, enabledamp): with torch.autocast: 语句块内的代码会自动进行混合精度计算也就是根据输入数据的类型自动选择合适的精度进行计算 masks_pred model(images) . 单次预测结果 if model.n_classes 1: . n_classes输出图的通道数也就是最终得到几张特征图 loss criterion(masks_pred.squeeze(1), true_masks.float()) . loss dice_loss(F.sigmoid(masks_pred.squeeze(1)), true_masks.float(), multiclassFalse) 参考U-Net代码复现–utils dice_score.py part 3 torch.nn.utils.clip_grad_norm_(model.parameters(), gradient_clipping). clip_grad_norm_的理解参考Pytorchtorch.nn.utils.clip_grad_norm_梯度截断_解读 optimizer.zero_grad(set_to_noneTrue). grad_scaler.scale(loss).backward(). grad_scaler.step(optimizer). grad_scaler.update(). 关于optimizer.zero_grad(), loss.backward(), optimizer.step()的理解参考Pytorchoptimizer.zero_grad(), loss.backward(), optimizer.step() part 4 参数更新 进度条更新 # 5. Begin training# part 1 for epoch in range(1, epochs 1):model.train()epoch_loss 0with tqdm(totaln_train, descfEpoch {epoch}/{epochs}, unitimg) as pbar:for batch in train_loader:images, true_masks batch[image], batch[mask]assert images.shape[1] model.n_channels, \fNetwork has been defined with {model.n_channels} input channels, \fbut loaded images have {images.shape[1]} channels. Please check that \the images are loaded correctly.images images.to(devicedevice, dtypetorch.float32, memory_formattorch.channels_last)true_masks true_masks.to(devicedevice, dtypetorch.long)# part 2 with torch.autocast(device.type if device.type ! mps else cpu, enabledamp):masks_pred model(images)if model.n_classes 1:loss criterion(masks_pred.squeeze(1), true_masks.float())loss dice_loss(F.sigmoid(masks_pred.squeeze(1)), true_masks.float(), multiclassFalse)else:loss criterion(masks_pred, true_masks)loss dice_loss(F.softmax(masks_pred, dim1).float(),F.one_hot(true_masks, model.n_classes).permute(0, 3, 1, 2).float(),multiclassTrue)# part 3 optimizer.zero_grad(set_to_noneTrue)grad_scaler.scale(loss).backward()torch.nn.utils.clip_grad_norm_(model.parameters(), gradient_clipping)grad_scaler.step(optimizer)grad_scaler.update()# part 4 pbar.update(images.shape[0])global_step 1epoch_loss loss.item()experiment.log({train loss: loss.item(),step: global_step,epoch: epoch})pbar.set_postfix(**{loss (batch): loss.item()})# part 5 # Evaluation rounddivision_step (n_train // (5 * batch_size))if division_step 0:if global_step % division_step 0:histograms {}for tag, value in model.named_parameters():tag tag.replace(/, .)if not (torch.isinf(value) | torch.isnan(value)).any():histograms[Weights/ tag] wandb.Histogram(value.data.cpu())if not (torch.isinf(value.grad) | torch.isnan(value.grad)).any():histograms[Gradients/ tag] wandb.Histogram(value.grad.data.cpu())val_score evaluate(model, val_loader, device, amp)scheduler.step(val_score)logging.info(Validation Dice score: {}.format(val_score))try:experiment.log({learning rate: optimizer.param_groups[0][lr],validation Dice: val_score,images: wandb.Image(images[0].cpu()),masks: {true: wandb.Image(true_masks[0].float().cpu()),pred: wandb.Image(masks_pred.argmax(dim1)[0].float().cpu()),},step: global_step,epoch: epoch,**histograms})except:passif save_checkpoint:Path(dir_checkpoint).mkdir(parentsTrue, exist_okTrue)state_dict model.state_dict()state_dict[mask_values] dataset.mask_valuestorch.save(state_dict, str(dir_checkpoint / checkpoint_epoch{}.pth.format(epoch)))logging.info(fCheckpoint {epoch} saved!)argparse.ArgumentParser 创建 ArgumentParser() 对象parser.add_argument 调用 add_argument() 方法添加参数parser.parse_args() 使用 parse_args() 解析添加的参数 其中 parser.add_argument name or flags - 一个命名或者一个选项字符串的列表例如 foo 或 -f, --foo。 action -当参数在命令行中出现时使用的动作基本类型。 nargs - 命令行参数应当消耗的数目。 const - 被一些 action 和 nargs选择所需求的常数。 default - 当参数未在命令行中出现时使用的值。 choices - 可用的参数的容器。 required -此命令行选项是否可省略 仅选项可用。 help - 一个此选项作用的简单描述。 metavar - 在使用方法消息中使用的参数值示例。 dest - 被添加到 parse_args() 所返回对象上的属性名。 def get_args():parser argparse.ArgumentParser(descriptionTrain the UNet on images and target masks)parser.add_argument(--epochs, -e, metavarE, typeint, default5, helpNumber of epochs)parser.add_argument(--batch-size, -b, destbatch_size, metavarB, typeint, default1, helpBatch size)parser.add_argument(--learning-rate, -l, metavarLR, typefloat, default1e-5,helpLearning rate, destlr)parser.add_argument(--load, -f, typestr, defaultFalse, helpLoad model from a .pth file)parser.add_argument(--scale, -s, typefloat, default0.5, helpDownscaling factor of the images)parser.add_argument(--validation, -v, destval, typefloat, default10.0,helpPercent of the data that is used as validation (0-100))parser.add_argument(--amp, actionstore_true, defaultFalse, helpUse mixed precision)parser.add_argument(--bilinear, actionstore_true, defaultFalse, helpUse bilinear upsampling)parser.add_argument(--classes, -c, typeint, default2, helpNumber of classes)return parser.parse_args()main(): Memory FormatChannel First 和 Channel Last Pytorchtorch.utils.checkpoint() Pytorchtorch.cuda.empty_cache() Pytorch模型的加载和保存 torch.savetorch.loadtorch.nn.Module.state_dict 和 torch.nn.Module.load_state_dict if __name__ __main__:args get_args()logging.basicConfig(levellogging.INFO, format%(levelname)s: %(message)s)device torch.device(cuda if torch.cuda.is_available() else cpu)logging.info(fUsing device {device})# Change here to adapt to your data# n_channels3 for RGB images# n_classes is the number of probabilities you want to get per pixelmodel UNet(n_channels3, n_classesargs.classes, bilinearargs.bilinear)model model.to(memory_formattorch.channels_last)logging.info(fNetwork:\nf\t{model.n_channels} input channels\nf\t{model.n_classes} output channels (classes)\nf\t{Bilinear if model.bilinear else Transposed conv} upscaling)if args.load:state_dict torch.load(args.load, map_locationdevice)del state_dict[mask_values]model.load_state_dict(state_dict)logging.info(fModel loaded from {args.load})model.to(devicedevice)try:train_model(modelmodel,epochsargs.epochs,batch_sizeargs.batch_size,learning_rateargs.lr,devicedevice,img_scaleargs.scale,val_percentargs.val / 100,ampargs.amp)except torch.cuda.OutOfMemoryError:logging.error(Detected OutOfMemoryError! Enabling checkpointing to reduce memory usage, but this slows down training. Consider enabling AMP (--amp) for fast and memory efficient training)torch.cuda.empty_cache()model.use_checkpointing()train_model(modelmodel,epochsargs.epochs,batch_sizeargs.batch_size,learning_rateargs.lr,devicedevice,img_scaleargs.scale,val_percentargs.val / 100,ampargs.amp)
http://www.zqtcl.cn/news/367043/

相关文章:

  • 深圳做网站什么公司好广州电商小程序开发
  • 郑州高新区做网站的公司如何欣赏网站
  • 网站做维恩图做网站的公司杭州
  • 柳州公司网站制作公司wordpress 网店
  • 网站增加栏目费用在网站开发中如何设置登录
  • 怎样用php做网站百度推广联系人
  • 怎么建立手机网站如何申请公司域名
  • 营销型网站怎么收费邓州企业网站
  • 北京建设官方网站邢台网站维护
  • 新余网站制作网站开发工资咋样
  • 襄阳网站建设外包自己做一个网站
  • 网站域名的后缀wordpress文章归类
  • 查询企业信息的官方网站大连建设网站公司
  • 网站建设 全包专业建设规划方案模板
  • 做网站好还是做微信小程序好浙江建设工程造价信息网站
  • 网站开发怎么报价推广普通话手抄报模板可打印
  • 好的平面网站模板企业网站建设浩森宇特
  • 做网站通过什么赚钱吗公司建设网站的费用
  • 如何做建筑一体化的网站视频网站开发应用到哪些技术
  • 巴中微信网站建设竞价托管一般多少钱
  • 彩票网站开发 违法股票网站排名哪个好
  • 宝格丽网站建设哈尔滨网站建设王道下拉強
  • 烟台网站建设的公司世界500强企业排名2021
  • 网络营销做得比较成功的案例吴中seo网站优化软件
  • 怎么设立网站美区下载的app怎么更新
  • 建立网站ppt做酒店网站所用到的算法
  • 上海网站建设的价格低太仓做网站的公司
  • 怎样登录建设互联网站怎么做中英文网站
  • 云网站7china中小企业网站建设好么
  • 美丽南方官网网站建设国际新闻最新消息今天摘抄