tensorflow中ckpt转pb模型

tensorflow模型ckpt转pb和测试推理 import cv2 import tensorflow as tf from tensorflow.python.framework import graph_util def freeze_graph(input_checkpoint ,output_graph): ''' :param input_checkpoint: :param output_graph: PB模型保存路径 :return: ''' with tf.name_scope('. 阅读详情

参考代码:

import tensorflow as tf
import os
from tensorflow.python.framework import graph_util

def set_config():#设置GPU使用率
    # 控制使用率
    os.environ['CUDA_VISIBLE_DEVICES'] = '0'
    # 假如有16GB的显存并使用其中的8GB:
    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.3)
    config = tf.ConfigProto(gpu_options=gpu_options)
    # session = tf.Session(config=config)
    return config

#下面是你自定义的模型

inputs = tf.placeholder(tf.float32, shape=[None,width, height, 1], name='inputs')
labels = tf.placeholder(tf.float32, shape=[None,num_classes], name='labels')
pred=dense_net(inputs, num_classes,nb_blocks, growth_rate,weight_decay,compression)


model_path  = "./model/4_class.ckpt-1" #设置model的路径,因新版tensorflow会生成三个文件,只需写到数字前


cfg=set_config()

from tensorflow.python.saved_model import signature_constants, signature_def_utils, tag_constants, utils
save_path = 'model_pb/0'
with tf.Session(config=cfg) as sess:
    saver = tf.train.Saver()
    saver.restore(sess, model_path)
    model_signature = signature_def_utils.build_signature_def(
            inputs={"input": utils.build_tensor_info(inputs)},
            outputs={"pred": utils.build_tensor_info(pred)},
            method_name=signature_constants.PREDICT_METHOD_NAME)

    builder = tf.saved_model.builder.SavedModelBuilder(save_path)
    legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op')
    builder.add_meta_graph_and_variables(
              sess, [tag_constants.SERVING],
              clear_devices=True,
              signature_def_map={
                  signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
                  model_signature,
              },
              legacy_init_op=legacy_init_op)
    builder.save()
 

[openvino] tensorflow模型的格式转换:ckpt转pb [openvino] tensorflow模型的格式转换:ckpt转pb 相关内容 tensorflow模型的格式转换:ckpt转pb tensorflow模型的格式转换:ckpt转pb 参考资料 cpkt转pb 简书-cpkt转pb ckpt转pb之不知输出节点 重新训练模型,在模型设置上增加节点命名,如: net=tf.layers.conv1d(inputs=x, filters... 阅读详情

相关推荐

tensorflow模型压缩——ckpt转pb

ckpt模型转pb是项目落地的关键,如果你仅仅是想在服务器部署,也可忽略此步。人生的艰难有很多坑,不从坑里爬出来体会不到生命中的乐趣所在。简单的说,原来ckpt模型有4个文件(分别为checkpoint,index,data,meta),转成pb后就一个文件,至少方便了很多。然而其大小并无明显变化,甚至没有变化,想要有明显变化,还需要转tf lite,但首先第一步是转成pb格式。 pb格式的转化...

NLP与推荐算法 2157

解决keras模型保存问题(避免系统崩溃,模型训练无效),并且可以解决训练越来越慢的问题

首先贴出来训练部分的代码: def train(self, train_generator, validation_generator, pre_model_path=None): ''' :param train_generator: 训练集 :param validation_generator: 测试集 :param...

circleyuanquan的博客 2700

机器学习之keras模型保存为pb文件

keras模型是依赖tensorflow框架的,在恢复模型之前还需要再定义一遍网络结构,这对于部署到生产环境来说非常不方便。而转换为pb文件,可以独立运行,任何语言都可以解析它,同时方便部署到tf serving上。本文提供以下两种转换方法。方法1(推荐): 适用于tf2.0之后的版本,但是1.0版本生成的hdf5文件也可以用此方法转换,前提必须在tf2.0环境下运行 方法2: 适用于tf2.0之前的版本 ———————————————— 版权声明:本文为优快云博主「纳米时速」的原创文章,遵

张伟的专栏 949

tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)

网上关于tensorflow模型文件ckpt格式转pb文件的帖子很多,本人几乎尝试了所有方法,最后终于成功了,现总结如下。方法无外乎下面两种: 使用tensorflow.python.tools.freeze_graph.freeze_graph 使用graph_util.convert_variables_to_constants 1、tensorflow模型的文件解读 使用tensorflow训练好的模型会自动保存为四个文件,如下 checkpoint:记录近几次训练好的模型结果(名称)。 xxx.data-00000-of-00001: 模型的所有变量的值(weights, b

kali设置安装burpsuite中文版

工具:通过网盘分享的文件:Burpsuite 链接:提取码: jay1。

m0_74786138的博客 5202

【Tensorflow实战系列】tensorflow实战:由ckpt转成pb步骤的总结

最近真的项目很紧,996模式开启了多日,在完成项目一小步后,总算有时间进行一些梳理,也是对tensorflow有了更多的认识。 之前在学校实验室中,其实并不涉及太多tensorflow c++端的接口,无论是训练还是做inference,基本上都是python,相对来说还是比较简单的,但是c++还是会比python多很多步骤,第一个遇到的问题其实就是,我怎么使用python训练好的ckpt模型呢?...

Felaim的博客 2234

全网最全医学图像数据汇总

本仓库汇总了多个领域的医学图像开源数据集,涵盖CT、MRI、超声、内窥镜、病理、多模态、PET、OCT以及皮肤镜等多种成像技术。每个数据集均详细列出了任务类型、部位、格式、数量及下载链接,旨在为医学图像研究者提供便捷的资源导航。⚠️:这些数据集仅适用于学术研究用途。

2401_83173765的博客 3319

Tensorflow ckpt模型转pb格式

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

Ccnn_yun的博客 850

MCSDK5.4.8电机库双电阻采样适配:从扇区判断到固定采样的重构实践

本文详细解析了MCSDK5.4.8电机库中双电阻采样技术的重构实践,从扇区判断到固定采样的关键步骤。通过硬件配置优化、核心文件重构及电流读取函数改造,实现高效稳定的电机控制,特别适用于成本敏感型项目。文章还提供了占空比限制计算、参数调整及常见问题排查等实用技巧,助力工程师快速掌握两电阻采样方法。

weixin_42532938的博客 281

【浙大翁恺】C语言习题

/* 02-0. 整数四则运算(10) 本题要求编写程序,计算2个正整数的和、差、积、商并输出。 题目保证输入和输出全部整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 输入样例: 3 2 输出样例: 3 + 2 = 5 3 - 2 = 1 3 * 2 = 6 3 / 2 =.

qq_43600867的博客 5862

tensorflow实现将ckpt转pb文件

tensorflow实现将ckpt转pb文件 【尊重原创,转载请注明出处】:https://blog.youkuaiyun.com/guyuealian/article/details/82218092 本博客实现将自己训练保存的ckpt模型转换为pb文件,该方法适用于任何ckpt模型,当然你需要确定ckpt模型输入/输出的节点名称。 目录 tensorflow实现将ckpt转pb文件 一、C...

AI吃大瓜的博客 8万+

魔兽RPG老地图逆向工程:解密三国列传3.0武将招募限制(附JASS实战)

本文详细解析了《三国列传3.0》魔兽RPG地图的武将招募限制机制,通过逆向工程和JASS脚本修改技术,突破SLK加密防线并解密游戏逻辑。文章提供了从工具准备到代码修改的完整实战指南,帮助玩家解除武将数量限制,重温经典游戏的乐趣。

i1j2k的博客 369

tensorflow ckpt模型和pb模型获取节点名称,以及ckpt转pb模型

ckpt from tensorflow.python import pywrap_tensorflow checkpoint_path = 'model.ckpt-8000' reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path) var_to_shape_map = reader.get_variable_to_sh...

qq_38109843的博客 4343

基于激光雷达与视觉融合的四旋翼无人机室内避障方法研究

本文研究了一种基于激光雷达与视觉融合的四旋翼无人机室内避障方法。针对单一传感器在室内环境中的局限性,提出通过激光雷达提供精确几何距离、视觉相机补充语义信息的融合方案。研究内容包括:搭建ROS硬件平台集成单目相机与2D激光雷达;设计基于扩展卡尔曼滤波的传感器融合模型;改进VFH算法结合视觉深度图进行路径规划。实验验证表明,该方法在复杂室内环境下具有较高的鲁棒性、实时性与避障成功率,为解决无GPS信号环境下的无人机自主导航问题提供了有效方案。

huanghm88的专栏 348

AI人工智能领域持续学习:提升技术能力的关键

在当今科技飞速发展的时代,AI人工智能已经渗透到我们生活的方方面面。本文章的目的就是帮助大家了解在AI人工智能领域持续学习的重要性,以及如何通过持续学习来提升自己的技术能力。文章会涵盖AI的核心概念、持续学习的原理和方法、实际应用场景等方面,让大家对AI领域的持续学习有一个全面的认识。本文首先会介绍AI人工智能的核心概念,让大家对这个领域有一个初步的了解。然后详细讲解持续学习的原理和方法,通过代码示例展示如何在实际项目中实现持续学习。接着会分析AI持续学习在不同场景的应用,推荐一些学习工具和资源。

AI 原生应用开发的博客 1289

Tensorflow① 模型转换 ckpt转pb h5转pb

此篇博客重在总结Tensorflow,Keras模型训练的模型文件转换为pb结构的方式,节省寻找转换工具的时间。 1. Tensorflow ckpt模型转换pb模型 我们在Tensorflow中训练出来的模型一般是ckpt格式的,一个ckpt文件对应有xxx.ckpt.data,xxx.ckpt.meta和xxx.ckpt.index三个内容。 而在生产环境中,一般C++只能加载pb的模型,...

g11d111的博客 1万+

(四)DDR协议命令波形时序一——(ACT、Read、Write)

文章目录一、DDR命令真值表二、ACT激活命令时序要求2.1、ACTIVATE波形——tRRD、tFAW2.2、ACTIVATE波形——tRAS、tRC三、Read命令时序要求3.1、Read 波形——无Additive Latency3.2、Read 波形——有Additive Latency3.3、Read 波形——Additive Latency使用场景 一、DDR命令真值表 DDR的Command命令由CKE、CS#、RAS#、CAS#、WE#信号组成,这几个信号进行不同的搭配组合会形成不同的Co

Mr.翟的博客 6872

tensorflow---ckpt模型转pb模型&pb模型的读取

前言: 将深度学习算法模型部署在移动端的时候,往往需要对tf的ckpt模型做冰冻(freeze),这时候就牵扯到将ckpt模型转pb模型,并将pb模型进行读取。 代码实现: 1.将ckpt模型转为pb模型: import tensorflow as tf from tensorflow.python.framework import graph_util import cv2 from ...

william_hehe的博客 1443

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Tensorflow训练的ckpt模型转pb代码

功能:将tensorflow1.几训练出来的ckpt模型转成pb模型 代码: # -*- coding: utf-8 -*- """ @author: fancp """ import tensorflow.compat.v1 as tf from nets import nets_factory from tensorflow.python.framework import graph_util FLAGS = tf.app.flags.FLAGS tf.app.flags.DEFINE_string(

小花生的博客 891

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Tensorflow基于pb模型进行预训练(pb模型转CKPT模型)

Tensorflow基于pb模型进行预训练(pb模型转CKPT模型)

weixin_43187585的博客 1717

深度学习工具包 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")

tensorflow模型文件(ckpt)转pb文件(不知道输出节点名)

网上关于tensorflow模型文件ckpt格式转pb文件的帖子很多,本人几乎尝试了所有方法,最后终于成功了,现总结如下。方法无外乎下面两种: 使用tensorflow.python.tools.freeze_graph.freeze_graph 使用graph_util.convert_variables_to_constants 1、tensorflow模型的文件解读 使用tensorf...

zkgoup的博客 3028

ubntu16.04 tensorflow模型ckpt转pb时遇到的问题

问题1:在冻结一个ckpt格式的模型为pb格式时,需要加载图数据,使用 tf.train.import_meta_graph 遇到的报错如下: op_def = op_dict[node.op] KeyError: 'IteratorGetDevice' 冻结的代码是没有问题,另一个模型是可以正常转换为pb格式的。经过网络查询,可以确定语音是模型构建时使用了tf.contrib的内容...

m2008h1的博客 2224

tensorflow ckpt 格式的model转pb 固化模型

程序一:ckpt转pb import tensorflow as tf from tensorflow.python.framework import graph_util from tensorflow.python.platform import gfile # 模型参数固化ckpt转pb def freeze_graph(input_meta,input_checkpoint, output_graph): ''' :param input_checkpoint: :

magic_shuang的博客 562

tensorflow 模型持久化(ckpt转pb模型)

1.tensorflow 模型持久化意义 在训练神经网络时候,我们需要报网络模型,网络模型中的权重参数保存下来,用于接下来继续训练和推理使用。我们可以保存为ckpt格式。详细说明见以前的博客如果把模型用于离线的预测推理,只需要前向传播的过程,获得推理结果,可以保存为PB格式模型。PB中保存前向传播中需变量和对应的权重,这是可以根据输入,计算出输出,pb模型适合终端部署。 1.1tensorflow ckpt保存 点击链接tensorflow ckpt保存 1.2PB模型 pb文件是...

thehappysheep的博客 616

tensorflow框架.ckpt .pb模型节点tensor_name打印及ckpt模型转.pb模型

转换模型首先要知道的是从哪个节点输出,如果没有源代码是很难清楚节点信息。 获取ckpt模型的节点名称 import os from tensorflow.python import pywrap_tensorflow checkpoint_path = os.path.join('./ade20k', "model.ckpt-27150") reader = pywrap_tensorf...

嘿芝麻的树洞 1万+
上一篇: densenet比resnet参数量少,但训练速度慢的原因分析
下一篇: 将keras训练的h5模型转成pb格式
dulingtingzi
博客等级 码龄11年 666粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值