如何利用PyTorch?

上一篇文章介绍了“What is PyTorch?”,本篇文章探讨一下“How to use PyTorch?”

1、PyTorch

PyTorch 是一个开源机器学习库,基于 Torch 库开发,主要由 Facebook 的人工智能研究实验室(FAIR)研发。它是一个强大且灵活的深度学习框架,以其动态计算图特性而广受欢迎,在人工智能领域的研究和开发中备受欢迎。

PyTorch 提供以下功能:

  1. 动态计算图:PyTorch 支持动态图机制,这意味着在运行时可以实时改变计算图结构,这相较于静态图框架提供了更大的灵活性和更简便的调试过程。

  2. 深度神经网络:它全面支持构建和训练深度神经网络,并通过 autograd 包实现自动微分。

  3. 张量库:类似于 NumPy,PyTorch 拥有丰富的张量库,可在 CPU 和 GPU 上运行,并支持深度学习任务所需的多种数学运算。

  4. 模型训练torch.nn 模块提供了大量模块和损失函数用于构建和训练神经网络,同时包含如梯度下降等优化工具。

  5. 迁移学习与预训练模型:通过 PyTorch Hub 和 torchvision,用户可以获得预训练模型并进行微调或迁移学习。

  6. CUDA 支持:PyTorch 支持 CUDA,这是 NVIDIA 公司的并行计算平台及应用编程接口(API),专为 GPU 设计,使得高性能计算得以实现。

  7. 便捷部署:利用 PyTorch 的 JIT 编译器,模型可以转换成优化过的 C++ 代码,进而以独立应用程序形式部署,或者通过 ONNX 等库部署到移动设备上。

  8. 活跃社区:PyTorch 拥有一个活跃的研究员和实践者组成的社区,他们通过论坛、教程和教育资源等形式持续推动 PyTorch 的发展和完善。

总体来说,PyTorch 在易用性、模块化和性能之间取得了一个良好的平衡,既适合快速原型设计,也适用于生产级别的深度学习项目部署

2、PyTorch的用户规模

       PyTorch 已成为深度学习领域非常流行的框架之一,其用户群体覆盖了学术界和工业界的众多研究者与工程师。由于其灵活的动态图机制、易读易写的代码风格以及强大的社区支持,越来越多的开发者选择 PyTorch 作为他们的首选深度学习工具。尽管没有最新的具体用户数字,但可以肯定的是,随着机器学习和人工智能应用的普及和发展,PyTorch 的用户规模一直在持续扩大。

  1. 学术界:全球许多研究者和学生在论文发表、课程教学以及日常研究中使用PyTorch进行深度学习模型的设计与训练。在顶级人工智能会议如NeurIPS, ICML, ICLR等上,基于PyTorch的研究成果数量逐年增长。

  2. 工业界:诸多科技公司包括Facebook(PyTorch的主要贡献者)、Uber、Salesforce等在其产品和服务中应用了PyTorch。同时,许多初创企业和成熟企业也纷纷选择PyTorch进行机器学习和深度学习项目的开发。

  3. 开源社区:GitHub上的PyTorch项目有着大量的关注者、Star数及Fork数,活跃的社区提交表明其拥有庞大的开发者基础。此外,PyTorch Hub提供了丰富的预训练模型库,吸引了众多用户下载和使用。

  4. 教育领域:越来越多的在线教育平台和大学课程开始教授PyTorch,这进一步推动了其用户基数的增长。

因此,尽管无法给出具体的用户人数,但通过上述各方面的表现,可以看出PyTorch具有庞大的用户群体,并且在全球范围内产生了深远的影响。

3、PyTorch在学术界的影响力

PyTorch 在学术界具有极其显著的影响力,尤其是在深度学习和机器学习领域。以下几点体现了 PyTorch 在学术界的广泛采用和重要地位:

  1. 易用性与灵活性:PyTorch 提供了动态计算图机制,这使得研究者能够以更直观、灵活的方式构建和调试复杂的模型结构,尤其适合于研发新算法和进行快速实验。

  2. 代码可读性强:Python 语言作为 PyTorch 的基础,其简洁易懂的语法使得代码易于阅读和复用,有助于研究成果的传播和交流。

  3. 自动梯度:PyTorch 的 autograd 系统实现了高效的自动求导功能,大大简化了神经网络训练中的反向传播过程,对于科研人员来说是非常实用的工具。

  4. 社区支持与资源丰富:PyTorch 拥有一个活跃的开发者和研究者社区,提供了大量的开源代码库、预训练模型以及教程和论文实现,促进了学术成果的共享和验证。

  5. 顶会论文采用率:在诸如 NeurIPS、ICML、ICLR 等顶级人工智能和机器学习会议上,使用 PyTorch 实现的研究成果占据了很高的比例(占比80%),表明其在前沿研究中的主导地位。

  6. 教育与课程:越来越多的大学和在线课程开始采用 PyTorch 教授深度学习,确保了新一代研究人员和工程师掌握这一流行工具。

  7. 科研合作与支持:Facebook AI Research (FAIR) 和其他机构对 PyTorch 的持续开发和支持,进一步巩固了它在学术研究领域的领先地位。

总之,PyTorch 凭借其强大的功能、良好的用户体验以及丰富的生态系统,在全球学术界内得到了广泛的认同和应用,成为推动人工智能技术发展的重要力量之一。

 4、PyTorch在产业界的影响力

PyTorch在产业界的影响力非常显著,它已经成为许多企业和研究团队进行深度学习开发与应用的首选框架之一。以下几点突显了其在产业界的重要地位:

  1. 广泛采用:众多知名科技公司和创业企业都在产品和服务中使用PyTorch来构建和训练复杂的深度学习模型,如Facebook、Uber、Twitter、Snapchat等。

  2. 模型开发与部署:PyTorch不仅支持灵活高效的模型设计与训练,而且通过其工具链可以方便地将训练好的模型部署到服务器端、移动设备以及嵌入式系统中,大大简化了从研究到生产的过程。

  3. 工业级解决方案:PyTorch提供了多种针对高性能计算优化的功能,例如分布式训练(torch.distributed)和自动混合精度训练(Automatic Mixed Precision, AMP),以适应大规模数据集和复杂模型的需求。

  4. 生态建设:随着PyTorch生态系统的发展,出现了许多与之兼容的第三方库和工具,比如Hugging Face Transformers库在NLP领域得到广泛应用,这进一步加强了PyTorch在产业界的影响力。

  5. 跨平台与跨框架互操作性:PyTorch支持ONNX格式,使得模型可以在多个框架之间轻松转换,增强了与其他AI框架如TensorFlow、Caffe2等的兼容性和互操作性。

  6. MLOps集成:随着MLOps(机器学习运维)理念的普及,PyTorch与各种CI/CD工具、云服务提供商进行了整合,使得模型训练、验证、部署和监控形成了一体化的流程。

  7. 教育与培训:PyTorch因其易用性和强大的功能受到教育培训行业的欢迎,越来越多的企业内部培训和在线课程开始采用PyTorch作为教学工具,培养新一代的AI工程师。

综上所述,PyTorch凭借其优越的灵活性、高效性能和不断壮大的社区支持,在产业界实现了广泛而深入的应用,并且对推动人工智能技术的工业化进程产生了重大影响。

5、学术界如何充分利用PyTorch

学术界在充分利用PyTorch方面可以采取以下策略:

  1. 科研创新

    • 利用PyTorch的动态图特性快速构建和迭代新的深度学习模型结构,方便研究者尝试不同架构和算法。
    • 通过Autograd模块进行自动求导,简化复杂模型的反向传播计算,节省大量时间和精力。
  2. 论文复现与验证

    • 使用PyTorch重新实现最新的研究成果和技术,确保理论可复制性和科学严谨性。
    • 开发代码库公开共享复现结果,促进同行间的研究交流与合作。
  3. 教育与培训

    • 在课程和研讨会中引入PyTorch作为教学工具,因其简洁易懂的API利于学生快速掌握深度学习基础及进阶知识。
    • 制作和分享基于PyTorch的教学资源,如教程、示例代码和实验项目等。
  4. 社区参与与共建

    • 积极参加PyTorch论坛、GitHub讨论以及学术会议中的相关议题讨论,了解最新进展并提供反馈。
    • 贡献代码至开源项目,例如开发新模块、优化现有功能或修复bug,共同推动框架的发展。
  5. 跨学科合作

    • 利用PyTorch灵活的设计支持多领域的应用,鼓励与其他学科研究人员合作开展跨领域的深度学习研究。
  6. 技术转化与应用

    • 将研究成果以PyTorch为基础转化为实际应用,部署到各种环境中(如嵌入式系统、云端服务器),加速科研成果的产品化和市场化进程。
  7. 出版物与资源共享

    • 在学术期刊和会议上发表使用PyTorch完成的高质量研究,并附上源代码,便于其他研究者跟进和借鉴。

总之,学术界可以通过深入利用PyTorch的灵活性和强大的功能,在深度学习研究、教学实践、跨领域合作和成果转化等多个层面取得显著成果。同时,积极参与社区互动,能够不断推动该框架的技术发展和完善,对整个深度学习领域产生积极影响。

6、产业界如何利用PyTorch

产业界利用PyTorch主要体现在以下几个方面:

  1. 模型开发与训练:企业研发部门使用PyTorch构建和训练深度学习模型,涵盖计算机视觉、自然语言处理、语音识别、强化学习等多个领域。其动态图机制使得工程师能够灵活地设计复杂的网络结构,并在迭代中迅速调整模型。

  2. 迁移学习与预训练模型:许多企业直接采用或基于PyTorch提供的预训练模型(如ResNet、BERT等)进行迁移学习,快速定制适用于自身业务场景的解决方案,如图像分类、文本生成和情感分析等应用。

  3. 大规模生产环境部署:通过PyTorch的C++前端库LibTorch以及ONNX格式转换工具,可以将训练好的模型转化为高效且易于部署的形式,应用于嵌入式系统、移动设备或云端服务器等不同平台上的实时推理服务。

  4. 硬件加速与优化:PyTorch对GPU和其他加速器的良好支持使企业在高性能计算环境中能够充分利用资源,加快模型训练速度,同时降低运行成本。

  5. 模型压缩与量化:为满足产品性能需求,企业会借助PyTorch的相关工具对模型进行压缩与量化,以减小模型体积并提高推理效率,从而实现在低功耗设备上运行复杂模型的可能性。

  6. 敏捷开发与MLOps:PyTorch Lightning等项目有助于企业实施MLOps(Machine Learning Operations),实现从模型开发到测试、上线、监控和维护的全流程自动化管理。

  7. 跨团队协作与教育:由于Python语言的普及度高和易读性好,PyTorch成为多学科团队间沟通交流的桥梁,方便数据科学家、机器学习工程师以及软件工程师协同工作。

综上所述,PyTorch在产业界的广泛应用不仅体现了其强大的灵活性和功能性,还表明了它对于提升产品研发效率、缩短市场响应时间及优化用户体验等方面具有显著价值。

7、研究者如何利用PyTorch

研究者在使用PyTorch进行深度学习研究时,可以采取以下策略来最大限度地利用该框架:

  1. 动态图与灵活模型构建

    利用PyTorch的动态计算图特性,快速迭代和调试新的神经网络结构。通过定义可微分的操作(autograd),可以在运行时修改或构建模型,这对于探索新颖复杂的模型架构非常有利。
  2. 模块化编程

    使用nn.Module类封装自定义模型,使代码更易于组织、复用和维护。研究人员可以构建层次化的模块,这些模块可以方便地嵌套在一起形成更大规模的网络结构。
  3. 自动求导Autograd

    利用PyTorch的自动求导机制轻松实现反向传播,无需手动编写梯度计算代码,从而专注于模型设计和优化算法的研究。
  4. GPU加速

    利用CUDA支持将计算密集型任务转移到GPU上,显著提高训练速度。同时,合理调度资源,如数据并行、模型并行等分布式训练方法,以适应大规模数据集和复杂模型的需求。
  5. 可视化工具

    使用诸如TensorBoard这样的可视化工具结合PyTorch的接口,实时监控训练过程中的损失函数变化、模型参数分布以及计算图结构等信息。
  6. 预训练模型与迁移学习

    从PyTorch Hub或torchvision、torchaudio等库中获取预训练模型,并进行迁移学习或微调,以便快速应用于特定领域或问题。
  7. 混合精度训练

    利用PyTorch的半精度(FP16)训练功能,结合Apex库或者内置的amp (Automatic Mixed Precision) 来减少内存消耗和加快训练速度。
  8. 高效的数据加载与处理

    继承torch.utils.data.Dataset类创建自定义数据集,并结合DataLoader对数据进行批处理,有效管理大型数据集,确保数据读取高效且符合模型输入要求。
  9. 优化器与学习率调整策略

    选择合适的优化器(如Adam、SGD等)并通过torch.optim.lr_scheduler提供的学习率调整策略(如StepLR、CosineAnnealingLR、ReduceLROnPlateau等)精细化控制模型训练过程。
  10. 模型部署与转换

    将训练好的模型转换为ONNX格式,便于跨平台部署,或将模型导出至C++端LibTorch进行高性能推理。
  11. 社区支持与研究合作

    积极参与PyTorch社区,了解最新的研究成果和技术动态,与其他研究者交流分享经验,共同推进深度学习技术的发展。

通过上述方式,研究者能够在理论探索和实际应用之间架起桥梁,迅速验证想法、产出高质量研究成果,并保持与产业界发展的同步性。

8、积极参与PyTorc社区

积极参与PyTorch社区,对于研究者来说,是紧跟深度学习前沿、提升自身技能和扩大影响力的绝佳途径。具体方式可以包括:

  1. 关注官方资源:定期浏览PyTorch官网(pytorch.org)以及其官方博客、GitHub仓库等,获取最新的更新信息、版本发布和技术文档。

  2. 参与讨论:加入PyTorch的论坛、Stack Overflow上的相关板块或Reddit上的子论坛,如PyTorch subreddit,积极参与讨论,解答他人问题,分享自己的研究成果和实践经验。

  3. 贡献代码与教程:为PyTorch开源项目贡献代码,如修复bug、优化功能或者开发新的模块。撰写并分享高质量的教程、代码示例和项目案例,帮助更多人理解和掌握PyTorch。

  4. 参加研讨会与活动:报名参加由PyTorch团队或社区组织的线上线下的研讨会、开发者大会和技术讲座,如PyTorch Developer Conference (PTDC) 或相关学术会议的PyTorch workshop等。

  5. 建立个人联系:通过社交媒体、邮件列表或其他渠道与其他研究者建立联系,共同探讨技术难题,发起合作项目,共享研究成果。

  6. 订阅学术期刊与论文:关注使用PyTorch实现的最新科研成果,阅读相关的论文,并尝试复现或改进其中的方法。

  7. 投稿与发表:在完成基于PyTorch的研究后,可以考虑将研究成果整理成论文并在高水平的学术期刊或会议上发表,从而进一步推动深度学习领域的理论与实践进步。

总之,深度参与到PyTorch社区中,不仅能够及时了解和掌握最先进的技术和研究动态,还有助于构建个人在深度学习领域的专业网络,共同推进整个领域的发展。

9、借助PyTorch实现研究成果转化和应用

技术转化与应用在学术界中,借助PyTorch框架实现研究成果的产品化和市场化主要体现在以下几个方面:

  1. 模型优化与部署

    • 研究者首先会在PyTorch中开发和训练深度学习模型,通过模型压缩、量化等手段优化模型大小和计算效率,以适应实际应用场景的需求。
    • 利用PyTorch的C++前端库LibTorch,将优化后的模型转换为可嵌入式系统或云端服务器部署的形式,确保模型能够高效运行在各种硬件平台上。
  2. 跨平台兼容性

    PyTorch支持ONNX(Open Neural Network Exchange)格式,使得模型可以方便地与其他深度学习框架进行互操作,拓宽了模型部署的范围,如移动设备、FPGA、ASIC等各类硬件环境。
  3. 产品集成与定制

    企业研发团队基于研究者提供的PyTorch模型代码,进一步整合到其现有的软件或硬件产品中,提供图像识别、语音识别、自然语言处理等智能化功能,提升产品核心竞争力。
  4. 边缘计算与实时推理

    针对物联网设备及边缘计算场景,PyTorch模型可以通过裁剪、量化等方式满足低功耗、低成本的限制,并能在嵌入式设备上进行实时推理,实现智能监控、自动化控制等功能。
  5. 云服务与API接口

    将经过验证的PyTorch模型部署到云端服务器,通过构建RESTful API或其他接口,提供AIaaS(人工智能即服务),使其他开发者和企业能够轻松接入并利用这些模型服务。

总之,PyTorch作为灵活且强大的深度学习框架,在学术成果向实际应用转化的过程中扮演着重要角色,助力科研成果走出实验室,进入市场服务于大众。

10、大模型与PyTorch

分布式训练与高性能计算在PyTorch框架中扮演着关键角色,特别是在处理大规模深度学习模型和大数据集时。以下是如何利用PyTorch Lightning和PyTorch Distributed模块进行高效训练的详细说明:

  1. PyTorch Lightning

    • PyTorch Lightning是一个高级接口,它抽象了大部分PyTorch训练过程中的样板代码,使研究者能够专注于模型构建和实验设计,而非并行化和分布式实现细节。
    • 它内置支持多GPU训练、分布式训练(如数据并行、模型并行)以及混合并行策略,并简化了对训练过程的管理,例如自动梯度累加、优化器状态同步等。
    • Lightning还提供了日志记录、超参数搜索、模型保存与恢复等功能,便于科研人员跟踪训练进度、对比不同实验结果以及跨多个计算节点复用模型。
  2. PyTorch Distributed

    • PyTorch Distributed库是用于分布式训练的基础组件,允许研究者将训练任务分解到多个GPU或多个机器上运行。
    • 数据并行(Data Parallelism):通过torch.nn.parallel.DistributedDataParallel封装模型,使得每个进程只处理一部分数据并在本地GPU上训练模型副本,然后通过通信协议(如NCCL)来同步权重更新,从而加快训练速度。
    • 进程间通信(Inter-Process Communication, IPC):Distributed库提供了多种通信后端(如Gloo、NCCL、MPI等),以实现进程间的高效通信,确保数据一致性。
    • 模型并行(Model Parallelism):对于非常大的模型,可以将其拆分并在多个设备上分布执行,使用torch.distributed.rpc实现远程过程调用。

结合这两种工具,学术界的研究者能够更加便捷地进行大规模并行计算,有效应对日益增长的大模型和大数据集带来的挑战,大大提升了深度学习模型的训练效率和研究成果产出的速度。

11、个人如何充分利用PyTorch

个人要充分利用PyTorch,可以从以下几个方面着手:

  1. 学习基础知识

    • 了解和掌握PyTorch的基本概念,如张量(Tensor)、自动梯度(Autograd)以及nn.Module等核心模块。
    • 学习如何创建、操作和优化张量,包括基本的数学运算、数据类型转换和GPU加速计算。
  2. 实践项目开发

    • 开始尝试构建简单的深度学习模型,例如训练一个MNIST手写数字识别网络来理解从模型定义到训练、验证和测试的过程。
    • 进阶至更复杂的任务,如图像分类、自然语言处理(NLP)、生成对抗网络(GANs)或强化学习应用。
  3. 参与开源项目与社区

    • 参与PyTorch官方GitHub仓库中的问题讨论和代码贡献,通过实际参与社区互动提高技术水平。
    • 关注并参与到开源库的开发中,如torchvision、torchaudio等针对特定领域的库,或者利用预训练模型进行迁移学习。
  4. 阅读与复现论文

    • 阅读最新的深度学习研究论文,并尝试用PyTorch实现其中提出的算法或模型结构,以紧跟技术发展前沿。
    • 利用PyTorch Hub获取并使用预训练模型,对其进行微调以解决自己的研究或应用问题。
  5. 资源利用

    • 深入学习官方文档、教程和博客,参加在线课程,利用丰富的社区资源提升技能。
    • 参加线上研讨会、工作坊及PyTorch开发者大会等活动,与同行交流经验和知识。
  6. 性能优化与部署

    • 掌握分布式训练、混合精度训练(AMP)等高级特性,优化模型训练速度和内存使用。
    • 学习将训练好的模型转换为ONNX格式,以便于跨平台部署和在生产环境中高效运行。
  7. 结合领域知识创新

    • 结合自身所在行业或感兴趣的学科领域,探索如何将深度学习技术应用到具体问题上,如医疗影像分析、金融风控、推荐系统等。

总之,通过不断学习、实践和交流,个人可以逐步掌握PyTorch这一强大的深度学习工具,并将其应用于解决实际问题和推动领域内研究进展。

PyTorch是一个强大的工具,能够助力我们实现人生目标。同时,PyTorch也是一种文化象征,代表着开放、交流、协作、传承、创新和文明!

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

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

相关文章

【备忘】thinkphp5.1之websocket长连接框架使用流程简述

前言 本文纯属经验备注,有许多地方未进行测试,请勿照搬,仅供参考。 之前专门花了几天时间测试了websocket,当时只记得踩了许多坑,但是没有对测试流程进行记录,导致长时间未使用从而无从下手。 今天就简单…

08.Elasticsearch应用(八)

Elasticsearch应用(八) 1.为什么需要相关性算分 我们在文档搜索的时候,匹配程度越高的相关性算分越高,算分越高的越靠前,但是有时候我们不需要算分越高越靠前我们可能需要手动影响算分来控制顺序比如广告&#xff08…

2016年认证杯SPSSPRO杯数学建模A题(第一阶段)洗衣机全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 A题 洗衣机 原题再现: 洗衣机是普及率极高的家用电器,它给人们的生活带来了很大的方便。家用洗衣机从工作方式来看,有波轮式、滚筒式、搅拌式等若干种类。在此基础上,各厂商也推出了多种具体方案…

微信小程序(十五)自定义导航栏

注释很详细,直接上代码 上一篇 新增内容: 1.组件文件夹创建方法 2.自定义组件的配置方法 3.外部修改组件样式(关闭样式隔离或传参) 创建组件文件夹 如果是手动创建建议注意在json文件声明: mynav.json {//声明为组件可…

从CDN了解到的边缘计算与前端渲染

文章概叙 本文代码量较少,讲的是在云开发的基础上使用边缘计算的,代码量不高,​建议看完理解下就可以丢了,知道个概念就好。 废话1 第一次接触边缘计算是在2020年的时候,公司的cloud课程中,有一些相关概…

2024年第四届机器人与人工智能国际会议(JCRAI 2024) | Ei、Scopus双检索

会议简介 Brief Introduction 2024年第四届机器人与人工智能国际会议(JCRAI 2024) 会议时间:2024年8月9日-11日 召开地点:中国上海 大会官网:www.jcrai.org 人工智能和机器人技术在过去几十年里得到了长足的发展,为未来的机器人应…

php二次开发股票系统代码:腾讯股票数据接口地址、批量获取股票信息、转换为腾讯接口指定的股票格式

1、腾讯股票数据控制器 <?php namespace app\index\controller;use think\Model; use think\Db;const BASE_URL http://aaaaaa.aaaaa.com; //腾讯数据地址class TencentStocks extends Home { //里面具体的方法 }2、请求接口返回内容 function juhecurl($url, $params f…

力扣刷题 第十二 边权重均等查询

现有一棵由 n 个节点组成的无向树&#xff0c;节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 ui 和节点 vi 之间、权重为 wi 的边。 另给你一个长度为 m 的二维整数数…

2024年华为OD机试真题-靠谱的车-Python-OD统一考试(C卷)

题目描述: 程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。 出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。 比如: 1. 23再多一块钱就变为25; 2. 39再多一块…

yum找不到 mysql-server

User sudo yum install mysql-server 已加载插件&#xff1a;fastestmirror Loading mirror speeds from cached hostfile base: mirrors.aliyun.comepel: mirror.01link.hkextras: mirrors.ustc.edu.cnupdates: mirrors.ustc.edu.cn 没有可用软件包 mysql-server。 错误&…

C++算法学习心得七.贪心算法(2)

1.跳跃游戏&#xff08;55题&#xff09; 题目描述&#xff1a; 给定一个非负整数数组&#xff0c;你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4]输出: true解释: 我们…

【前端基础--4】

定位属性 position 可以将元素定位到你想要放到位置&#xff0c;使用方位值来进行移动(top,left,right,bottom)。 1.相对定位 position: relative; top: 20px; left: 20px; 以自身为定点进行移动&#xff0c;不会脱离文档流。 不会影响元素本身的性质&#xff1b;块级…

性能优化-OpenCL 介绍

「发表于知乎专栏《移动端算法优化》」 本文首先对 GPU 进行了概述&#xff0c;然后着重地对移动端的 GPU 进行了分析&#xff0c;随后我们又详细地介绍了 OpenCL 的背景知识和 OpenCL 的四大编程模型。希望能帮助大家更好地进行移动端高性能代码的开发。 &#x1f3ac;个人简介…

RisingWave 多流 Join 实现高效实时数据打宽

在公司业务场景中&#xff0c;通常需要使用流计算引擎从多个数据源获取数据、进行 ETL 操作&#xff0c;并将清洗后的数据导入到数据分析系统或数据湖中。由于最后产生出来的表是一张宽表&#xff0c;我们通常也称这个过程为“数据打宽“。 数据打宽在流处理系统中对应的操作便…

34.在排序数组中查找元素的第一个和最后一个位置(力扣LeetCode)

文章目录 34.在排序数组中查找元素的第一个和最后一个位置题目描述二分 34.在排序数组中查找元素的第一个和最后一个位置 题目描述 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组…

将小游戏打包成单一exe文件的原理及应用

哈喽大家好&#xff0c;我是咕噜美乐蒂&#xff0c;很高兴又见面啦&#xff01;本文将介绍将小游戏原版文件打包成单一exe文件的原理&#xff0c;并探讨了这种打包方式的优点和应用场景。通过对打包工具和编译器的介绍&#xff0c;解释了它们如何将游戏的所有相关文件合并到一个…

Fiddler 过滤地址设置及导出JMeter脚本插件原理

Fiddler 过滤地址设置 1、在fiddler右边工具栏中找到Filters过滤器->勾选&#xff1a;Use Filters->在hosts中选择过滤规则和要过滤的地址。 如下图&#xff1a; 2、点击【Actions】按钮&#xff0c;选择&#xff1a;Run Filterset now&#xff0c;就会立即生效&#x…

nginx限制ip访问

先看一下被禁止的效果 如何配置 禁止访问的话直接在location模块增加类似如下配置 deny all; 完整示例 location / {deny all;root html;index index.html index.htm;} 默认是allow all就是允许所有ip访问,如果只配置指定ip可以访问是无效的,还是所有的ip可以访问 无效示例…

Unity动画桢事件

1&#xff0c;使用原因 在新项目内部审核的时候&#xff0c;说什么动画节奏不匹配&#xff0c;所以决定用动画桢事件来处理技能释放。当释放技能的时候&#xff0c;先播放技能动画&#xff0c;然后再动画桢所在的时间戳执行技能的逻辑。 2&#xff0c;具体实现 1&#xff0c;…

v3+ECharts 地图实现多个自定义图片的图标

备注&#xff1a;地图json, 图标图片 准备替换下 <template><div ref"mapEcharts" class"map-echart"></div> </template><script setup langts> import * as echarts from echarts import mapcity from "/tool/map/m…