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

儿童网站建设外文翻译网站建设服务费的会计处理

儿童网站建设外文翻译,网站建设服务费的会计处理,游戏网站模板源码,广州工商局官网目录 数据增强方法 CNN图像分类数据集构建 导入数据集 定义trainer 超参数设置 数据增强 构建CNN网络 开始训练 模型测试 数据增强方法 # 一般情况下#xff0c;我们不会在验证集和测试集上做数据扩增 # 我们只需要将图片裁剪成同样的大小并装换成Tensor就行 test_t…目录 数据增强方法 CNN图像分类数据集构建 导入数据集 定义trainer 超参数设置 数据增强 构建CNN网络 开始训练 模型测试 数据增强方法 # 一般情况下我们不会在验证集和测试集上做数据扩增 # 我们只需要将图片裁剪成同样的大小并装换成Tensor就行 test_tfm transforms.Compose([transforms.Resize((128, 128)),transforms.ToTensor(), ])# 当然我们也可以再测试集中对数据进行扩增对同样本的不同装换 # - 用训练数据的装化方法train_tfm去对测试集数据进行转化产出扩增样本 # - 对同个照片的不同样本分别进行预测 # - 最后可以用soft vote / hard vote 等集成方法输出最后的预测 train_tfm transforms.Compose([# 图片裁剪 (height width 128)transforms.Resize((128, 128)),transforms.AutoAugment(transforms.AutoAugmentPolicy.IMAGENET),# ToTensor() 放在所有处理的最后transforms.ToTensor(), ]) CNN图像分类数据集构建 class FoodDataset(Dataset):# 构造函数def __init__(self, path, tfmtest_tfm, filesNone):# 调用父类的构造函数super(FoodDataset).__init__()# 存储图像文件夹路径self.path path# 从路径中获取所有以.jpg结尾的文件并按字典顺序排序self.files sorted([os.path.join(path, x) for x in os.listdir(path) if x.endswith(.jpg)])# 如果提供了文件列表则使用该列表代替自动搜索得到的列表if files is not None:self.files files# 打印路径中的一个样本文件路径print(fOne {path} sample, self.files[0])# 存储用于图像变换的函数self.transform tfm# 返回数据集中的样本数def __len__(self):return len(self.files)# 根据索引获取单个样本def __getitem__(self, idx):# 获取文件名fname self.files[idx]# 打开图像文件im Image.open(fname)# 应用变换im self.transform(im)# 尝试从文件名中提取标签如果失败则设置为-1表示测试集中没有标签try:label int(fname.split(/)[-1].split(_)[0])except:label -1 # 测试集没有label# 返回图像和标签return im, label 导入数据集 注意这里的“私有方法” _dataset_dir config[dataset_dir]#“_”是为了避免和python中的dataset重名train_set FoodDataset(os.path.join(_dataset_dir,training), tfmtrain_tfm) train_loader DataLoader(train_set, batch_sizeconfig[batch_size], shuffleTrue, num_workers0, pin_memoryTrue)valid_set FoodDataset(os.path.join(_dataset_dir,validation), tfmtest_tfm) valid_loader DataLoader(valid_set, batch_sizeconfig[batch_size], shuffleTrue, num_workers0, pin_memoryTrue)# 测试级保证输出顺序一致 test_set FoodDataset(os.path.join(_dataset_dir,test), tfmtest_tfm) test_loader DataLoader(test_set, batch_sizeconfig[batch_size], shuffleFalse, num_workers0, pin_memoryTrue) 定义trainer def trainer(train_loader, valid_loader, model, config, device, rest_net_flagFalse):# 定义交叉熵损失函数用于评估分类任务的模型性能criterion nn.CrossEntropyLoss()# 初始化优化器这里使用Adam优化器optimizer torch.optim.Adam(model.parameters(), lrconfig[learning_rate], weight_decayconfig[weight_decay])# 根据rest_net_flag标志选择模型保存路径save_path config[save_path] if rest_net_flag else config[resnet_save_path]# 初始化TensorBoard的SummaryWriter用于记录训练过程writer SummaryWriter()# 如果models目录不存在则创建该目录if not os.path.isdir(./models):os.mkdir(./models)# 初始化训练参数训练轮数、最佳损失、步骤计数器和早停计数器n_epochs, best_loss, step, early_stop_count config[n_epochs], math.inf, 0, 0# 进行多个训练周期for epoch in range(n_epochs):# 设置模型为训练模式model.train()# 初始化损失记录器和准确率记录器loss_record []train_accs []# 使用tqdm显示训练进度条train_pbar tqdm(train_loader, position0, leaveTrue)# 遍历训练数据for x, y in train_pbar:# 重置优化器梯度optimizer.zero_grad()# 将数据和标签移动到指定设备如GPUx, y x.to(device), y.to(device)# 进行一次前向传播pred model(x)# 计算损失loss criterion(pred, y)# 反向传播loss.backward()# 如果启用梯度裁剪则应用梯度裁剪if config[clip_flag]:grad_norm nn.utils.clip_grad_norm_(model.parameters(), max_norm10)# 进行一步优化梯度下降optimizer.step()# 记录当前步骤step 1# 计算准确率并记录损失和准确率acc (pred.argmax(dim-1) y.to(device)).float().mean()l_ loss.detach().item()loss_record.append(l_)train_accs.append(acc.detach().item())train_pbar.set_description(fEpoch [{epoch1}/{n_epochs}])train_pbar.set_postfix({loss: f{l_:.5f}, acc: f{acc:.5f}})# 计算并记录平均训练损失和准确率mean_train_acc sum(train_accs) / len(train_accs)mean_train_loss sum(loss_record) / len(loss_record)writer.add_scalar(Loss/train, mean_train_loss, step)writer.add_scalar(ACC/train, mean_train_acc, step)# 设置模型为评估模式model.eval()# 初始化验证集损失记录器和准确率记录器loss_record []test_accs []# 遍历验证数据for x, y in valid_loader:x, y x.to(device), y.to(device)with torch.no_grad():pred model(x)loss criterion(pred, y)acc (pred.argmax(dim-1) y.to(device)).float().mean()loss_record.append(loss.item())test_accs.append(acc.detach().item())# 计算并打印平均验证损失和准确率mean_valid_acc sum(test_accs) / len(test_accs)mean_valid_loss sum(loss_record) / len(loss_record)print(fEpoch [{epoch1}/{n_epochs}]: Train loss: {mean_train_loss:.4f}, acc: {mean_train_acc:.4f} Valid loss: {mean_valid_loss:.4f}, acc: {mean超参数设置 device cuda if torch.cuda.is_available() else cpu config {seed: 6666,dataset_dir: ../input/data,n_epochs: 10, batch_size: 64, learning_rate: 0.0003, weight_decay:1e-5,early_stop: 300,clip_flag: True, save_path: ./models/model.ckpt,resnet_save_path: ./models/resnet_model.ckpt } print(device) all_seed(config[seed]) 数据增强 test_set FoodDataset(os.path.join(_dataset_dir,test), tfmtrain_tfm) test_loader_extra1 DataLoader(test_set, batch_sizeconfig[batch_size], shuffleFalse, num_workers0, pin_memoryTrue)test_set FoodDataset(os.path.join(_dataset_dir,test), tfmtrain_tfm) test_loader_extra2 DataLoader(test_set, batch_sizeconfig[batch_size], shuffleFalse, num_workers0, pin_memoryTrue)test_set FoodDataset(os.path.join(_dataset_dir,test), tfmtrain_tfm) test_loader_extra3 DataLoader(test_set, batch_sizeconfig[batch_size], shuffleFalse, num_workers0, pin_memoryTrue) 构建CNN网络 class Classifier(nn.Module):def __init__(self):super(Classifier, self).__init__()# input 維度 [3, 128, 128]self.cnn nn.Sequential(nn.Conv2d(3, 64, 3, 1, 1), # [64, 128, 128]nn.BatchNorm2d(64),nn.ReLU(),nn.MaxPool2d(2, 2, 0), # [64, 64, 64]nn.Conv2d(64, 128, 3, 1, 1), # [128, 64, 64]nn.BatchNorm2d(128),nn.ReLU(),nn.MaxPool2d(2, 2, 0), # [128, 32, 32]nn.Conv2d(128, 256, 3, 1, 1), # [256, 32, 32]nn.BatchNorm2d(256),nn.ReLU(),nn.MaxPool2d(2, 2, 0), # [256, 16, 16]nn.Conv2d(256, 512, 3, 1, 1), # [512, 16, 16]nn.BatchNorm2d(512),nn.ReLU(),nn.MaxPool2d(2, 2, 0), # [512, 8, 8]nn.Conv2d(512, 512, 3, 1, 1), # [512, 8, 8]nn.BatchNorm2d(512),nn.ReLU(),nn.MaxPool2d(2, 2, 0), # [512, 4, 4])self.fc nn.Sequential(nn.Linear(512*4*4, 1024),nn.ReLU(),nn.Linear(1024, 512),nn.ReLU(),nn.Linear(512, 11))def forward(self, x):out self.cnn(x)out out.view(out.size()[0], -1)return self.fc(out) 举一个具体的例子来解释 out out.view(out.size()[0], -1)。 假设我们有一个4维的张量 out其维度是 [10, 3, 32, 32]。这个张量可以被理解为一个小批量batch的图像数据其中 10 是批处理大小batch size表示有10个图像。3 是通道数channels例如在RGB图像中有3个颜色通道。32 和 32 是图像的高度和宽度。 现在我们想将这个4维张量转换为2维张量以便它可以被用作全连接层dense layer的输入。这就是 out.view(out.size()[0], -1) 用途所在。 执行这个操作后张量的形状将会是 第一个维度仍然是10这保持了批处理大小不变。第二个维度是由-1指定的这让PyTorch自动计算这个维度的大小。在我们的例子中其余的维度3, 32, 32将被展平所以第二个维度的大小是 3 * 32 * 32 3072。 因此执行 out out.view(out.size()[0], -1) 后out 的形状将会从 [10, 3, 32, 32] 变为 [10, 3072]。这个新的二维张量可以被看作是一个包含10个样本的数据批次每个样本都被展平为3072个特征的一维数组。这种形状的张量适合作为全连接层的输入。 1. Conv2d卷积层 卷积层的输出尺寸可以用以下公式计算 其中 输入尺寸是输入特征图的高度或宽度。卷积核尺寸是卷积核的高度或宽度。填充Padding是在输入特征图周围添加的零的层数。步长Stride是卷积核移动的步幅。 2. MaxPool2d最大池化层 最大池化层的输出尺寸可以用类似的公式计算 对于最大池化通常不使用填充。 假设我们有一个大小为[32, 32]高度32宽度32的输入特征图并且我们想应用以下两个层 Conv2d层卷积核大小为[3, 3]步长为1填充为1。MaxPool2d层池化核大小为[2, 2]步长为2。 对于Conv2d层输出尺寸计算如下 对于MaxPool2d层输出尺寸计算如下 所以经过这两层处理后最终输出的特征图尺寸将会是[16, 16]。 开始训练 model Classifier().to(device) trainer(train_loader, valid_loader, model, config, device) 或者可以通过调用pytorch官方的一些标准model进行训 from torchvision.models import resnet50 resNet resnet50(pretrainedFalse) # 残差网络 resNet resNet.to(device) trainer(train_loader, valid_loader, resNet, config, device) 模型测试 model_best Classifier().to(device) model_best.load_state_dict(torch.load(config[save_path])) model_best.eval() prediction [] with torch.no_grad():for data,_ in test_loader:test_pred model_best(data.to(device))test_label np.argmax(test_pred.cpu().data.numpy(), axis1)prediction test_label.squeeze().tolist()
http://www.zqtcl.cn/news/490771/

相关文章:

  • 网站建设开发费会计处理山东省住房和城乡建设厅二建查询
  • 市工商局网站建设情况襄阳网站seo诊断
  • 动漫做那个视频网站单网页网站如何做
  • 企业网站名是什么意思广州公共交易中心
  • 做网站那家好沈阳做网站公司哪家好
  • 现在做一个网站大概多少钱中国住房城乡建设部网站
  • 高端企业网站建设核心秦皇岛网站制作人才招聘
  • 网站制作花多少钱简历模板表格
  • 泰安专业网站开发公司网页设计师常逛网站
  • 百度收录万网空间的网站需要多久推广seo网站
  • 个体工商户可以做网站备案吗微信app下载安装官方版2023
  • 内贸在什么网站做做网站需要提供哪些信息
  • 物流网站怎么做推广网页程序开发语言
  • 静态网站跟动态网站开发的层次
  • 公司购买网站怎么做分录被k掉的网站怎么做才能有收录
  • 网页制作相关网站网络卖货平台有哪些
  • 国内网站都要备案吗快速做网站的软件
  • 遂宁市住房和城乡建设局网站自己的网站怎么做美工
  • 资阳网站建设公司中国菲律宾概念股
  • 网站优化报价wordpress 获取别名
  • 自适应网站如何做mip微信网站公司
  • 网站建设改版升级wordpress 艺术家
  • 百度怎么网站排名python做网站的开发
  • 淘宝 网站建设教程视频北京华夏建设有限公司网站
  • 网站公司的利润中国域名后缀
  • 梁山网站建设电话多语言网站建设
  • 网站建设的摘要做直播网站赚钱吗
  • 网站建设明细报价表模板永久免费云服务器无需注册
  • 扁平化网站设计方案大学生做的美食网站
  • wordpress前台打开速度20秒湖南正规竞价优化公司