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

【机器学习范式】监督学习,无监督学习,强化学习, 半监督学习,自监督学习,迁移学习,对比分析+详解与示例代码

     目录

1. 监督学习 (Supervised Learning):

2. 无监督学习 (Unsupervised Learning):

3. 强化学习 (Reinforcement Learning):

4. 半监督学习 (Semi-Supervised Learning):

5. 自监督学习 (Self-Supervised Learning):

6. 迁移学习 (Transfer Learning):

7 机器学习范式应用分析 

        机器学习(Machine Learning,ML)有不同的范式,这些范式描述了学习算法如何从数据中提取模式和知识。以下是几种常见的机器学习范式:

1. 监督学习 (Supervised Learning):

  • 定义: 监督学习是一种机器学习任务,其中算法通过学习从输入到输出的映射关系来进行训练。训练数据包含有标签的样本,即每个输入都与相应的输出相关联。
  • 例子: 分类和回归任务是监督学习的例子。例如,手写数字识别和房价预测。
  • 代码:
  • from sklearn.datasets import load_digits
    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LogisticRegression
    from sklearn.metrics import accuracy_score# 加载手写数字数据集
    digits = load_digits()
    X, y = digits.data, digits.target# 划分数据集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建并拟合模型
    model = LogisticRegression()
    model.fit(X_train, y_train)# 预测
    predictions = model.predict(X_test)# 评估模型
    accuracy = accuracy_score(y_test, predictions)
    print(f'Accuracy: {accuracy}')
    

2. 无监督学习 (Unsupervised Learning):

  • 定义: 无监督学习涉及从未标记的数据中学习数据的结构、模式或分布。训练数据不包含目标变量。
  • 例子: 聚类和降维是无监督学习的例子。例如,K均值聚类和主成分分析(PCA)。
  • 代码:
  • from sklearn.cluster import KMeans
    from sklearn.datasets import make_blobs
    import matplotlib.pyplot as plt# 创建一个带有明显簇结构的合成数据集
    X, _ = make_blobs(n_samples=300, centers=4, cluster_std=1.0, random_state=42)# 使用K均值进行聚类
    kmeans = KMeans(n_clusters=4)
    kmeans.fit(X)# 预测每个样本的簇标签
    labels = kmeans.predict(X)# 可视化聚类结果
    plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
    plt.title('K-Means Clustering')
    plt.show()
    

3. 强化学习 (Reinforcement Learning):

  • 定义: 强化学习是一种通过观察环境、执行动作并从奖励中学习的学习方式。它旨在使智能体(agent)在环境中学会采取一系列动作,以最大化累积奖励。
  • 例子: AlphaGo 是一个著名的强化学习应用,通过与自己下围棋的对局进行训练,最终成为世界冠军。
  • 代码:
  • # 强化学习示例代码通常涉及使用专门的库(如TensorFlow、PyTorch)和环境(如OpenAI Gym)。
    # 以下是一个简化的伪代码示例:# 伪代码示例
    # 创建环境
    env = ...# 创建智能体
    agent = ...# 迭代训练
    for episode in range(num_episodes):state = env.reset()total_reward = 0# 迭代每个时间步while not done:# 智能体选择动作action = agent.choose_action(state)# 执行动作,获取奖励和下一个状态next_state, reward, done, _ = env.step(action)# 智能体学习agent.learn(state, action, reward, next_state)# 更新状态state = next_statetotal_reward += reward# 打印每个周期的总奖励print(f'Episode {episode + 1}, Total Reward: {total_reward}')
    

4. 半监督学习 (Semi-Supervised Learning):

  • 定义: 半监督学习是一种综合了有标签数据和未标签数据的学习方式。模型通过同时使用这两种类型的数据进行训练,以提高性能。
  • 例子: 在半监督学习中,可以使用少量带有标签的数据和大量未标签的数据进行模型训练。
  • 示例代码:
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score# 加载手写数字数据集
digits = load_digits()
X, y = digits.data, digits.target# 划分数据集,只使用少量带有标签的样本
X_labeled, X_unlabeled, y_labeled, _ = train_test_split(X, y, test_size=0.9, random_state=42)# 创建并拟合模型
model = RandomForestClassifier()
model.fit(X_labeled, y_labeled)# 预测
predictions = model.predict(X_unlabeled)# 评估模型(在半监督学习中,可能需要一些领域专家的帮助来评估性能)# 假设我们有一些手动标记的未标记数据的真实标签
# 在实际应用中,这个步骤可能需要领域专家的帮助
true_labels_for_unlabeled = ...# 评估模型性能(这里简单使用准确度)
accuracy = accuracy_score(true_labels_for_unlabeled, predictions)print(f'Model Accuracy: {accuracy * 100:.2f}%')

        在这个例子中,我们假设有一些手动标记的未标记数据的真实标签 (true_labels_for_unlabeled)。在实际应用中,获取这些标签可能需要领域专家的帮助。评估模型的性能可以使用不同的指标,具体取决于问题的性质。在这里,我们简单地使用准确度作为评估指标。可以根据实际情况选择适当的评估指标。 

5. 自监督学习 (Self-Supervised Learning):

  • 定义: 自监督学习是一种无监督学习的变体,其中模型通过自动生成标签或任务来学习。这些任务通常是通过对输入数据进行某种变换或转换来生成的。
  • 例子: 图像旋转任务是自监督学习的一种示例,模型学会预测图像是否被旋转过。
  • 示例代码:
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import transforms
from torch.utils.data import DataLoader
from torchvision.datasets import MNIST
import matplotlib.pyplot as plt# 自定义旋转函数
class RotateImage(nn.Module):def __init__(self, degrees):super(RotateImage, self).__init__()self.degrees = degreesdef forward(self, x):return torch.rot90(x, self.degrees, [2, 3])# 构建自监督学习模型
class SelfSupervisedModel(nn.Module):def __init__(self):super(SelfSupervisedModel, self).__init__()self.rescale = nn.functional.rescale_intensityself.rotate = RotateImage(degrees=1)def forward(self, x):x_rotated = self.rotate(x)return torch.cat([x_rotated, x], dim=1)# 超参数
batch_size = 64
learning_rate = 0.001
epochs = 5# 加载MNIST数据集
transform = transforms.Compose([transforms.Grayscale(num_output_channels=1),transforms.ToTensor()])
mnist_dataset = MNIST(root='./data', train=True, download=True, transform=transform)
dataloader = DataLoader(mnist_dataset, batch_size=batch_size, shuffle=True)# 初始化模型、损失函数和优化器
model = SelfSupervisedModel()
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=learning_rate)# 训练模型
for epoch in range(epochs):for data in dataloader:images, _ = data# 梯度清零optimizer.zero_grad()# 前向传播outputs = model(images)# 计算损失loss = criterion(outputs, torch.zeros_like(outputs))# 反向传播loss.backward()# 更新权重optimizer.step()print(f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item()}')# 可视化旋转后的图像
with torch.no_grad():sample = next(iter(dataloader))original_images, _ = samplerotated_images = model.rotate(original_images)plt.figure(figsize=(8, 4))for i in range(4):plt.subplot(2, 4, i + 1)plt.imshow(original_images[i][0], cmap='gray')plt.title('Original')plt.axis('off')plt.subplot(2, 4, i + 5)plt.imshow(rotated_images[i][0], cmap='gray')plt.title('Rotated')plt.axis('off')plt.show()

6. 迁移学习 (Transfer Learning):

  • 定义: 迁移学习是一种将一个领域中学到的知识应用于另一个领域的学习方式。它通过在源领域上训练的模型或知识来提高在目标领域上的性能。
  • 例子: 在自然语言处理中,使用在大型文本语料库上预训练的词嵌入模型(如Word2Vec或GloVe)来改善在特定任务上的性能。
  • 代码:使用预训练的词嵌入模型进行情感分析

    在自然语言处理中,情感分析是一项常见的任务,涉及判断文本中的情感倾向,如正面、负面或中性。为了提高情感分析任务的性能,可以使用在大型文本语料库上预训练的词嵌入模型,如Word2Vec或GloVe。

import torch
import torch.nn as nn
import torch.optim as optim
from torchtext.vocab import GloVe
from torchtext.data import Field, BucketIterator, TabularDataset# 定义数据处理
TEXT = Field(tokenize='spacy', include_lengths=True)
LABEL = Field(sequential=False, use_vocab=False, dtype=torch.float)# 加载IMDb电影评论数据集(示例数据)
train_data, test_data = TabularDataset.splits(path='./data',train='train.csv',test='test.csv',format='csv',fields=[('text', TEXT), ('label', LABEL)]
)# 构建词汇表,并使用预训练的GloVe词嵌入
TEXT.build_vocab(train_data, vectors=GloVe(name='6B', dim=100))
LABEL.build_vocab(train_data)# 定义神经网络模型
class SentimentClassifier(nn.Module):def __init__(self, vocab_size, embedding_dim, hidden_dim, output_dim, n_layers, bidirectional, dropout):super().__init__()self.embedding = nn.Embedding(vocab_size, embedding_dim)self.lstm = nn.LSTM(embedding_dim, hidden_dim, num_layers=n_layers, bidirectional=bidirectional, dropout=dropout, batch_first=True)self.fc = nn.Linear(hidden_dim * 2 if bidirectional else hidden_dim, output_dim)self.dropout = nn.Dropout(dropout)def forward(self, text, text_lengths):embedded = self.embedding(text)packed_embedded = nn.utils.rnn.pack_padded_sequence(embedded, text_lengths, batch_first=True)packed_output, (hidden, cell) = self.lstm(packed_embedded)output, output_lengths = nn.utils.rnn.pad_packed_sequence(packed_output, batch_first=True)hidden = self.dropout(torch.cat((hidden[-2,:,:], hidden[-1,:,:]), dim=1))return self.fc(hidden)# 初始化模型和优化器
model = SentimentClassifier(len(TEXT.vocab), 100, 256, 1, 2, True, 0.5)
model.embedding.weight.data.copy_(TEXT.vocab.vectors)
optimizer = optim.Adam(model.parameters())
criterion = nn.BCEWithLogitsLoss()# 定义数据迭代器
train_iterator, test_iterator = BucketIterator.splits((train_data, test_data),batch_size=64,sort_key=lambda x: len(x.text),sort_within_batch=True,device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')
)# 训练模型
for epoch in range(5):for batch in train_iterator:text, text_lengths = batch.textoptimizer.zero_grad()predictions = model(text, text_lengths).squeeze(1)loss = criterion(predictions, batch.label)loss.backward()optimizer.step()# 在测试集上评估模型
correct_predictions = 0
total_samples = 0with torch.no_grad():for batch in test_iterator:text, text_lengths = batch.textpredictions = model(text, text_lengths).squeeze(1)rounded_predictions = torch.round(torch.sigmoid(predictions))correct_predictions += (rounded_predictions == batch.label).sum().item()total_samples += len(batch.label)accuracy = correct_predictions / total_samples
print(f'Test Accuracy: {accuracy * 100:.2f}%')

        这些机器学习范式代表了不同的学习方法和应用领域。在实际应用中,选择适当的学习范式取决于任务的性质、可用的数据以及问题的复杂性。在许多情况下,研究人员和从业者会结合这些范式,以满足特定应用的需求。

7 机器学习范式应用分析

(1) 监督学习(Supervised Learning):

  • 应用: 在许多领域中广泛应用,如图像分类、语音识别、自然语言处理等。通过提供带有标签的训练数据,模型学习从输入到输出的映射关系。
  • 对比: 需要大量标记数据,对新领域的适应能力有限,对标签噪声敏感。

(2) 无监督学习(Unsupervised Learning):

  • 应用: 在聚类、降维、异常检测等任务中有应用。无需标签,模型试图从数据中学到结构、模式或分布。
  • 对比: 对于某些任务,无监督学习可能更具通用性,但结果的解释性可能较差。

(3)强化学习(Reinforcement Learning):

  • 应用: 在游戏、机器人控制、自动驾驶等领域有应用。智能体通过与环境互动,根据奖励信号学习如何执行动作以达到最大化累积奖励。
  • 对比: 需要定义奖励信号,可能需要长时间的训练,对环境的建模和实时决策要求高。

(4)半监督学习(Semi-Supervised Learning):

  • 应用: 在当标记数据稀缺时,通过同时使用标记和未标记数据来提高模型性能。在医疗图像分析、网络安全等领域有应用。
  • 对比: 比纯监督学习更灵活,但对未标记数据的使用需要谨慎,可能受到未标记数据质量的限制。

(5)自监督学习(Self-Supervised Learning):

  • 应用: 在图像、文本等领域中,通过设计任务来生成标签,然后使用这些生成的标签进行训练。在图像领域,如图像旋转任务;在文本领域,如语言模型预训练。
  • 对比: 无需人工标签,具有良好的可扩展性和泛化性,适用于大规模数据。

(6) 迁移学习(Transfer Learning):

  • 应用: 在一个领域训练的知识被应用到另一个相关领域。在自然语言处理中,使用预训练的词嵌入模型进行情感分析,或在计算机视觉中,使用在大规模图像数据上预训练的卷积神经网络进行图像分类。
  • 对比: 可以节省大量训练时间,适用于目标任务数据有限的情况,但前提是源领域和目标领域存在一定的相关性。

相关文章:

【机器学习范式】监督学习,无监督学习,强化学习, 半监督学习,自监督学习,迁移学习,对比分析+详解与示例代码

目录 1. 监督学习 (Supervised Learning): 2. 无监督学习 (Unsupervised Learning): 3. 强化学习 (Reinforcement Learning): 4. 半监督学习 (Semi-Supervised Learning): 5. 自监督学习 (Self-Supervised Learning): 6. 迁移学习 (Transfer Learning): 7 机器学习范式应…...

JUC包下面的四大天王+线程池部分知识

一)Semphore:限流器用我就对了 Java中信号量Semphore是把操作系统原生的信号量封装了一下,本质就是一个计数器,描述了 可用资源的个数,主要涉及到两个操作 如果计数器为0了,继续Р操作,就会出现阻塞等待的情况 P操作:申…...

AGV系统控制位置管理功能

# ファイル: agv_locattion.py # 説明: AGV (Automated Guided Vehicle) の位置情報を管理し、UDPサーバーとして動作するGUIアプリケーションです。 # 必要なライブラリをインポート import tkinter as tk import socket import threading def AGV_handle_submit(canvas, st…...

JavaScript从入门到精通系列第三十三篇:详解正则表达式语法(二)

文章目录 一:正则表达式 1: 检查一个字符串中是否有. 2:第二种关键表达 3:第三种关键表达 ​编辑4:第四种关键表达 5:第五种关键表达 6:第六种关键表达 二:核心表达二 1&am…...

由于找不到 d3dx9_43.dll,无法继续执行代码。重新安装程序可能会解决此问题

电脑出现d3dx9_43.dll缺失的问题,通常是由于DirectX组件未安装或损坏导致的。为了解决这个问题,我为您提供了以下四个解决方法: d3dx9_43.dll解决方法1. 使用dll修复程序修复 首先,使用系统文件程序dll进行修复操作非常简单&…...

AI全栈大模型工程师(二十一)LangChain和SemanticKernel怎么选

LangChain 和 Semantic Kernel 怎么选? #%% md 划重点: 两者都值得学C#、JavaScript 和 Java 现在没得选做原型,首选 LangChain。功能多,开发快做产品,还是 SK 长期更可依赖建议只用 SK 的 Connectors 和 Plugins 能力…...

npm install 报错 chromedriver 安装失败的解决办法

npm install chromedriver --chromedriver_cdnurlhttp://cdn.npm.taobao.org/dist/chromedriver...

C语言--每日五道选择题--Day6

第一题 1、声明以下变量,则表达式: ch/i (f*d – i) 的结果类型为( ) char ch; int i; float f; double d; A: char B: int C: float D: double 答案及解析 D 基本数据类型的等级从低到高如下:char-> int-> long-> f…...

element-ui 封装 表格

一、封装表格组件 <template><el-table :data"list" :default-sort"{ prop: date }" style"width: 100%"><template v-for"item in tableColumn"><el-table-columnv-if"item.filters":prop"item…...

数据的使用、表关系的创建、Django框架的请求生命周期流程图

目录 一、数据的增删改查 1. 用户列表的展示 2. 修改数据的逻辑分析 3. 删除功能的分析 二、如何创建表关系 三、Django的请求生命周期流程图 一、数据的增删改查 1. 用户列表的展示 把数据表中得用户数据都给查询出来展示在页面上 查询数据 def userlist(request):&qu…...

Python基础教程:类--继承和方法的重写

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 什么是继承 继承就是让类与类之间产生父子关系&#xff0c;子类可以拥有父类的静态属性和方法 继承就是可以获取到另一个类中的静态属性和普通方法&#xff08;并非所有成员&#xff09; 在python中&#xff0c;新建的类可…...

Three.js提供了多种类型的灯光

Three.js提供了多种类型的灯光&#xff0c;包括环境光、点光源、平行光源和聚光灯。这些灯光可以用来照亮场景中的物体&#xff0c;使其看起来更加真实。 环境光(AmbientLight)&#xff1a;环境光会均匀地照亮场景中的所有物体&#xff0c;没有方向&#xff0c;不能用来投射阴…...

精通Nginx(10)-负载均衡

负载均衡就是将前端过来的负载分发到两台或多台应用服务器。Nginx支持多种协议的负载均衡,包括http(s)、TCP、UDP(关于TCP、UDP负载均衡另文讲述)等。 目录 HTTP负载均衡 负载均衡策略 轮询 least_conn(最少连接) hash(通用哈希) ip_hash(IP 哈希) random(随…...

Hls学习(一)

1&#xff1a;CPU、DSP、GPU都算软件可编程的硬件 2&#xff1a;dsp在递归方面有所减弱&#xff0c;在递归方面有所增强&#xff0c;比如递归啊等&#xff0c;GPU可以同时处理多个进程&#xff0c;对于大块数据&#xff0c;流处理比较适用 3&#xff1a;为了提高运算量处理更多…...

Maven打包引入本地依赖包

Maven打包引入本地依赖包 SpringBoot 工程&#xff0c;Maven 在构建项目时&#xff0c;如何引入本地 Jar 包&#xff1f; 适合场景&#xff1a; 引用的依赖不在 Maven 仓库第三方公司提供的 SDK 包Maven 内网离线开发引入被定制改动过的 Jar 包 解决方法&#xff1a; 在 I…...

Docker常用命令及部署微服务项目

Docker常用命令及部署微服务项目 1、Docker常用命令 1、设置Yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 2、安装docker yum -y install docker-ce 3、启动docker service docker start 4、验证 docker version 5…...

okhttp添加公共参数

在项目开发中很多时候后台都会给一些全局的公共入参&#xff0c;比如携带手机信息或者时间戳等字段。而我们在使用okhttp时&#xff0c;就需要我们单独就行二次封装处理了&#xff0c;对于请求全局参数&#xff0c;每次请求都要去写一次&#xff0c;那是肯定不行的。 所以就要我…...

基于SpringBoot的SSMP整合案例(开启日志与分页查询条件查询功能实现)

开启事务 导入Mybatis-Plus框架后&#xff0c;我们可以使用Mybatis-Plus自带的事务&#xff0c;只需要在配置文件中配置即可 使用配置方式开启日志&#xff0c;设置日志输出方式为标准输出mybatis-plus:global-config:db-config:table-prefix: tb_id-type: autoconfiguration:…...

android studio 修改图标

Android Studio 修改图标 简介 Android Studio 是一款由谷歌推出的用于开发 Android 应用程序的集成开发环境&#xff08;IDE&#xff09;。在开发过程中&#xff0c;我们可以根据自己的需求修改 Android Studio 的图标&#xff0c;以个性化我们的开发环境。 本文将介绍如何在…...

pytorch学习之第二课之预测温度

主要有以下几个步骤 第一&#xff1a;导入相应的工具包 第二&#xff1a;导入需要使用的数据集 第三&#xff1a;对导入的数据集输入进行预处理&#xff0c;找出特征与标签&#xff0c;查看数据特征的类型&#xff0c;判断是否需要标准化或者归一化处理 第四&#xff1a;构建神…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...