matplotlib
动态绘图——神经网络训练过程可视化
本文使用 matplotlib
实现动态绘图,可以用于查看神经网络训练过程的损失值和评估指标的变化情况。
本文部分代码参考了《动手学深度学习》的
utils.py
中的函数。
matplotlib
动态绘图——神经网络训练过程可视化本文使用 matplotlib
实现动态绘图,可以用于查看神经网络训练过程的损失值和评估指标的变化情况。
本文部分代码参考了《动手学深度学习》的
utils.py
中的函数。
本文基于某饮料企业的工厂、仓库与商品相关的历史信息,结合随机模拟的售价与成本数据,构建了多工厂、多仓库的生产与补货优化模型。
数值试验表明,本文构建的优化后的生产与补货模型能够比基线模型(简单基于历史销量而固定生产量)多获得约 500 万元的利润,且在补货行为上更具优势。对工厂和仓库容量的灵敏度分析表明,工厂 2 和 DC4、5、7、14 多具有当前容量较小、运输成本低、历史销量高等特点,对它们进行扩容能够取得显著的回报增益。对整托约束的松弛表明,整托运输虽以节省运输成本为目的,但实际却可能造成运输资源的浪费,而考虑适当放松整托约束有潜力能够提高约 100 万元的利润。
本文使用 8 种经典的分类器,基于逆概率错误进行 Conformal Learning。
本文使用了 nonconformist
包,它在使用 Conformal Learning 进行分类预测时的核心步骤是:
InverseProbabilityErrFunc
,它等于 1-predict_probability[true_y]
。例如,某个样本的真实标签是 1,而模型预测出该样本属于标签 1 的概率是 0.9,则 ErrFunc 的值是 1-0.9=0.1。本项目的完整展示文件在这里。
本文整理了深度学习期末考试 Cheat Sheet。内容包括:
PDF 版 Cheat Sheet 在这里。
本文基于强化学习 DQN 算法,训练了一个登月着陆机器人。它能够采取向左右移动、向下喷射减缓速度等动作,在有干扰的环境下准确地降落在月球表面的指定区域。
本文使用 Python 实现了 Dijkstra 算法求解最短路径问题。在算法实现中,使用数组存储网络中各结点之间的距离,使用二叉堆存储 T 集合,并尽量使用向量化计算加快运行速度。
最终在三种网络结构下的运行时间为:
输入文件 | grid_150_150 | random_20000_40000 | dense_1000 |
---|---|---|---|
运行时间 | 302.93ms | 292.14ms | 135.29ms |
但在最开始实现 Dijkstra 算法时,我的程序需要花 5 秒才能完成计算。经过逐步优化,运行时间可以降为 3 秒甚至 0.13 秒。把算法效率优化到极致的过程是非常有收获的,既加深了对算法本身的理解,又学习了许多优化算法的经验。
优化算法的经验
NumPy
等科学计算库的实现细节。例如,在 NumPy
中,np.ones
和 np.empty
都可以用来创建指定形状的数组,其中 np.ones
会创建一个填充 1 的数组,而 np.empty
会在一块内存上创建一个未初始化的数组。由于 np.empty
不会进行初始化,因此生成速度要比 np.ones
更快。dtype=np.int32
或者 dtype=np.int16
,节约内存空间。不同整数数据类型所能表示的整数范围如下:Type | Capacity |
---|---|
Int16 | (-32,768 to +32,767) |
Int32 | (-2,147,483,648 to +2,147,483,647) |
Int64 | (-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807) |
Conformal Learning 是一种非参数统计方法,利用“样本属于某个标签时的离群程度”来进行回归和分类。本文分别使用“老忠实泉的爆发和等待时间数据”进行回归预测,使用“玻璃分类数据”进行多标签分类预测。
参考文献:A Tutorial on Conformal Prediction
回归问题
对于训练集的某一个样本 \(i\),找到离样本 \(i\) 最近的样本。
若最近的样本只有一个,记为样本 \(j\),则计算样本 \(i\) 和 样本 \(j\) 的标签之间的差值的绝对值;
若最近的样本有多个,则先计算这多个样本的标签的中位数,再将样本 \(i\) 的标签值与该中位数做差后取绝对值。
此“绝对值”就衡量了样本 \(i\) 的离群程度。
对于一个新样本 \(n\),同样找到离样本 \(n\) 最近的样本,用“离样本 \(n\) 最近的一个或多个样本的标签的中位数”作为新样本的标签预测值。
根据信心水平 \(level\)(例如 \(90\%\)),选定一个离群程度,使得该离群程度在所有训练样本的离群程度中的大小排名分位数是 \(1-level\)(例如 \(10\%\),即100个数中第10大的数)。
在该预测值的基础上加减上一步选定的离群程度,就得到新样本标签值的预测区间。
分类问题