深度学习与TensorFlow核心技巧解析

83、使用1周期调度重新训练你的模型,看看是否能提高训练速度和模型准确率。

实现1周期调度并不困难,只需创建一个自定义回调函数,在每次迭代时修改学习率(可通过更改 self.model.optimizer.lr 来更新优化器的学习率)。

84、如何用一句话描述TensorFlow?它的主要特点有哪些?请列举其他流行的深度学习库。

TensorFlow简介

TensorFlow 是一个用于数值计算的 开源库 ,特别适合 大规模机器学习

主要特点

  • 核心与 NumPy 相似,但支持 GPU
  • 支持分布式计算
  • 具有计算图分析和优化能力(图格式可移植)
  • 提供基于反向自动微分的优化 API
  • 拥有强大的 API,如:
  • tf.keras
  • tf.data

其他流行的深度学习库

  • PyTorch
  • MXNet
  • Microsoft Cognitive Toolkit
  • Theano
  • Caffe2
  • Chainer

85、TensorFlow 能直接替代 NumPy 吗?两者的主要区别是什么?

TensorFlow 不能直接替代 NumPy,主要区别有:

  1. 函数名称不总是相同 ,如 tf.reduce_sum() np.sum()
  2. 部分函数行为不完全一样 ,如 tf.transpose() 创建张量的转置副本,而 NumPy 的 T 属性创建转置视图,不实际复制数据。
  3. NumPy 数组是可变的 ,而 TensorFlow 张量不可变,但可使用 tf.Variable 创建可变对象。

86、除了常规张量外,你能说出 TensorFlow 中另外六种数据结构吗?

可以,这六种数据结构分别是字符串、不规则张量、稀疏张量、张量数组、集合和队列。

87、自定义损失函数可以通过编写函数或继承 keras.losses.Loss 类来定义。什么时候使用哪种方法呢?

如果自定义损失函数不需要支持超参数或其他状态,一般可以将其实现为常规的 Python 函数。

如果自定义损失函数需要支持超参数或其他状态,则应继承 keras.losses.Loss 类并实现 __init__() call() 方法。

若希望损失函数的超参数与模型一起保存,还必须实现 get_config() 方法。

88、同样,自定义指标可以用函数或 keras.metrics.Metric 的子类来定义。何时应使用这两种方式呢?

若自定义指标无需支持超参数或其他状态,可将其定义为普通 Python 函数;若要支持超参数或其他状态,或者计算整个 epoch 的指标不等同于计算该 epoch 所有批次的平均指标(如精确率和召回率指标),则应使用 keras.metrics.Metric 的子类,并实现 __init__() update_state() result() 方法来跟踪每个 epoch 的运行指标,还需实现 reset_states() 方法(除非只需将所有变量重置为 0.0)。若要将状态与模型一起保存,还应实现 get_config() 方法。

89、什么时候应该创建自定义层,而什么时候应该创建自定义模型?

通常,模型的内部组件(即层或可复用的层块)应创建为自定义层,需继承 Layer 类;而要训练的对象应创建为自定义模型,需继承 Model 类。

90、哪些用例需要编写自定义训练循环?

  1. fit() 方法不够灵活时,如《Wide & Deep》论文使用两个不同的优化器,一个用于宽路径,另一个用于深路径,而 fit() 方法只使用一个优化器,此时需要编写自定义循环。

  2. 为了更确信训练循环能精确执行预期操作,对 fit() 方法的某些细节不确定时,也可编写自定义训练循环。

91、自定义Keras组件可以包含任意Python代码,还是必须能转换为TF函数?

自定义Keras组件应该能转换为TF函数,即应尽可能使用TF操作并遵守“TF函数规则”中的所有规则。但如果确实需要在自定义组件中包含任意Python代码,可以将其包装在 tf.py_function() 操作中(会降低性能并限制模型的可移植性),或者在创建自定义层或模型时设置 dynamic=True ,或在调用模型的 compile() 方法时设置 run_eagerly=True

92、如果想将一个函数转换为 TF 函数,需要遵守哪些主要规则?

  1. 若函数有副作用(如打印内容、更新 Python 计数器),副作用仅在函数被追踪时发生;
  2. 可将任意 Python 代码包装在 tf.py_function() 操作中,但会影响性能和可移植性;
  3. 可调用其他 Python 函数或 TF 函数,它们也需遵循相同规则;
  4. 若函数创建 TensorFlow 变量或有状态对象,必须在首次调用时创建,通常最好在 TF 函数外创建变量,赋值时使用 assign() 方法;
  5. 函数的 Python 源代码要对 TensorFlow 可用;
  6. 仅捕获对张量或数据集进行迭代的 for 循环,使用 for i in tf.range(x) 而非 for i in range(x)
【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)内容概要:本文研究了一种基于机器学习(ML)和离散小波变换(DWT)的电能质量扰动分类方法,并提供了Matlab实现方案。首先利用DWT对电能质量信号进行多尺度分解,提取信号的时频域特征,有效捕捉电压暂降、暂升、中断、谐波、闪变等常见扰动的关键信息;随后结合机器学习分类器(如SVM、BP神经网络等)对提取的特征进行训练分类,实现对不同类型扰动的自动识别准确区分。该方法充分发挥DWT在信号去噪特征提取方面的优势,结合ML强大的模式识别能力,提升了分类精度鲁棒性,具有较强的实用价值。; 适合人群:电气工程、自动化、电力系统及其自动化等相关专业的研究生、科研人员及从事电能质量监测分析的工程技术人员;具备一定的信号处理基础和Matlab编程能力者更佳。; 使用场景及目标:①应用于智能电网中的电能质量在线监测系统,实现扰动类型的自动识别;②作为高校或科研机构在信号处理、模式识别、电力系统分析等课程的教学案例或科研实验平台;③目标是提高电能质量扰动分类的准确性效率,为后续的电能治理设备保护提供决策依据。; 阅读建议:建议读者结合Matlab代码深入理解DWT的实现过程特征提取步骤,重点关注小波基选择、分解层数设定及特征向量构造对分类性能的影响,并尝试对比不同机器学习模型的分类效果,以全面掌握该方法的核心技术要点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值