pytorch 相关工具

[深入浅出pytorch]最后一章 PyTorch生态 torchvision torchvision包含了在计算机视觉中常常用到的数据集,模型和图像处理的方式,我们经常会用到torchvision来调用预训练模型,加载数据集,对图片进行数据增强的操作。 具体来说,torchvision包括了以下这几部分(*表示经常会使用到) torchvision.datasets* torchvision.datasets主要包含了一些我们在计算机视觉中常见的数据集,torchvision==0.10.0中包括了UCF101数据集,这里是官方文档。 or 阅读详情

一 、 torchvision

1. torchvision.transforms : 用于图像预处理

2. torchvision.models  : 预训练好的模型供

3. torchvision.io :提供了视频、图片和文件的 IO 操作的功能

4. torchvision.ops :  提供了许多计算机视觉的特定操作

5. torchvision.utils : 提供了一些可视化的方法

二、PyTorchVideo

专注于视频理解工作的深度学习库。PytorchVideo 提供了加速视频理解研究所需的可重用、模块化和高效的组件

三、torchtext

可以方便的对文本进行预处理,例如截断补长、构建词表等

参考:

datawhale 深入浅出pytorch

【PyTorch学习-2】PyTorch高级操作|PyTorch生态系统相关工具|深度学习中的常用技巧|动态计算图与Autograd机制|模型调试与检查|分布式训练与并行计算|实用工具和技巧... 阅读详情

相关推荐

pytorch相关软件包

这里写自定义目录标题pytorch相关软件包代码调试神器TorchSnooper语音处理pytorch-kaldi pytorch相关软件包 找个地方记录一下和pytorch相关的软件包,这里主要指python的pypi软件包。 代码调试神器TorchSnooper 项目主页: https://github.com/zasdfgbnm/TorchSnooper 这个工具非常方便,可以通过python修饰器实现一键对函数内所有tensor形状的打印,便于快速调试找到你写的那些BUG。 代码示例: impo

陨石坑 459

探索PyTorchVideo:深度学习视频理解的利器

在AI领域,特别是在计算机视觉和多媒体处理中,对视频的理解和分析已经成为一个重要的研究方向。Facebook Research推出的库,是一个专为视频理解设计的强大工具,它结合了PyTorch的灵活性和高效性,使得开发者能够更容易地构建和训练视频模型。 ## 项目简介 PyTorchVideo是一个开源的Python库,旨在简化视频数据处理,并提供多种预训练模型以进行视频分类、动作识别和其他相...

gitblog_00095的博客 701

【PyTorch学习-5】PyTorch高级操作|PyTorch生态系统相关工具|深度学习中的常用技巧|动态计算图与Autograd机制|模型调试与检查|分布式训练与并行计算|实用工具和技巧…

【PyTorch学习-5】PyTorch高级操作|PyTorch生态系统相关工具|深度学习中的常用技巧|动态计算图与Autograd机制|模型调试与检查|分布式训练与并行计算|实用工具和技巧…

985小水博的摸鱼日常 1170

【PyTorchVideo教程01】快速实现视频动作识别

PyTorchVideo是Facebook2021年4月份发布,主要针对视频深度学习应用。 近几年来,随着传播媒介和视频平台的发展,视频正在取代图片成为下一代的主流媒体,这也使得有关视频的深度学习模型正在获得越来越多的关注。 然而,有关视频的深度学习模型仍然有着许多缺点: - 计算资源耗费更多,并且没有高质量的 model zoo,不能像图片一样进行迁移学习和论文复现。 - 数据集处理较麻烦,但没有一个很好的视频处理工具。 - 随着多模态越来越流行,亟需一个工具来处理其他模态。..........

CSPhD-winston的博客 7610

【PyTorch学习-4】PyTorch高级操作|PyTorch生态系统相关工具|深度学习中的常用技巧|动态计算图与Autograd机制|模型调试与检查|分布式训练与并行计算|实用工具和技巧…

【PyTorch学习-4】PyTorch高级操作|PyTorch生态系统相关工具|深度学习中的常用技巧|动态计算图与Autograd机制|模型调试与检查|分布式训练与并行计算|实用工具和技巧…

985小水博的摸鱼日常 1142

【PyTorch学习-3】PyTorch高级操作|PyTorch生态系统相关工具|深度学习中的常用技巧|动态计算图与Autograd机制|模型调试与检查|分布式训练与并行计算|实用工具和技巧…

【PyTorch学习-3】PyTorch高级操作|PyTorch生态系统相关工具|深度学习中的常用技巧|动态计算图与Autograd机制|模型调试与检查|分布式训练与并行计算|实用工具和技巧…

985小水博的摸鱼日常 879

Pytorch相关可视化工具

1、graphviz 的获取 2、graphviz的安装 (1)双击运行 由于这是一个.msi的文件,所以只需要双击运行,点击下一步就行了,但是文件安装的路径要记住,等会就会使用到的。例如:D:\Program Files (x86)\Graphviz2.38\。 (2)添加环境变量 win+R–>输入control–>进入控制面板–>系统与安全–>系统–>高级系统配置–>环境变量–>选中Path(系统变量那栏)–>编辑–>新变量–&...

齐落山大勇的博客 1006

PyTorchVideo是一个深度学习库,专注于视频理解工作-Python开发

PyTorchVideo是一个深度学习库,专注于视频理解工作。 PytorchVideo提供了可重用,模块化和高效的组件,这些组件可加快视频理解研究的速度。 PyTorchVideo使用PyTorch开发,并支持不同的深度学习视频组件,例如视频模型,视频数据集和特定于视频的转换。 用于视频理解研究的深度学习库。 检查网站以获取更多信息。 在Samsung Galaxy S10手机上运行的PyTorchVideo加速X3D模型。 该模型的运行速度比实时速度快约8倍,大约需要130毫秒才能处理一秒钟的视频。 一个基于PyTorchVideo的SlowFast模型,用于执行视频动作检测。 简介PyTorchVideo是一个深度学习库,专注于视频理解工作。 PytorchVideo提供可重复使用的模块化

pytorch及相关工具的安装

pytorch安装 安装步骤: 1. 检查是否有合适GPU,如果有,则需要安装CUDA和CuDNN。 2. CUDA和CuDNN下载和安装(非必须)。 3. 下载pytorch的whl文件。 4. 下载torchvision的whl文件。 5. 通过pip进行安装。 6. 通过命令查看pytorch版本,验证pytorch是否安装成功。 登录网址:https://download.pytorch.org/whl/torch_stable.html。 选择合适的版本进行下载。笔者下载的.

phmatthaus的专栏 661

pytorchvideo:用于视频理解研究的深度学习库

用于视频理解研究的深度学习库。 检查以获取更多信息。 介绍 PyTorchVideo是一个深度学习库,专注于视频理解工作。 PytorchVideo提供了可重用,模块化和高效的组件,这些组件可加快视频理解研究的速度。 PyTorchVideo使用开发,并支持不同的深度学习视频组件,例如视频模型,视频数据集和特定于视频的转换。 主要功能包括: 基于PyTorch:使用PyTorch构建。 使所有PyTorch生态系统组件的使用变得容易。 可重现的模型动物园:各种先进的预训练视频模型及其相关基准可随时使用。 作为模型动物园的补充,PyTorchVideo附带了支持不同数据集的大量数据加载器。 高效的视频组件:易于使用的以视频为中心的快速高效的组件。 支持对硬件的加速推理。 安装 使用以下命令在conda环境中安装PyTorchVideo(Python> = 3.7) pip ins

3D高斯溅射融合Gabor滤波器:频率感知如何提升神经渲染效率与质量

在计算机视觉与图形学领域,3D场景重建旨在从多视角图像中恢复真实世界的三维结构与外观。其核心原理是通过优化场景表示,使渲染出的二维图像与输入照片尽可能一致。传统方法在效率与细节保真度间常面临权衡,高频细节(如精细纹理、锐利边缘)的重建尤为消耗算力。频率感知技术为此提供了突破方向,它借鉴信号处理思想,将场景分解为不同空间频率的成分进行针对性建模。Gabor滤波器作为经典的频率-方向分析工具,能有效刻画纹理的局部频域特征。将Gabor的频率选择性与3D高斯溅射(3DGS)这一高效显式表示结合,构成了神经Gabo

weixin_33087827的博客 272

【PyTorch】相关可视化工具

PyTorch 相关可视化工具

Esperanto.的博客 561

告别偏移地址!用C# S7PLUS驱动读写西门子S7-1500符号地址(TIA Portal V17+环境配置)

本文详细介绍了如何在TIA Portal V17+环境中使用C# S7PLUS驱动读写西门子S7-1500 PLC的符号地址,告别传统的偏移地址方式。通过配置OpenSSL、集成S7PLUS驱动库,以及实战案例展示符号地址的读写方法,显著提升代码可读性和维护效率。文章还涵盖了环境准备、高级配置及常见问题解决方案,助力工业自动化开发者实现更高效的PLC通讯。

weixin_28720767的博客 317

基于pytorch的相关可视化工具

基于pytorch的相关可视化工具网络结构的可视化HiddenLayer库可视化网络PytorchViz库可视化网络训练过程的可视化tensorboardX (以下内容中来源于《pytorch深度学习入门与实战(孙玉林,余本国)》) 网络结构的可视化 HiddenLayer库可视化网络 HiddenLayer库包含有一个build_graph()函数,可以非常方便地将深度学习网络进行可视化。 import hiddenlayer as hl hl_graph = hl.build_graph(MyConvn

丶夜未央丶的博客 618

RedHat 9 替换yum源镜像

引言:我们个人通常使用的红帽系统yum源是需要注册付费的,所以在使用yum源安装一些软件时无法正常安装(例如:MySQL),这时我们就需要将yum源替换为CentOS对应的源,以实现在红帽系统中正常安装软件。

YUJIAOZHU666的博客 3738

Ubuntu环境下rknn-toolkit2的安装与兼容性解析

本文详细解析了在Ubuntu系统上安装瑞芯微rknn-toolkit2工具链的完整流程与关键注意事项。文章重点剖析了rknn-toolkit2与旧版rknn-toolkit的核心兼容性问题,强调两者在API、模型格式及运行时库上互不兼容,并推荐使用Conda虚拟环境进行隔离管理,为RK3566、RK3588等开发板的AI模型部署提供清晰的实践指南。

weixin_29041767的博客 375

使用PyTorch 框架的模型部署相关工具

【Pytorch & Quantization】简单记录一下之前看到的不错的推文

weixin_40451593的博客 466

【上海大学计算机组成原理实验报告】七、程序转移机制

学习实现程序转移的硬件机制//掌握堆栈寄存器的使用//手动方式实现子程序调用转移过程//手动方式实现子程序返回转移过程//编程实现`OUT`寄存器交替显示`11`和`55`//若要求`11`和`55`各显示`50`次后停机,应该如何修改程序?//根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当`LDPC`有效时,如果此时`DUBS`上的值就是转移的目标地址,则此目标地址被打入`PC`,从而实现程序的转移;若`LDPC`为`0`是附带条件的,就形成“条件转移”。

HackerKevon的博客 2474

第四章 基于PyTorch的相关可视化工具

第四章 基于PyTorch的可视化工具 1. 网络结构的可视化 本节我们定义一个简单CNN对手写数据集进行分类,并通过相关的可视化库进行可视化。 模块导入 import torch import torch.nn as nn import torchvision import torchvision.utils as vutils from torch.optim import SGD import torch.utils.data as Data from sklearn.metrics i

qq_45957458的博客 680

Vue2 - 详细实现网页 “开启录音并生成音频文件,上传到服务器效果“,浏览器录制外部音频调用麦克风并传到后端,兼容全部浏览器、支持 PC 网页或手机 H5 网页、可本地播放试听(详细示例运行代码)

vue,nuxt,uniapp,网页网站,麦克风,网页录音,MediaRecorder,浏览器录音,移动端h5网页,手机端录音,web网页录音,recorder-core官方文档,Recorder,非https怎么本地录音,录音报错失败,录音后怎么播放音频,如何获取录音mp3文件,解决一直不提示麦克风权限,小白详细教程,实时录音,调用浏览器麦克风录音,浏览器不兼容,wav,mp3,vue怎么实现网页录音呢,vue2网页录音并上传到服务器,web如何实现录制音频,vue网页录音,音频录制播放和上传服务器,vu

🏆 前端领域优质创作者 6003

Allegro如何设置走线自动删除重复走线操作指导

Allegro如何设置走线是自动删除重复走线操作指导在PCB布线的时候,点到点需要重复走一段线的时候,希望原来的线段自动被删除,Allegro设计的时候支持这个操作如下图,重复走中间的线段的时候,希望下方的走线自动删除具体操作如下This section is describe what the function allegro have ,helpfully could let user know more about allegroAllegro Design and Analysis includes

weixin_54787054的博客 4499

PyTorch入门与实践(一):环境安装与相关工具介绍

本文介绍了Pytorch环境安装、VS Code连接远程服务器、DeepLn的web连接、DeepLn的实例释放与数据保存、VS Code 调试Python

TANTANWANG的博客 1402

24. 在QML界面中嵌入QWidget窗口

目前QT官方主推的界面开发方式是采用QML进行界面设计,但在QML未流行之前,很多的项目都是采用QWidget开发的,把之前的代码全部转换为QML代码显然工作量非常大,如果能将QWidget窗口嵌入到QML界面中,那么开发效率将提高很多,且QML无法实现的功能也能借助于QWidget框架进行实现。

山间点烟雨 5921

win10系统中anaconda下的python相关工具包配置 (opencv 、带cuda加速的pytorch)

先去官网下载好anaconda 地址是 https://www.anaconda.com/distribution/#download-section 我下载的是64位python3.7版本的,因为pytorch只支持3.x版本的python,在安装过程中有一个如下界面(第二幅图)建议是两个都勾选上,这样就避免你去电脑里面自行设置环境变量了 安装好之后,使用cmd命令行 ...

qq_37727777的博客 399

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

自然语言处理(NLP)-第三方库(工具包):torchtext【pytorch自带的文本相关Api】、torchvison【pytorch自带的图片相关Api】

深度学习-自然语言处理(NLP)-第三方库(工具包):torchtext【pytorch自带的Api】

u013250861的博客 567

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Windows10安装cuda、cudnn、pytorch、jupyter、fastai

版权声明:本文为博主原创文章,欢迎转载,并请注明出处。联系方式:460356155@qq.com 一直在Ubuntu中使用pytorch,现在切换到Windows系统。 一、安装cuda 1、从https://developer.nvidia.com/cuda-downloads下载相应的版本(这里选的是cuda_10.1.105_418.96_win10.exe),安装,选择自定...

weixin_30782293的博客 403

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: pytorch 可视化
下一篇: centos 安装miniconda
Dennis-Ning
博客等级 码龄7年 118粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dennis-Ning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值