Tensorflow2.0之实战汽车油耗预测

油耗预测实战 油耗预测实战 本文复现的是龙龙老师的第六章的油耗预测实战内容: 采用的数据集是Auto MPG数据集,首先输入所需要的库文件。 然后加载数据集,并复制读取的数据对新的对象上,避免对原始数据进行修改。 现在我们看一下程序下载下来的数据集缓存在哪里? 突然发现路径下没有 “.keras”文件夹。。。有点尴尬。一顿百度发现可能是隐藏了,果断Ctrl+h 尝试一下。 原来它在这里!!然后继续前进看下数据... 阅读详情

Tensorflow2.0之实战汽车油耗预测


完整代码在最后面

数据集

我们采用Auto MPG 数据集,它记录了各种汽车效能指标与气缸数、重量、马力等其它因子的真实数据,查看数据集的前5 项,如表 6.1 所示,其中每个字段的含义列在表6.2 中。除了产地的数字字段表示类别外,其他字段都是数值类型。对于产地地段,1 表示美国,2 表示欧洲,3 表示日本。
在这里插入图片描述

代码(数据集处理)

导入模块

import tensorflow as tf
import pandas as pd
from tensorflow import keras
from tensorflow.keras import layers, losses
import matplotlib.pyplot as mp

读取数据集

Auto MPG 数据集一共记录了398 项数据,我们从UCI 服务器下载并读取数据集到DataFrame 对象中,代码如下:

# 在线下载汽车效能数据集
dataset_path = keras.utils.get_file("auto-mpg.data",
                                    "http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data")

# 效能(公里数每加仑),气缸数,排量,马力,重量
# 加速度,型号年份,产地
column_names = ['MPG', 'Cylinders', 'Displacement', 'Horsepower', 'Weight',
                'Acceleration', 'Model Year', 'Origin']
raw_dataset = pd.read_csv(dataset_path, names=column_names,
                          na_values="?", comment='\t',
                          sep=" ", skipinitialspace=True)

对数据集进行处理

首先我们发现数据集中又叫做Origin的一列,1表示美国,2表示欧洲,3表示日本。我们对这一列进行如下处理:

# delete origin row and get it
origin = raw_dataset.pop('Origin')
dataset = raw_dataset.copy()
# use continues' name instead origin
dataset['USA'] = (origin == 1) * 1.0
dataset['Europe'] = (origin == 2) * 1.0
dataset['Japan'] = (origin == 3) * 1.0

之后以为数据集中有一些空白项,所以我们将其删除

# clear blank data
dataset = dataset.dropna()

切割测试集和训练集

按8:2的比例分为训练集和测试集

# splice data to get train_db and test_db (8:2)
train_dataset = dataset.sample(frac=0.8, random_state=0)
test_dataset = dataset.drop(train_dataset.index)

获取标签

获取标签并将其从训练集和测试集中删除,同时使用panads中的decribe()方法获取训练集的均方差,标准差等信息

# splice data to get train_db and test_db (8:2)
train_dataset = dataset.sample(frac=0.8, random_state=0)
test_dataset = dataset.drop(train_dataset.index)
# get MPG labels meantime pop it from dataset
train_labels = train_dataset.pop('MPG')
test_labels = test_dataset.pop('MPG')
# get statistical data
train_stats = train_dataset.describe()
train_stats = train_stats.transpose()

标准化函数

为什么要标准化呢? 简要地说,为了保证网络可以良好的收敛,在不清楚各个维度的相对重要程度之前,标准化使得输入的各个维度分布相近,从而允许我们在网络训练过程中,对各个维度“一视同仁”(即设置相同的学习率、正则项系数、权重初始化、以及激活函数)。反过来,当我们使用全局相同的学习率、权重初始化、以及激活函数等网络设置时,方差更大的维度将获得更多的重视。

def norm(dataset):
    return (dataset - train_stats['mean']) / train_stats['std']


normed_train_data = norm(train_dataset)
normed_test_data = norm(test_dataset)

构建dataset结构的训练集

# structure tf dataset
train_db = tf.data.Dataset.from_tensor_slices((normed_train_data.values, train_labels.values))
train_db = train_db.shuffle(1000).batch(32)

代码(网络搭建和训练)

创建网络:

考虑到 Auto MPG 数据集规模较小,我们只创建一个3 层的全连接网络来完成MPG值的预测任务。输入𝑿的特征共有9 种,因此第一层的输入节点数为9。第一层、第二层的输出节点数设计为64和64,由于只有一种预测值,输出层输出节点设计为1。考虑MPG ∈𝑅+,因此输出层的激活函数可以不加,也可以添加ReLU 激活函数。
我们将网络实现为一个自定义网络类,只需要在初始化函数中创建各个子网络层,并在前向计算函数call 中实现自定义网络类的计算逻辑即可。自定义网络类继承自keras.Model 基类,这也是自定义网络类的标准写法,以方便地利用keras.Model 基类提供的trainable_variables、save_weights 等各种便捷功能。网络模型类实现如下:

class Network(keras.Model):
    def __init__(self):
        super(Network, self).__init__()
        # create three connection layers
        self.fc1 = layers.Dense(64, activation='relu')
        self.fc2 = layers.Dense(64, activation='relu')
        self.fc3 = layers.Dense(1, activation='relu')

    def call(self, inputs, training=None, mask=None):
        # loop through three connection layers
        result = self.fc1(inputs)
        result = self.fc2(result)
        result = self.fc3(result)
        return result

测试和训练

在完成主网络模型类的创建后,我们来实例化网络对象和创建优化器,之后就可以进行训练了。接下来实现网络训练部分,通过Epoch 和Step 组成的双层循环训练网络,共训练200个Epoch,在训练的过程中将mae loss 保存,之后进行画图对比

model = Network()
model.build(input_shape=(4, 9))
# create optimizer
optimizer = tf.keras.optimizers.RMSprop(0.001)
# create list to save data
test_loss = []
train_loss = []
# train
for epoch in range(200):
    for step, (x, y) in enumerate(train_db):
        with tf.GradientTape() as type:
            out = model.call(x)
            loss = tf.reduce_mean(losses.MSE(y, out))
            mae_loss = tf.reduce_mean(losses.MAE(y, out))
        if step % 10 == 0:
            print(epoch, step, float(loss))
        grads = type.gradient(loss, model.trainable_variables)
        # update params
        optimizer.apply_gradients(zip(grads, model.trainable_variables))
    train_loss.append(float(mae_loss))
    out = model.call(tf.constant(normed_test_data.values))
    test_loss.append(tf.reduce_mean(losses.MAE(test_labels, out)))

画图

# draw picture
mp.figure()
mp.xlabel('Epoch')
mp.ylabel('MAE')
mp.plot(train_loss, label='Train')
mp.plot(test_loss, label='Test')
mp.savefig('auto.svg')
mp.show()

完整代码:

import tensorflow as tf
import pandas as pd
import seaborn as sns
from tensorflow import keras
from tensorflow.keras import layers, losses

# 加速度,型号年份,产地
column_names = ['MPG', 'Cylinders', 'Displacement', 'Horsepower', 'Weight', 'Acceleration', 'Model Year', 'Origin']
raw_dataset = pd.read_csv("auto-mpg.data",
                          names=column_names,
                          na_values="?",
                          comment='\t',
                          sep=" ",
                          skipinitialspace=True)
dataset = raw_dataset.copy()
dataset = dataset.dropna()  # 删除空白数据项
origin = dataset.pop('Origin')
dataset['USA'] = (origin == 1) * 1.0
dataset['Europe'] = (origin == 2) * 1.0
dataset['Japen'] = (origin == 3) * 1.0

train_dataset = dataset.sample(frac=0.8, random_state=0)
test_dataset = dataset.drop(train_dataset.index)
# %% 统计数据
sns.pairplot(train_dataset[["Cylinders", "Displacement", "Weight", "MPG"]],
             diag_kind="kde")
train_stats = train_dataset.describe()
train_stats.pop('MPG')
train_stats = train_stats.transpose()
train_labels = train_dataset.pop('MPG')
test_labels = test_dataset.pop('MPG')


def norm(dataset):
    return (dataset - train_stats['mean']) / train_stats['std']


normed_train_data = norm(train_dataset)
normed_test_data = norm(test_dataset)
print(normed_train_data.shape, train_labels.shape)
print(normed_test_data.shape, test_labels.shape)
train_db = tf.data.Dataset.from_tensor_slices((normed_train_data.values, train_labels.values))
train_db = train_db.shuffle(100).batch(32)


class Network(keras.Model):
    def __init__(self):
        super(Network, self).__init__()
        self.fc1 = layers.Dense(64, activation='relu')
        self.fc2 = layers.Dense(64, activation='relu')
        self.fc3 = layers.Dense(1, activation='relu')

    def call(self, inputs, training=None, mask=None):
        x = self.fc1(inputs)
        x = self.fc2(x)
        x = self.fc3(x)
        return x


model = Network()
model.build(input_shape=(4, 9))
print(model.summary())
optimizer = tf.keras.optimizers.RMSprop(0.001)

for epoch in range(200):
    for step, (x, y) in enumerate(train_db):
        with tf.GradientTape() as tape:
            out = model.call(x)
            loss = tf.reduce_mean(losses.MSE(y, out))
            mae_loss = tf.reduce_mean(losses.MAE(y,out))
        if step%10==0:
            print(epoch,step,float(loss))
        grads = tape.gradient(loss,model.trainable_variables)
        optimizer.apply_gradients=(zip(grads,model.trainable_variables))


TensorFlow 油耗实战预测 最全代码和最详细注释 TensorFlow 油耗实战预测 最全代码和最详细注释,2.2.0的tf版本。亲测可用。在官网和龙龙老师的基础上进行了完善注释,小白都看得懂。 立即下载

相关推荐

光学仿真案例(1) 铌酸锂非线性波导仿真模拟 FDTD仿真

在过去几年里,许多集成光子学应用往往需要多个相干可调谐光源,而且从外部激光器引入额外的光输入增加了芯片封装的复杂性,如果使用基于III-V族、氮化硅(SiN)或铌酸锂(LNO)的集成光源又大大增加了制造复杂性和成本。然而,通过非线性谐波相互作用产生的光源不需要额外的制造工艺来产生增益、反馈和外部电路,即可支持许多应用。在下面的案例中,演示了一种基于Luo[1]的铌酸锂波导频率转换集成系统。该案例主要仿真了利用温度调制实现高效相位匹配的铌酸锂纳米光子波导的二次谐波产生。

q895235273的博客 4145

TensorFlow深度学习3--汽车油耗预测实战

本节我们将利用全连接网络模型来完成汽车的效能指标 MPG(Mile Per Gallon,每加仑燃油英里数)的预测问题实战。 1、数据集 我们采用Auto MPG数据集,它记录了各种汽车效能指标与气缸数、重量、马力等其它因子的真实数据,查看数据集的前 5项,如表1所示,其中每个字段的含义列在表2中。除了产地的数字字段表示类别外,其他字段都是数值类型。对于产地地段,1表示美国,2 表示欧洲,3 表示日本。 ...

qq_31391601的博客 2959

【UV打印机】PrintExp打印软件教程(六)-高级模式(马达)

输入高级模式密码进入高级模式高级模式界面有操作栏、控制栏、参数栏及参数界面操作栏名称功能说明文件加载数据从板卡加载参数保存将参数保存到主板退出退出高级模式固件导入固件导入配套版本下的固件配置*xpcfx导出固件导出当前使用的固件配置*xpcfx导入波形文件导入对应的波形文件*waf操作初始化系统继续初始化动作复位X轴复位回原点控制栏可进行小车运动、闪喷操作(此闪喷为点击进行闪喷,不受平台位置限制),无清洗功能。

Print World的专栏 3112

(3-4)TensorFlow前馈神经网络实战:汽车油耗预测实战(使用神经网络实现分类)

请看下面的实例文件wang02.py,功能是采用 Auto MPG 数据集,然后使用TensorFlow创建一个神经网络模型预测汽车的油耗。实现数据的标准化处理,通过回归网络创建3个全连接层,然后通过函数build_model()创建网络模型。数据集中的前5项数据如下表3-1所示。此时执行后会输出如图3-6所示的效果。表3-1 数据集中的前5项数据。执行后的效果如图3-5所示。执行后的效果如图3-7所示。图3-5 数据集可视化。图3-6 处理后的数据。图3-7 执行效果。

码农三叔 777

stm32f407VET6 系统学习 day01 GPIO 配置

stm32f407VET6 系统学习 day01 GPIO 配置 LED 蜂鸣器 按键的不讲了,之前讲过了

she666666的博客 8907

大模型面试题34:Transformer的Encoder和Decoder区别与协作

Encoder:双向自注意力,专注理解输入,输出语义特征;Decoder:掩码自注意力+编码器-解码器注意力,专注生成输出,实现语义对齐。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 813

汽车油耗预测实战

这里将利用全连接网络模型来完成汽车的效能指标 MPG(Mile Per Gallon, 每加仑燃油英里数)的预测问题实战 一、加载数据集以及数据集的处理 官方数据集在下载时,出现链接超时的失败问题,可以使用百度云下载数据集,然后放在.keras文件夹下http://链接:https://pan.baidu.com/s/1GEKol03p9nraw-kscE7bXw提取码:llkq 无论是否是去Auto MPG下载的数据集,还是网盘的数据集,都还是调用以下方法加载数据集本地路径 #...

风间琉璃的博客 3329

消息平台接入实战:Hermes Agent 实现微信/钉钉日常任务自动化的 4 步配置

揭示 Hermes Agent 接入微信/钉钉时高频失效的根本原因——非 API 调用问题,而是上下文边界缺失;详解通过 soul.md 锁定人格基线、skills/ 目录原子化封装技能、CLAUDE.md 控制记忆节奏、Docker 环境适配四步构建可信赖自动化信任链,并给出身份证号过滤、中文标点

weixin_42520239的博客 165

共轭梯度法在社交网络中的分析

1.背景介绍 社交网络在过去的两十年里迅速成为了人们日常生活中不可或缺的一部分。随着互联网的普及和智能手机的普及,人们在社交网络中建立了广泛的联系,这些联系不仅仅是个人的,还包括企业、政府、组织等各种各样的组织。社交网络为人们提供了一个平台,可以让他们轻松地与他人互动、分享信息、发现新的机会和资源。 然而,社交网络也面临着一系列挑战。首先,社交网络数据量巨大,每天都在增长。这些数据包括用户的个...

AI天才研究院 1124

wvp gb28181 pro 平台国标级连功能说明

国标28181不同平台之间支持两种连接方式,平级和上下级,WVP目前支持向上级级联。

zengliguang的专栏 3888

基于STM32、HAL库的IP5356M快充协议芯片简介及驱动程序设计

@param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。

corlin6688的博客 1222

Python实现汽车油耗预测_基于Tensorflow2.X

利用全连接网络模型来完成汽车的效能指标 MPG的预测问题实战,并附有matplotlib无法正常显示中文的解决方案

zzp20031120的博客 2191

Jetson Thor平台JP7.0版本96712 GMSL相机驱动调试记录

摘要:本文档记录了在Thor Custom Board (JP7.0GA)上配置GMSL摄像头时遇到的视频流问题及调试过程。问题表现为视频设备(/dev/video11)能正常创建,但获取视频时出现"Internal data stream error",而相同配置在AGX Orin JP6.0上运行正常。通过梳理硬件拓扑、v4l2-ctl测试、提升时钟频率及分析内核日志,发现VI引擎未接收到帧数据包。调试步骤包括检查设备树冲突、调整I2C总线配置、修正通道名称,最终通过屏蔽传感器启动时

jzwjzw19900922的博客 1112

深度学习之汽车油耗预测实战_基于Tensorflow2.0

阅读之前看这里????:博主是正在学习数据分析的一员,博客记录的是在学习过程中一些总结,也希望和大家一起进步,在记录之时,未免存在很多疏漏和不全,如有问题,还请私聊博主指正。 博客地址:天阑之蓝的博客,学习过程中不免有困难和迷茫,希望大家都能在这学习的过程中肯定自己,超越自己,最终创造自己。 之前学了一两周的Tensorflow2.0以及深度学习,此案例是书上,自己记录下来练练手,熟悉一下整个Tensorflow的基础和练习。 一、汽车油耗数据集 此数据集是采用的Auto MPG的数据集,它记录了各种汽车

天阑之蓝的博客 3729

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

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

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【TensorFlow2.0】感知机、全连接层、神经网络、激活函数、输出层、误差计算、神经网络类型、汽车油耗预测实战

一、感知机   感知机模型接受长度为n的一维向量???? = [????1, ????2, … , ????????],每个输入节点通过权值为????????,i∈[1,n]的连接汇集为变量为z,即???? = ????1 ????1 + ????2 ????2 + ⋯ + ???????? ???????? + ????。????称为感知机的偏置(Bias),一维向量???? = [????1, ????2, … , ????????]称为感知机的权值(Weight)。通过在线性模型后添加激活函数后得到活

qq_36926037的博客 1826

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

tensorflow2 auto mpg汽车油耗预测实践(3.5节)

auto-mpg数据集预测汽车耗油的实践 tensorflow2 汽车油耗预测实践 1. 数据集 1.1 Auto MPG 1.2 数据清洗 1.3 数据处理 1.4 标准化 2. 搭建神经网络 3. 训练 4. 画图与结果分析

泥签的博客 4556

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TensorFlow从1到2(七)线性回归模型预测汽车油耗以及训练过程优化

线性回归模型 “回归”这个词,既是Regression算法的名称,也代表了不同的计算结果。当然结果也是由算法决定的。 不同于前面讲过的多个分类算法或者逻辑回归,线性回归模型的结果是一个连续的值。 实际上我们第一篇的房价预测就属于线性回归算法,如果把这个模型用于预测,结果是一个连续值而不是有限的分类。 从代码上讲,那个例子更多的是为了延续从TensorFlow 1.x而来的解题思路,我不想在这个系...

weixin_34129145的博客 1563

Auto MPG 汽车油耗预测(tensorflow深度学习龙书笔记)

利用全连接网络模型来完成汽车的效能指标 MPG(Mile Per Gallon,每加仑燃油英里数)的预测问题实战 数据集 我们采用 Auto MPG 数据集,它记录了各种汽车效能指标与气缸数、重量、马力等其 它因子的真实数据,查看数据集的前 5 项,如表 6.1 所示,其中每个字段的含义列在表6.2 中。除了产地的数字字段表示类别外,其他字段都是数值类型。对于产地地段,1 表示美国,2 表示欧洲,3 表示日本 # 在线下载汽车效能数据集 dataset_path = keras.utils.get_f

weixin_45743707的博客 4110

基于TensorFlow的油耗预测(全连接神经网络)

基于TensorFlow的油耗预测1.数据集2.创建网格3.训练与测试 利用全连接网络完成汽车的效能指标 MPG 的回归问题预测。 1.数据集 Auto MPG 数据集,它记录了各种汽车效能指标与气缸数、重量、马力等其 他因子的真实数据,查看数据集的前 5 项,如表所示,其中每个字段的含义列在表中。除了产地的数字字段表示类别外,其他字段都是数值型。对于产地地段,1 表 示美国,2 表示欧洲,3 表示日本。 import pandas as pd # 获取数据 dataset_path = '框架学习/ten

Rocket,Qian的博客 1639

深度学习入门实战:用TensorFlow预测汽车油耗

回归任务是理解神经网络本质的最佳入口,而汽车油耗预测是经典的回归问题。通过TensorFlow和Keras,可以快速搭建全连接网络,但特征标准化和训练循环的底层实现是关键。特征标准化能解决量纲差异,加速梯度下降收敛;手写训练循环则能深入理解GradientTape和优化器的工作原理。这些技术不仅适用于油耗预测,也是各类回归任务的基础。掌握后,可轻松迁移到房价预测、销量预测等场景。本文以汽车油耗预测为例,带你从零实现一个完整的深度学习项目。

weixin_29054195的博客 161

TensorFlow实战:汽车油耗预测深度学习回归入门

回归预测是机器学习中的基础任务,通过最小化预测值与真实值的误差来拟合连续变量。在TensorFlow中,利用Keras API可以快速搭建全连接神经网络,配合均方误差损失函数和Adam优化器实现高效训练。数据标准化和缺失值处理是保证模型收敛的关键步骤,而学习率衰减与早停法则能有效提升泛化能力。这类技术广泛应用于汽车油耗预测、房价预估等场景。本文以汽车油耗数据集为例,完整演示从数据预处理到模型评估的深度学习实战流程,帮助读者掌握TensorFlow回归建模的核心技能。

weixin_34189116的博客 272

Tensorflow油耗预测实战

加载数据 dataset_path = keras.utils.get_file("auto-mpg.data", "http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data") 命名数据表名称 column_names = ['MPG','Cylinders','Displacement','Horsepower','Weight', 'Acceleration', 'Model Year'.

鱼之天空的博客 1003

tensorflow:使用TensorFlow实现神经网络模型的创建

文章目录神经网络1.全连接层1.1 张量方式实现1.2 层方式实现2.神经网络2.1 张量方式实现2.2 层方式实现3.激活函数3.1 Sigmoid3.2 ReLU3.3 LeakyReLU3.4 Tanh4.输出层设计4.1Softmax5.误差计算5.1 均方差误差函数5.2 交叉熵误差函数6.汽车油耗预测实战 神经网络 1.全连接层 输出向量为???? = [????1, ????2]。整个网络层可以通过一次矩阵运算完成: 1.1 张量方式实现 在 TensorFlow 中,要实现全连接层,只需要

逐梦er的博客 1万+

TensorFlow2.0之汽车油耗实战-注释超详细

TensorFlow之汽车油耗实战-注释超详细

shengxing_stu的博客 481

TensorFlow油耗预测实战:从OBD数据到车载嵌入式部署

汽车油耗预测是典型的时序回归问题,本质是将驾驶行为、车辆状态与环境因素等多源异构数据映射为能量消耗模型。其核心原理在于捕捉非线性动力学关系——如急加速-滑行循环、坡度做功、空调负荷等物理过程,而非简单拟合统计均值。技术价值体现在突破传统台架测试局限,实现个性化、实时化能耗推演,支撑智能能源管理与驾驶行为分析。典型应用场景包括车载实时油耗提示、保险UBI精算、新能源车能量回收优化等。本实践以TensorFlow为框架,聚焦OBD-II传感器数据建模与LSTM时序预测,覆盖从高精度数据采集、驾驶行为特征工程到T

weixin_29058331的博客 307

汽车油耗预测(tensorflow2)

【代码】汽车油耗预测(tensorflow2)

weixin_42343912的博客 390
上一篇: Tensorflow2.0之输出层设计
下一篇: Tensorflow2.0 Keras高层接口之Softmax网络层类
AndSonder
博客等级 码龄7年 364粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值