【TensorFlow Hub】:有 100 个预训练模型等你用
要访问TensorFlow Hub,请单击此处 — https://www.tensorflow.org/hub
一、说明
TensorFlow Hub是一个库,用于在TensorFlow中发布,发现和使用可重用模型。它提供了一种使用预训练模型执行各种任务(如图像分类、文本分析等)的简单方法。
TensorFlow Hub提供了广泛的预训练模型,由TensorFlow和更广泛的机器学习社区的研究人员和工程师开发。
以下是TensorFlow Hub中可用的模型类型的一些示例:
- 图像分类模型:这些模型在标记图像的大型数据集上进行训练,可以将图像分类为各种类别。TensorFlow Hub中一些流行的图像分类模型包括Inception,MobileNet,ResNet和VGG。
- 对象检测模型:这些模型可以检测和定位图像中的对象。TensorFlow Hub中一些流行的对象检测模型包括Faster R-CNN和YOLO。
- 自然语言处理 (NLP) 模型:这些模型可以分析文本并执行情绪分析、文本分类和语言翻译等任务。TensorFlow Hub中一些流行的NLP模型包括BERT和ALBERT。
- 语音识别模型:这些模型可以将语音转录为文本。TensorFlow Hub 中一些流行的语音识别模型包括 wav2vec2、spice 和 yamnet。
- 生成模型:这些模型可以根据输入数据生成新内容,例如图像或文本。TensorFlow Hub中一些流行的生成模型包括Progressive GAN和BigGAN。
- 迁移学习模型:这些模型在大型数据集上预先训练,可以使用较小的数据集针对特定任务进行微调。TensorFlow Hub 中的迁移学习模型可用于各种任务,例如图像分类、对象检测、分割和文本分析。
TensorFlow Hub提供了一种方便的方式来访问这些预先训练的模型,并将其用于各种机器学习任务。这些模型有多种格式,例如 TensorFlow SavedModel、Keras 模型和 TensorFlow.js 模型,可以轻松将它们集成到您的机器学习管道中。
二、安装和使用
2.1 安装 TensorFlow 和 TensorFlow Hub:
在使用 TensorFlow Hub 之前,您需要同时安装 TensorFlow 和 TensorFlow Hub。您可以在命令提示符或终端中使用 pip 安装它们:
pip install tensorflow
pip install tensorflow-hub
这将安装最新版本的TensorFlow和TensorFlow Hub。
三、从 TensorFlow Hub 加载预训练模型:
您可以在TensorFlow Hub网站(https://tfhub.dev/)上浏览可用的模型。
要加载预先训练的模型,您首先需要从TensorFlow Hub网站获取其URL。例如,如果要使用在 ImageNet 2K 数据集上预先训练的EfficientNet_v1_s模型进行图像分类,则可以使用以下 URL:
module_url = "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_s/classification/2"
接下来,您可以使用类和 URL 创建 Keras 层:hub.KerasLayer
import tensorflow as tf
import tensorflow_hub as hubfeature_extractor = hub.KerasLayer(module_url, input_shape=(384,384,3))
在此示例中,我们将创建一个 Keras 层,用于从图像中提取特征。 input_shape 参数指定输入图像的形状,在本例中为 384x384 像素,具有 3 个颜色通道 (RGB)。
3.1 使用预先训练的模型执行任务
加载预训练模型后,可以使用它来执行特定任务。例如,如果您随机拍摄老虎的图像,则可以执行以下操作:
import numpy as np
import PIL.Image as Image
import matplotlib.pyplot as pltimage = Image.open("image.jpg").resize((384,384))
plt.imshow(image)
plt.show()
image_array = np.array(image) / 255.0
image_batch = np.expand_dims(image_array, axis=0)features = feature_extractor(image_batch)
输出:
在此示例中,我们从文件加载图像,将其大小调整为 384x384 像素,显示图像,将其转换为 NumPy 数组,并将其规范化为 0 到 1 之间的值。然后,我们向数组添加一个额外的维度来创建一批图像(因为预训练的模型需要一批图像作为输入)。最后,我们使用预先训练的EfficientNet_v2_s模型对图像进行分类。
labels_file = "https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt"#download labels and creates a maps
downloaded_file = tf.keras.utils.get_file("labels.txt", origin=labels_file)classes = []with open(downloaded_file) as f:labels = f.readlines()classes = [l.strip() for l in labels]
此代码段使用 TensorFlow 库从 Google Cloud Storage 存储桶下载包含 ImageNet 数据集标签的文本文件。文本文件的 URL 存储在 labels_file 变量中。tf.keras.utils.get_file() 然后使用该函数从 URL 指定的 labels_file 下载文件,并将其以名称“labels.txt”保存在本地。 get_file() 函数在本地缓存文件,因此如果再次请求相同的 URL,将使用本地缓存的文件,而不是再次下载文件。
下载文件后,代码将使用 open() 函数打开它并读取其内容。 readlines() 函数返回一个字符串列表,每个字符串代表文件中的一行。然后,代码使用 strip() 函数删除每行中的所有前导或尾随空格,并将清理后的标签存储在名为“classes”的列表中。
生成的类列表包含 ImageNet 数据集的 1001 个类(1000 个主类 + 1 个“背景”类)的标签。该列表可用于将神经网络的输出映射到相应的标签以进行显示或进一步分析。
top_5 = tf.argsort(features, axis=-1, direction="DESCENDING")[0][:5].numpy()features_array = np.array(features)
features_flatten = features_array.flatten()for i, item in enumerate(top_5):class_index = item +1line = classes[class_index].upper()prob = round(features_flatten[item]*10,2)print(f'Predicted class : {line} : with probability : {prob}%')
输出:
Predicted class : TIGER : with probability : 90.79%
Predicted class : TIGER CAT : with probability : 77.36%
Predicted class : JAGUAR : with probability : 37.36%
Predicted class : LYNX : with probability : 29.64%
Predicted class : LEOPARD : with probability : 25.47%
此代码片段使用 TensorFlow 库来预测输入图像的前 5 个最有可能的 ImageNet 类。
变量特征包含输入图像的神经网络模型的输出。 tf.argsort() 函数用于按降序对输出值进行排序并返回排序值的索引。通过使用 [0][:5] 对结果张量进行切片来选择前 5 个索引,然后使用 .numpy() 方法将其转换为 NumPy 数组。
features_array 变量是通过将特征张量转换为 NumPy 数组来创建的。 features_flatten 变量是通过将 features_array 展平为一维数组而创建的。
然后使用 for 循环迭代前 5 个索引。对于每个索引,通过向索引添加 1(因为索引是从 0 开始的,但类标签是从 1 开始的)并将标签转换为大写,从类列表中检索相应的 ImageNet 类标签。
最后,使用 print() 函数将预测的类标签及其相应的概率打印到控制台。输出将显示前 5 个最有可能的 ImageNet 类别中每个类别的预测类别及其对应的概率。
3.2 微调预训练模型(可选):
如果预训练的模型不能完全满足您的要求,您可以通过添加新层或在新数据集上重新训练它来对其进行微调。下面是如何微调新分类任务的EfficientNet_v2_s模型的示例:
import tensorflow as tf
import tensorflow_hub as hub
from tensorflow.keras import layersmodel_url = "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_s/feature_vector/2"
model = hub.KerasLayer(model_url, trainable=True)num_classes = 10 #just an examplefine_tuning_model = tf.keras.Sequential([model,layers.Dense(num_classes, activation='softmax')
])fine_tuning_model.compile(optimizer=tf.keras.optimizers.Adam(),loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),metrics=[tf.keras.metrics.CategoricalAccuracy()]
)epochs = 10
batch_size = 32fine_tuning_model.fit(train_data,epochs=epochs,batch_size=batch_size,validation_data=val_data
)test_loss, test_acc = fine_tuning_model.evaluate(test_data)
print('Test accuracy:', test_acc)
在此示例中,我们通过添加新的密集层进行分类来创建新模型。然后,我们使用优化器、损失函数和指标编译模型。最后,我们在指定数量的 epoch 的新数据集上训练模型。
四、结论
这些是安装和使用 TensorFlow Hub 的基本步骤。TensorFlow Hub 提供了更多功能,例如缓存、版本控制等,因此请务必查看文档以获取更多信息。
资料引用:
A.瓦斯瓦尼,N.沙泽尔,N.帕尔马,J.乌什科雷特,L.琼斯,A.戈麦斯,{.凯撒 阿琼·萨卡尔
相关文章:
【TensorFlow Hub】:有 100 个预训练模型等你用
要访问TensorFlow Hub,请单击此处 — https://www.tensorflow.org/hub 一、说明 TensorFlow Hub是一个库,用于在TensorFlow中发布,发现和使用可重用模型。它提供了一种使用预训练模型执行各种任务(如图像分类、文本分析等…...
vulnhub靶机doubletrouble
下载地址:doubletrouble: 1 ~ VulnHub 主机发现 arp-scan -l 端口扫描 nmap --min-rate 1000 -p- 192.168.21.151 端口服务扫描 nmap -sV -sT -O -p22,80 192.168.21.151 漏洞扫描 nmap --scriptvuln -p22,80 192.168.21.151 先去看看web页面 这里使用的是qdpm …...
【数据结构】排序算法(二)—>冒泡排序、快速排序、归并排序、计数排序
👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.冒泡排序 2.快速排序 2.1Hoare版 2.2占…...
SpringCloud-消息组件
1 简介 了解过RabbitMQ后,可能我们会遇到不同的系统在用不同的队列。比如系统A用的Kafka,系统B用的RabbitMQ,但是没了解过Kafka,因此可以使用Spring Stream,它能够屏蔽地产,像JDBC一样,只关心SQ…...
oringin的x轴(按x轴规定值)绘制不规律的横坐标
1.双击x轴 2.选择刻度线标签 3.选择刻度...
ubuntu安装MySQL
一行指令即可! sudo apt install mysql-server常用MySQL服务指令 sudo service mysql status # 查看服务状态 sudo service mysql start # 启动服务 sudo service mysql stop # 停止服务 sudo service mysql restart # 重启服务终端里面进入Mysql 其中-u后面root是我的用户名…...
背包问题学习笔记-多重背包问题
题意描述: 有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。 输出最大价值。输入格式 第一行两个整数…...
Net相关的各类开源项目
Net相关的各类开源项目 WPFHandyControlLive-ChartsWPFDeveloperswpf-uidesignStylet WebScheduleMasterYiShaAdminBlog.CoreNebula.AdminNewLife.CubeOpenAuth UnityuGUIUnityCsReferenceEpitomeMyUnityFrameWorkKSFrameworkTowerDefense-GameFramework-Demo 通用ClientServer…...
阿里云服务器修改IP地址的两种方法
阿里云服务器可以更换IP地址吗?可以的,创建6小时以内的云服务器ECS可以免费更换三次公网IP地址,超过6小时的云服务器,可以将公网固定IP地址转成弹性EIP,然后通过换绑EIP的方式来更换IP地址。阿里云服务器网分享阿里云服…...
SpringMVC的数据绑定
一、前言 SpringMVC的数据绑定是指将HTTP请求参数绑定到Java对象上。这样可以方便地从请求中获取数据并将其传递给业务逻辑。在SpringMVC中,可以使用RequestParam和ModelAttribute等注解来实现数据绑定。 二、使用RequestParam注解 RequestParam注解用于将请求参…...
1.1.OpenCV技能树--第一单元--OpenCV简介
目录 1.文章内容来源 2.OpenCV简介 3.课后习题代码复现 4.易错点总结与反思 1.文章内容来源 1.题目来源:https://edu.csdn.net/skill/practice/opencv-77f629e4593845b0bf97e74ca8ec95ae/8292?languageopencv&materialId20807 2.资料来源:https://edu.csdn.net/skill…...
transformer不同的包加载模型的结构不一样
AutoModel AutoModelForTokenClassification 结论: AutoModel加载的模型与AutoModelForTokenClassification最后一层是不一样的,从这个模型来看,AutoModelForTokenClassification加载的结果是对的 问题: 为什么AutoModel和Aut…...
【MyBatis-Plus】快速精通Mybatis-plus框架—核心功能
刚才的案例中都是以id为条件的简单CRUD,一些复杂条件的SQL语句就要用到一些更高级的功能了。 1.条件构造器 除了新增以外,修改、删除、查询的SQL语句都需要指定where条件。因此BaseMapper中提供的相关方法除了以id作为where条件以外,还支持…...
C语言:选择+编程(每日一练Day9)
目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:自除数 思路一: 题二:除自身以外数组的乘积 思路二: 本人实力有限可能对…...
蓝桥等考Python组别十三级003
第一部分:选择题 1、Python L13 (15分) 运行下面程序,输出的结果是( )。 t = (1, 2, 2, 1, 4, 3, 2) print(t.count(2)) 1234正确答案:C 2、Python L13 (...
2023年CSP-J真题详解+分析数据(选择题篇)
目录 前言 2023CSP-J江苏卷详解 小结 前言 下面由我来给大家讲解一下CSP-J的选择题部分。 2023CSP-J江苏卷详解 1.答案 A 解析:const在C中是常量的意思,其作用是声明一个变量,值从头至尾不能被修改 2.答案 D 解析:八进制…...
基于三平面映射的地形纹理化【Triplanar Mapping】
你可能遇到过这样的地形:悬崖陡峭的一侧的纹理拉伸得如此之大,以至于看起来不切实际。 也许你有一个程序化生成的世界,你无法对其进行 UV 展开和纹理处理。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 三平面映射(Trip…...
初步了解nodejs语法和web模块
在此, 第一个Node.js实例_js firstnode-CSDN博客 通过node运行一个简单的server.js,实现了一个http服务器; 但是还没有解析server.js的代码,下面看一下; require 指令 在 Node.js 中,使用 require 指令来…...
51单片机+EC11编码器实现可调参菜单+OLED屏幕显示
51单片机+EC11编码器实现可调参菜单+OLED屏幕显示 📍相关篇《stc单片机使用外部中断+EC11编码器实现计数功能》 🎈《STC单片机+EC11编码器实现调节PWM输出占空比》 🌼实际操作效果 🍁整个项目实现框架: 📓EC11接线原理图: 📓项目工程简介 📝仅凭借一个EC11编…...
数据结构刷题训练——二叉树篇(一)
📙作者简介: 清水加冰,目前大二在读,正在学习C/C、Python、操作系统、数据库等。 📘相关专栏:C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 👍…...
2023版 STM32实战5 基本定时器中断
基本定时器简介与特性 -1-时钟可分频 -2-计数模式只可以选择累加 -3-只可以用来定时(含中断) 查看时钟源 如图定时器7的时钟最大为72MHZ 定时时间的计算 通用定时器的时间计算公式为 Tout ((arr1)(psc1&…...
css3实现页面元素抖动效果
html <div id"shake" class"shape">horizontal shake</div>js(vue3) function shake(elemId) {const elem document.getElementById(elemId)console.log(获取el, elem)if (elem) {elem.classList.add(shake)setTimeou…...
[架构之路-232]:操作系统 - 文件系统存储方法汇总
目录 前言: 一、文件系统存储方法基本原理和常见应用案例: 二、Windows FAT文件系统 2.1 概述 三、Linux EXT文件系统 3.1 基本原理 3.2 索引节点表(Inode Table) 3.2.1 索引节点表层次结构 3.2.2 间接索引表的大小和表项…...
简述 AOP 动态代理
一、AopAutoConfiguration 源码: Configuration(proxyBeanMethods false) ConditionalOnProperty(prefix "spring.aop", name "auto", havingValue "true", matchIfMissing true) public class AopAutoConfiguration {Configur…...
机器学习基础之《分类算法(8)—随机森林》
一、什么是集成学习方法 1、定义 集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测 谚语:三个臭皮匠顶个诸…...
Python数据攻略-Pandas进行CSV和Excel文件读写
在数据分析的世界里,能够读取和写入不同格式的文件是一项基本而重要的技能。CSV(逗号分隔值)和Excel是两种常见的数据存储格式。它们在商业、科研、教育等多个领域都有广泛应用。 文章目录 读取CSV文件`pd.read_csv()` 文件读取函数的基本用法`DataFrame.to_csv()` 数据写入…...
lv7 嵌入式开发-网络编程开发 13 UNIX域套接字
1 UNIX 域流式套接字 本地地址 struct sockaddr_un {unsigned short sun_family; /* 协议类型 */char sun_path[108]; /* 套接字文件路径 */ };UNIX 域流式套接字的用法和 TCP 套接字基本一致,区别在于使用的协议和地址不同 UNIX 域流式套接字服务器端…...
blender光照系统设置
0)Viewport Shading设置里面的Lighting下面的参数: Scene Lights,Scene World - Scene Lights是指在渲染模式下是否使用场景中的灯光对象来照亮物体。 - Scene World是指在渲染模式下是否使用场景中的世界设置来作为背景和环境光。如果关闭该选项&#…...
华为云云耀云服务器L实例评测|基于canal缓存自动更新流程 SpringBoot项目应用案例和源码
前言 最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到各种问题,在解决问题的过程中学到不少和运维相关的知识。 在之前的博客中,介绍过canal的安装和配置,参考博客 拉取创建canal镜像配置相关参数 & …...
vue3 中使用echarts图表——柱状图
柱状图是比较常用的图形结构,所以我先收集一些精美的柱状图 一、柱状图:设置圆角和颜色 <template><div class"box" ref"chartDom"></div> </template> <script setup> import { ref, onMounted } fr…...
有没有必要为B2B网站做外链/张文宏说上海可能是疫情爆发
一 、重要知识点: ▉1.platform设备模型 从Linux 2.6起引入了一套新的驱动管理和注册机制,platform_device和platform_driver,Linux中大部分的设备驱动都可以使用这套机制。platform是一条虚拟的总线。设备用platform_device表示,驱动用platf…...
ueditor html 转 wordpress/引流软件
今天看到一篇微信文章《我们的认知塌了----关于量子卫星的惊人背景》 此文认为,随着量子卫星上天,人们对量子物理开始感兴趣,但大部分人都搞不明白量子物理到底是怎么回事,作者将有关量子的事科普了一下,结果…...
网站如何连接微信支付宝吗/西安百度seo代理
目录一、鸢尾花数据集分类1.1 取萼片的长宽作特征分类1.2 取花瓣的长宽作特征分类二、总结三、参考资料本文内容:在 Jupyter 下完成一个鸢尾花数据集的线性多分类、可视化显示与测试精度实验。 一、鸢尾花数据集分类 1.1 取萼片的长宽作特征分类 导入相关包 impo…...
自己做网站商城需要营业执照吗/营销网络是什么
文章目录1. helm是什么2. helm为什么出现3. 背景4. 多样性5. 架构1. helm是什么 helm是kubernetes生态系统中的一个软件包管理工具,类似ubuntu的apt,centos的yum或python的pip一样,专门负责管理kubernetes应用资源;使用helm可以对kubernetes…...
网站建设制作设计营销公司杭州/北京建公司网站价格
https://www.cnblogs.com/little-w/p/3579603.html 转自:http://blog.csdn.net/acmaker/article/details/3188177 一、目录 一些历史: 1978年, M.I. Shamoss Ph.D. 的论文"Computational Geometry"标志着计算机科学的这一领域的诞生…...
网站建设网站开发/网络营销软文范文
區域閾值(adaptiveThreshold) 有時候由於拍照時光線不均,所以影像每個區域的灰階值基準不同,這時很難找到一個閾值能適用整張影像,然後得到良好的二值化結果,這時我們可以將影像分成幾個區域,每個區域有各自的閾值&am…...