如何估算建设一个免费同城类网站的成本?

摘要:建设网站免费,同城类网站建设多少钱,民权做网站,jsp购物网站开发12种猫分类比赛传送门 要求很简单,给train和test集,训练模型实现图像分类。 这里使用的是残差连接模型&a
建设网站免费,同城类网站建设多少钱,民权做网站,jsp购物网站开发12种猫分类比赛传送门 要求很简单#xff0c;给train和test集#xff0c;训练模型实现图像分类。 这里使用的是残差连接模型#xff0c;这个平台有预训练好的模型#xff0c;可以直接拿来主义。 训练十几个迭代#xff0c;每个批次60左右#xff0c;准确率达到90%以上…12种猫分类比赛传送门 要求很简单给train和test集训练模型实现图像分类。 这里使用的是残差连接模型这个平台有预训练好的模型可以直接拿来主义。 训练十几个迭代每个批次60左右准确率达到90%以上 一、导入库解压文件 import os import zipfile import random import json import cv2 import numpy as np from PIL import Imageimport matplotlib.pyplot as plt from sklearn.model_selection import train_test_split import paddle import paddle.nn as nn from paddle.io import Dataset,DataLoader from paddle.nn import \Layer, \Conv2D, Linear, \Embedding, MaxPool2D, \BatchNorm2D, ReLUimport paddle.vision.transforms as transforms from paddle.vision.models import resnet50 from paddle.metric import Accuracytrain_parameters {input_size: [3, 224, 224], # 输入图片的shapeclass_dim: 12, # 分类数src_path:data/data10954/cat_12_train.zip, # 原始数据集路径src_test_path:data/data10954/cat_12_test.zip, # 原始数据集路径target_path:/home/aistudio/data/dataset, # 要解压的路径 train_list_path: ./train.txt, # train_data.txt路径eval_list_path: ./eval.txt, # eval_data.txt路径label_dict:{}, # 标签字典readme_path: /home/aistudio/data/readme.json,# readme.json路径num_epochs:6, # 训练轮数train_batch_size: 16, # 批次的大小learning_strategy: { # 优化函数相关的配置lr: 0.0005 # 超参数学习率} }scr_pathtrain_parameters[src_path] target_pathtrain_parameters[target_path] src_test_pathtrain_parameters[src_test_path] z zipfile.ZipFile(scr_path, r) z.extractall(pathtarget_path) z zipfile.ZipFile(src_test_path, r) z.extractall(pathtarget_path) z.close() for imgpath in os.listdir(target_path /cat_12_train):src os.path.join(target_path /cat_12_train/, imgpath)img Image.open(src)if img.mode ! RGB:img img.convert(RGB)img.save(src)for imgpath in os.listdir(target_path /cat_12_test):src os.path.join(target_path /cat_12_test/, imgpath)img Image.open(src)if img.mode ! RGB:img img.convert(RGB)img.save(src)解压后将所有图像变为RGB图像 二、加载训练集进行预处理、数据增强、格式变换 transform transforms.Compose([transforms.Resize(size224),transforms.ColorJitter(0.2, 0.2, 0.2, 0.2),transforms.RandomHorizontalFlip(),transforms.RandomRotation(15),transforms.RandomResizedCrop(size224, scale(0.8, 1.0)),transforms.ToTensor(),transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) ])x_train,x_eval,y_train[],[],[]#获取训练图像和标签、测试图像和标签 contents[] with open(data/data10954/train_list.txt)as f:contentsf.read().split(\n)for item in contents:if item:continuepathdata/dataset/item.split(\t)[0]datanp.array(Image.open(path).convert(RGB))datanp.array(transform(data))x_train.append(data)y_train.append(int(item.split(\t)[-1]))contetnsos.listdir(data/dataset/cat_12_test) for item in contetns:pathdata/dataset/cat_12_test/itemdatanp.array(Image.open(path).convert(RGB))datanp.array(transform(data))x_eval.append(data)重点是transforms变换的预处理 三、划分训练集和测试集 x_trainnp.array(x_train)y_trainnp.array(y_train)x_evalnp.array(x_eval)x_train,x_test,y_train,y_testtrain_test_split(x_train,y_train,test_size0.2,random_state42,stratifyy_train)x_trainpaddle.to_tensor(x_train,dtypefloat32) y_trainpaddle.to_tensor(y_train,dtypeint64) x_testpaddle.to_tensor(x_test,dtypefloat32) y_testpaddle.to_tensor(y_test,dtypeint64) x_evalpaddle.to_tensor(x_eval,dtypefloat32) 这是必要的可以随时利用测试集查看准确率 四、加载预训练模型选择损失函数和优化器 learning_rate0.001 epochs 5 # 迭代轮数 batch_size 50 # 批次大小 weight_decay1e-5 num_class12cnnresnet50(pretrainedTrue) checkpointpaddle.load(checkpoint.pdparams)for param in cnn.parameters():param.requires_gradFalse cnn.fc nn.Linear(2048, num_class) cnn.set_dict(checkpoint[cnn_state_dict]) criterionnn.CrossEntropyLoss() optimizer paddle.optimizer.Adam(learning_ratelearning_rate, parameterscnn.fc.parameters(),weight_decayweight_decay) 第一次训练把加载模型注释掉即可优化器包含最后一层全连接的参数 五、模型训练  if x_train.shape[3]3:x_trainpaddle.transpose(x_train,perm(0,3,1,2))dataset paddle.io.TensorDataset([x_train, y_train]) data_loader DataLoader(dataset, batch_sizebatch_size, shuffleTrue) for epoch in range(epochs):for batch_data, batch_labels in data_loader:outputs cnn(batch_data)loss criterion(outputs, batch_labels)print(epoch)loss.backward()optimizer.step()optimizer.clear_grad()print(fEpoch [{epoch1}/{epochs}], Loss: {loss.numpy()[0]})#保存参数 paddle.save({cnn_state_dict: cnn.state_dict(),}, checkpoint.pdparams)使用批处理这个很重要不然平台分分钟炸了 六、测试集准确率 num_class12 batch_size64 cnnresnet50(pretrainedTrue) checkpointpaddle.load(checkpoint.pdparams)for param in cnn.parameters():param.requires_gradFalse cnn.fc nn.Linear(2048, num_class) cnn.set_dict(checkpoint[cnn_state_dict])cnn.eval()if x_test.shape[3]3:x_testpaddle.transpose(x_test,perm(0,3,1,2)) dataset paddle.io.TensorDataset([x_test, y_test]) data_loader DataLoader(dataset, batch_sizebatch_size, shuffleTrue)with paddle.no_grad():score0for batch_data, batch_labels in data_loader:predictions cnn(batch_data)predicted_probabilities paddle.nn.functional.softmax(predictions, axis1)predicted_labels paddle.argmax(predicted_probabilities, axis1) print(predicted_labels)for i in range(len(predicted_labels)):if predicted_labels[i].numpy()batch_labels[i]:score1print(score/len(y_test)) 设置eval模式使用批处理测试准确率