Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MachineLearning

个人机器学习实验 / 踩坑记录仓库。主线是把 Wolfram (Mathematica) 训练并导出的神经网络模型,在 Python 框架(主要是 MXNet)里重新加载并复现推理结果,外加 xgboost / xlearn 两个独立的小实验。

姐妹仓库:MathematicaMachineLearning —— 通用 ML 知识,映射到 Mathematica 中对照。本仓库偏「具体实验与问题记录」,姐妹仓库偏「通用知识对照」。

踩坑点的汇总见 PROBLEMS.md


注意事项(先读)

  • 代码原本是 Python 2print x 形式)。仓库内脚本已陆续向 Python 3 迁移,但未经运行验证(见下)。
  • 仓库根目录下的 mxnet/xgboost/ 文件夹会遮蔽同名的真实库:在仓库根目录直接 import mxnet 会导入本地文件夹而非 MXNet。运行脚本时请在脚本所在子目录下,或调整 sys.path
  • 早期脚本里散落大量硬编码绝对路径/Users/hypergroups/.../home/.../mnt/hgfs/...)。可复现的脚本已改为基于 __file__ 的仓库相对路径;引用了仓库未包含的模型的脚本,在文件顶部留了可配置常量并加了注释。
  • 版本对应关系:MXNet 1.0 ↔ Mathematica 11.3;MXNet 1.4 ↔ Mathematica 12.0

目录结构

mxnet/                          MXNet 加载 Wolfram 导出模型(主体)
  python/
    1.0/                        MXNet 1.0 / Mma 11.3
      model-wolfram/            导出的模型:LeNet / object_count / simple model
                                / wolfram.lstm / example(*-symbol.json + *-0000.params)
      script/
        myPath.py               基于 __file__ 计算 root_dir 的公共路径助手
        wolfram_v1/             第一版加载脚本(LeNet / object_count / lstm / no_lstm)
        wolfram_v1a/            v1 的图像 RGB 变体(test_rgb.py)
        wolfram_v2/             第二版迭代
    1.4/                        MXNet 1.4 / Mma 12.0
      script/mma12.0/           test_lstm.py、tempa.py、model.mma12.0/
    Data/                       测试图片(horse / little_girl / 8 等)
    python/problem/v1.1.3/      good.nd.bind.py(标记「可用」的 11.3/12.0 双版本对照)
    predict_image.ipynb         预测笔记本

wolfram-mxnet/                  跨 Wolfram 11.3 / 12.0 版本对比,独立成组
  model-wolfram/               11.3 与 12.0 两套 lstm / simple model 参数
  python/load_bind_test1.py    最完整:11.3 与 12.0 并排加载预测
  test.py

xgboost/problem_v0.7/          xgboost gblinear 二分类实验(含一个待排查问题,见 PROBLEMS.md)
  train.py  train  test  log.v0.6  log.v0.71  model_lr.dump.head

xlearn/problem/                xlearn (FM/FFM) 稀疏数据实验(含内存问题,见 PROBLEMS.md)
  train.problem.5  *.bin  *.model  memory.PNG

核心套路(贯穿 MXNet 脚本)

加载 Wolfram 导出模型并推理的通用流程:

  1. sym = mx.symbol.load(<...>-symbol.json)
  2. nd = mx.nd.load(<...>-0000.params)
  3. 手动填入输入与 LSTM 初始状态:
    • nd["Input"] = <数据>
    • nd["4.State"] = mx.nd.array([[0,0,0,0,0]])
    • nd["4.CellState"] = mx.nd.array([[0,0,0,0,0]])
    • (Mma 12.0 的模型还需要额外的 nd["Nodes"],从 *.nodes.txt 读取)
  4. e = sym.bind(ctx, nd)e.forward()out[0].asnumpy()

图像预处理(对应 Wolfram 的 NetEncoder["Image"] 约定): img = 1 - asarray(img)/255,并 transpose(batch, RGB, H, W),尺寸 224×224。注意 1 - x 的颜色反相是关键的一步。


各板块速览

板块 做什么 入口脚本
mxnet/.../wolfram_v1·v1a·v2 同一批模型(LeNet / object_count / lstm)的多轮加载调试 wolfram.inception_v1.object_count.py
mxnet/python/problem/v1.1.3 标记可用的 11.3/12.0 对照 good.nd.bind.py
wolfram-mxnet 11.3 vs 12.0 lstm 加载差异(12.0 多 Nodes 输入) python/load_bind_test1.py
xgboost/problem_v0.7 gblinear 二分类,含 AUC 恒为 0.5 的问题 train.py
xlearn/problem FM/FFM 稀疏数据,含内存问题 (数据 + 截图)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages