【人工智能】Python中的迁移学习:使用预训练模型进行分类任务

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界

目录

  1. 迁移学习概述
  2. 环境准备与数据预处理
  3. 使用Keras实现迁移学习
  4. 使用PyTorch实现迁移学习
  5. 模型评估与结果分析
  6. 迁移学习技巧与最佳实践
  7. 应用场景与总结

1. 迁移学习概述

迁移学习(Transfer Learning)是机器学习中的一种技术,通过将在一个任务上训练好的模型参数迁移到另一个相关任务中,从而加速模型训练过程并提升模型性能。在计算机视觉领域,常用的预训练模型(如VGG16、ResNet、Inception等)已经在ImageNet数据集上经过充分训练,可以直接用于特征提取或微调(Fine-tuning)。

迁移学习的优势:

  • 节省训练时间:预训练模型已学习通用特征
  • 降低数据需求:适合小样本场景
  • 提升模型性能:利用已有知识提升新任务表现

典型应用场景:

  • 医学影像分类
  • 卫星图像识别
  • 工业缺陷检测
  • 自然场景物体识别

2. 环境准备与数据预处理

2.1 环境配置

# 安装必要库(Keras版本)
!pip install tensorflow keras numpy pandas matplotlib scikit-learn

2.2 数据准备

假设我们使用Kaggle的猫狗分类数据集(包含25000张训练图像)

import os
import numpy as np
from keras.preprocessing.image import ImageDataGenerator# 数据集路径配置
train_dir = '/path/to/train'
validation_dir = '/path/to/validation'
test_dir = '/path/to/test'# 图像预处理参数
img_width, img_height = 224, 224  # 匹配预训练模型输入尺寸
batch_size = 32
num_classes = 2  # 猫和狗分类# 数据增强配置
train_datagen = ImageDataGenerator(rescale=1./255,rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,shear_range=0.2,zoom_range=0.2,horizontal_flip=True,fill_mode='nearest')validation_datagen = ImageDataGenerator(rescale=1./255)# 创建数据生成器
train_generator = train_datagen.flow_from_directory(train_dir,target_size=(img_width, img_height),batch_size=batch_size,class_mode='categorical')validation_generator = validation_datagen.flow_from_directory(validation_dir,target_size=(img_width, img_height),batch_size=batch_size,class_mode='categorical')

3. 使用Keras实现迁移学习

3.1 加载预训练模型

from keras.applications import VGG16
from keras.models import Model
from keras.layers import Dense, GlobalAveragePooling2D, Dropout# 加载VGG16模型(不包括顶层)
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(img_width, img_height, 3))# 冻结卷积基
for layer in base_model.layers:layer.trainable = False# 添加自定义顶层
x = base_model.output
x = GlobalAveragePooling2D()(x)  # 全局平均池化
x = Dense(512, activation='relu')(x)
x = Dropout(0.5)(x)  # 防止过拟合
predictions = Dense(num_classes, activation='softmax')(x)# 构建完整模型
model = Model(inputs=base_model.input, outputs=predictions)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27496.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何安装VM虚拟机

安装 VMware 附官方下载链接(VM 17 pro):https://download3.vmware.com/software/WKST-1701-WIN/VMware-workstation-full-17.0.1-21139696.exe 打开下载好的VMware Workstation 17 Pro安装包; 点击下一步; 勾选我接…

js的简单介绍

一.javascript(是什么) 是一种运行在客户端(浏览器)的编程语言,实现人机交互效果 作用 网页特效(监听客户的一些行为让网页做出对应的反馈)表单验证(针对表格数据的合法性进行判断)数据交互(获取后台的数据&#xf…

绕过 RAG 实时检索瓶颈,缓存增强生成(CAG)如何助力性能突破?

编者按: 你是否曾经遇到过这样的困扰:在开发基于 RAG 的应用时,实时检索的延迟让用户体验大打折扣?或者在处理复杂查询时,检索结果的不准确导致回答质量不尽如人意? 在当前大语言模型应用大规模落地的背景下…

【Java SE】面向对象编程(基础)

面向对象编程(基础) 目录 1.类与对象的关系 2.对象在内存中的存在形式 2.2 注意事项(1) 2.3 注意事项(2) 3.对象的创建方式 4.变量 4.1 成员变量 4.1.1 语法格式 4.1.2 说明 4.2 局部变量 4.2.1…

excel 斜向拆分单元格

右键-合并单元格 右键-设置单元格格式-边框 在设置好分割线后,你可以开始输入文字。 需要注意的是,文字并不会自动分成上下两行。 为了达到你期望的效果,你可以通过 同过左对齐、上对齐 空格键或使用【AltEnter】组合键来调整单元格中内容的…

LeetCode 21. 合并两个有序链表(Python)

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 [], l2 [] 输出:[] 示例 3: 输…

Linux下安装VS Code

Centos 7 https://blog.csdn.net/weixin_63790642/article/details/132927888 安装存储库 sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc密钥 sudo sh -c echo -e "[code]\nnameVisual Studio Code\nbaseurlhttps://packages.microsoft.com/yum…

【软考-架构】2.1、操作系统概述-进程管理-同步互斥

✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 操作系统知识操作系统概述进程组成和状态💯考试真题前趋图进程资源图💯考试真题问题1问题2 ✨【重点】进程同步与互斥✨💯考试真题问题…

养老小程序方案详解居家养老小程序系统

养老小程序,上门居家养老小程序,用户端护工端小程序,管理后台。php开发语言,可源码搭建,二次开发或者定制开发。 一 用户端:小程序 核心功能模块:用户完善个人健康档案,在线选择服…

基于NI USRP 硬件的下一代O-RAN研究测试台​

目录 基于NI SDR硬件的下一代O-RAN研究测试台​挑战:解决方案: 基于NI SDR硬件的下一代O-RAN研究测试台​ “OAIC提供了一个开放平台(包括软件架构、库和工具集),用于对基于AI的无线接入网(RAN)控制器进行原型开发和测…

磁盘空间不足|如何安全清理以释放磁盘空间(开源+节流)

背景: 最近往数据库里存的东西有点多,磁盘不够用 查看磁盘使用情况 df -h /dev/sda5(根目录 /) 已使用 92% 咱们来开源节流 目录 背景: 一、开源 二、节流 1.查找 大于 500MB 的文件: 1. Snap 缓存…

WP 高级摘要插件:助力 WordPress 文章摘要精准自定义显示

wordpress插件介绍 “WP高级摘要插件”功能丰富,它允许用户在WordPress后台自定义文章摘要。 可设置摘要长度,灵活调整展示字数;设定摘要最后的显示字符, 如常用的省略号等以提示内容未完整展示;指定允许在摘要中显示…

健康医疗大数据——医疗影像

一、 项目概述 1.1 项目概述 1.2 项目框架 1.3 项目环境 1.4 项目需求 二、项目调试与运行 2.1需求分析 2.2具体实现 三、项目总结 项目概述 项目概述 本项目旨在应用大数据技术于医疗影像领域,通过实训培养团队成员对医疗大数据处理和分析的实际…

C# OnnxRuntime部署DAMO-YOLO人头检测

目录 说明 效果 模型信息 项目 代码 下载 参考 说明 效果 模型信息 Model Properties ------------------------- --------------------------------------------------------------- Inputs ------------------------- name:input tensor:Floa…

VPC2-多域攻击-tomcat渗透-通达oa-域控提权-密码喷射-委派攻击-数据库提权

下载链接: https://pan.baidu.com/s/1nUYj6G9ouj6BcumDgoDaGg 提取码: ejbn jishu域 windows 2008 tomcat渗透 访问发现tomcat 点击manage app 尝试弱口令进入,发现tomcat/tomcat成功进入 用哥斯拉生成后门 然后建立一个文件夹,把它放进去,把它改名…

Linux知识-第一天

Linux的目录机构为一个树型结构 其没有盘符这个概念,只有一个根目录,所有文件均在其之下 在Linux系统中,路径之间的层级关系 使用 / 开头表示根目录,后面的表示层级关系 Linux命令入门 Linux命令基础 Linux命令通用格式 comman…

【蓝桥杯单片机】第十二届省赛

一、真题 二、模块构建 1.编写初始化函数(init.c) void Cls_Peripheral(void); 关闭led led对应的锁存器由Y4C控制关闭蜂鸣器和继电器 由Y5C控制 2.编写LED函数(led.c) void Led_Disp(unsigned char ucLed); 将ucLed取反的值赋给P0 开启锁存器…

FPGA开发,使用Deepseek V3还是R1(7):以“FPGA的整体设计框架”为例

以下都是Deepseek生成的答案 FPGA开发,使用Deepseek V3还是R1(1):应用场景 FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别 FPGA开发,使用Deepseek V3还是R1&#x…

Linux进程状态

一.基础知识 在进入到Linux进程状态学习之前,我们先学习一些基础知识: 1.1并发和并行 并发: 在单CPU的计算机中,并不是把当前进程执行完毕之后再执行下一个,而是给每个进程都分配一个时间片,基于时间片进…

【含文档+PPT+源码】基于SpringBoot电脑DIY装机教程网站的设计与实现

项目介绍 本课程演示的是一款 基于SpringBoot电脑DIY装机教程网站的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…