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

网站建设费计入 科目建网站内容

网站建设费计入 科目,建网站内容,四川省的住房和城乡建设厅网站,中国平安财产保险公司官网目录 一、环境准备二、基于Pytorch的预训练模型1、准备数据集2、加载预训练模型3、 使用pytorch进行模型构建 三、基于keras的预训练模型四、模型测试五、参考 现在大多数的模型都会上传到huggface平台进行统一的管理#xff0c;transformer库能关联到huggface中对应的模型transformer库能关联到huggface中对应的模型并且提供简洁的transformer模型调用这大大提高了开发人员的开发效率。本博客主要利用transformer库实现一个简单的模型微调以进行图像分类的任务。 一、环境准备 使用终端命令行安装对应的第三方包具体安装命令输入如下 pip install transformers datasets evaluate二、基于Pytorch的预训练模型 由于下面这些内容需要在huggface上申请账号权限才能进行模型和数据集加载如果之前有从huggface上拉取模型和数据集的经验可以略过如果没有配置过可以参考笔者之前的文章https://blog.csdn.net/qq_40734883/article/details/143922095然后直接申请Write权限就可以。 后续所有涉及到的数据集food101和transformer模型都需要参考上述文章进行直接下载才能运行整个程序或者在google的colab直接运行。 如果在google的colab上运行请提前设置好电脑的GPU资源同时加入huggface登录代码具体如下 from huggingface_hub import notebook_login notebook_login()运行之后会提示进行token输入按之前获取到的token输入即可。 1、准备数据集 这里以food101数据集作为微调数据集在imagenet-21k上训练完成的transformer模型vit-base-patch16-224进行优化 from datasets import load_datasetfood load_dataset(food101, splittrain[:5000])# 划分数据集训练集:测试集8:2food有两个键一个train一个test food food.train_test_split(test_size0.2) # 标签转换 labels food[train].features[label].names label2id, id2label dict(), dict() for i, label in enumerate(labels):label2id[label] str(i)id2label[str(i)] label id2label为通过id访问标签的字典后续会使用到。 2、加载预训练模型 from transformers import AutoImageProcessorcheckpoint google/vit-base-patch16-224-in21k # ImageNet-21k上的预训练模型 image_processor AutoImageProcessor.from_pretrained(checkpoint) # 从huggface拉取并加载模型3、 使用pytorch进行模型构建 from torchvision.transforms import RandomResizedCrop, Compose, Normalize, ToTensor# 数据预处理操作定义 normalize Normalize(meanimage_processor.image_mean, stdimage_processor.image_std) size (image_processor.size[shortest_edge]if shortest_edge in image_processor.sizeelse (image_processor.size[height], image_processor.size[width]) ) _transforms Compose([RandomResizedCrop(size), ToTensor(), normalize])# 对原始数据进行RGB及字典化 def transforms(examples):examples[pixel_values] [_transforms(img.convert(RGB)) for img in examples[image]]del examples[image]return examplesfood food.with_transform(transforms)# 验证 import evaluate # 指定验证过程中的评价指标-准确率 accuracy evaluate.load(accuracy)import numpy as np def compute_metrics(eval_pred):predictions, labels eval_predpredictions np.argmax(predictions, axis1)return accuracy.compute(predictionspredictions, referenceslabels)训练设置和运行具体输入代码如下 # 整合训练中的数据以便在模型训练或评估过程中使用 from transformers import DefaultDataCollator data_collator DefaultDataCollator()from transformers import AutoModelForImageClassification, TrainingArguments, Trainer# 初始化模型 model AutoModelForImageClassification.from_pretrained(checkpoint,num_labelslen(labels),id2labelid2label,label2idlabel2id, )# 设置模型优化参数 training_args TrainingArguments(output_dirmy_awesome_food_model,remove_unused_columnsFalse,evaluation_strategyepoch,save_strategyepoch,learning_rate5e-5,per_device_train_batch_size16,gradient_accumulation_steps4,per_device_eval_batch_size16,num_train_epochs3,warmup_ratio0.1,logging_steps10,load_best_model_at_endTrue,metric_for_best_modelaccuracy,push_to_hubTrue, )# 初始化训练实例 trainer Trainer(modelmodel,argstraining_args,data_collatordata_collator,train_datasetfood[train],eval_datasetfood[test],tokenizerimage_processor,compute_metricscompute_metrics, )trainer.train() # 开始训练trainer.push_to_hub() # 推送到huggfacehub经过上述设置训练完成之后会将模型微调结果推送到huggface平台如果不想推送可以不运行相关的命令行并且training_args中的push_to_hubFalse。 训练结果如下图所示 默认需要选择是否关联wandb如果不想选择直接根据设置提示跳过即可。 如果选择了推送到huggfacehubtrainer.push_to_hub() 的话在个人的huggface上会有一个名为my_awesome_food_model的模型里面包含了模型训练的各个参数设置和测试结果。 三、基于keras的预训练模型 使用transflow的keras API 进行模型的搭建具体代码如下 from transformers import create_optimizer# 超参数设置 batch_size 16 num_epochs 5 num_train_steps len(food[train]) * num_epochs learning_rate 3e-5 weight_decay_rate 0.01# 定义优化方式和策略 optimizer, lr_schedule create_optimizer(init_lrlearning_rate, num_train_stepsnum_train_steps, weight_decay_rateweight_decay_rate, num_warmup_steps0)# 定义分类器 from transformers import TFAutoModelForImageClassification model TFAutoModelForImageClassification.from_pretrained(checkpoint, id2labelid2label, label2idlabel2id)# converting our train dataset to tf.data.Dataset tf_train_dataset food[train].to_tf_dataset(columnspixel_values, label_colslabel, shuffleTrue, batch_sizebatch_size, collate_fndata_collator)# converting our test dataset to tf.data.Dataset tf_eval_dataset food[test].to_tf_dataset(columnspixel_values, label_colslabel, shuffleFalse, batch_sizebatch_size, collate_fndata_collator)# 定义损失函数 from tensorflow.keras.losses import SparseCategoricalCrossentropy loss tf.keras.losses.SparseCategoricalCrossentropy(from_logitsTrue)model.compile(optimizeroptimizer, lossloss)from transformers.keras_callbacks import KerasMetricCallback, PushToHubCallback # 定义验证指标 metric_callback KerasMetricCallback(metric_fncompute_metrics, eval_datasettf_eval_dataset) # 推送到huggface回调函数 push_to_hub_callback PushToHubCallback(output_dirfood_classifier, tokenizerimage_processor, save_strategyno) callbacks [metric_callback, push_to_hub_callback]# 开始训练 model.fit(tf_train_dataset, validation_datatf_eval_dataset, epochsnum_epochs, callbackscallbacks)四、模型测试 这里使用微调好的模型在food101上找一张验证图像进行简单的验证测试具体代码如下 # 验证food中验证集的某一张图像 ds load_dataset(food101, splitvalidation[-5:-1]) image ds[image][-1]# visualize image import matplotlib.pyplot as plt plt.imshow(image) plt.axis(off) plt.show()测试图像如下所示 from transformers import pipeline # initialize classifier instance classifier pipeline(image-classification, modelmy_awesome_food_model) classifier(image)from transformers import AutoImageProcessor import torch # load pre-trained image processor image_processor AutoImageProcessor.from_pretrained(my_awesome_food_model) inputs image_processor(image, return_tensorspt)from transformers import AutoModelForImageClassification # laod pre-trained model model AutoModelForImageClassification.from_pretrained(my_awesome_food_model) with torch.no_grad():logits model(**inputs).logits# 输出测试结果 predicted_label logits.argmax(-1).item() print(model.config.id2label[predicted_label])输出结果如下所示 Device set to use cuda:0 [{label: ramen, score: 0.9517934918403625},{label: bruschetta, score: 0.7566707730293274},{label: hamburger, score: 0.7004948854446411},{label: chicken_wings, score: 0.6275856494903564},{label: prime_rib, score: 0.5991673469543457}]预测结果为ramen。 释义“ramen”一词源于日语“ラーメン”是“拉面”的意思。它进一步追溯至汉语“拉面”是一种起源于中国、流行于日本及其他东亚地区的面条食品。在日本拉面通常由小麦面粉制成的面条搭配肉汤和各种配料如叉烧、鸡蛋、蔬菜等。 五、参考 [1] https://huggingface.co/docs/transformers/main/tasks/image_classification [2] https://github.com/huggingface/transformers/blob/main/docs/source/en/installation.md
http://www.w-s-a.com/news/866928/

相关文章:

  • 四川成都网站制作微信广告平台推广
  • 网站价格网页制作网站开发实训步骤
  • cms 导航网站鹤壁做网站价格
  • 微信营销软件免费版郑州关键词优化费用
  • 邢台专业做网站哪家好临沂网站建设中企动力
  • 建设网站是主营成本吗wordpress 后台
  • 猎头可以做单的网站企业网站建设
  • 建小程序需要网站吗在putty上怎样安装wordpress
  • 天津智能网站建设找哪家WordPress相册插件pro
  • 电脑网站页面怎么调大小济宁网站建设软件开发
  • 亿玛酷网站建设广州增城区最新消息
  • 企业网站视频栏目建设方案中企动力网站模板
  • 网站页面策划国外注册域名的网站
  • 百中搜如何做网站排名网站维护一年一般多少钱
  • 镇江地区做网站的公司wordpress说说加分类
  • 深圳高端网站设计免费的关键词优化软件
  • 视频网站公司沈阳网站建设服务
  • 网站全屏代码做网站必须用对方服务器
  • 网站速度慢wordpressssl正式申请后wordpress
  • 那个网站做玉石最专业西瓜创客少儿编程加盟
  • 备案时的网站建设方案书免费软件库
  • 惠州外贸网站建设网站模板 兼容ie8
  • 南京淄博网站建设方案php网站开发实训感想
  • 网站设计的含义只做恐怖片的网站
  • 网站改版方案ppt室内装修公司简介
  • 做色网站wordpress twenty ten
  • 马鞍山建设工程监督站建管处网站免费的海报模板网站
  • 类似百度的网站移动端的网站怎么做的
  • 网站开发需要什么文凭网站分析的优劣势
  • 海尔网站建设不足之处山东网站营销