[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-rasmusbergpalm--DeepLearnToolbox":3,"similar-rasmusbergpalm--DeepLearnToolbox":84},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":15,"owner_avatar_url":16,"owner_bio":17,"owner_company":17,"owner_location":17,"owner_email":17,"owner_twitter":17,"owner_website":17,"owner_url":18,"languages":19,"stars":31,"forks":32,"last_commit_at":33,"license":34,"difficulty_score":35,"env_os":36,"env_gpu":37,"env_ram":38,"env_deps":39,"category_tags":43,"github_topics":17,"view_count":35,"oss_zip_url":17,"oss_zip_packed_at":17,"status":45,"created_at":46,"updated_at":47,"faqs":48,"releases":83},9099,"rasmusbergpalm\u002FDeepLearnToolbox","DeepLearnToolbox","Matlab\u002FOctave toolbox for deep learning. Includes Deep Belief Nets, Stacked Autoencoders, Convolutional Neural Nets, Convolutional Autoencoders and vanilla Neural Nets. Each method has examples to get you started.","DeepLearnToolbox 是一款基于 Matlab\u002FOctave 的深度学习工具箱，旨在帮助使用者快速构建和实验深层分层模型。它涵盖了深度信念网络（DBN）、堆叠自编码器（SAE）、卷积神经网络（CNN）及其变体等多种经典算法，并为每种方法提供了完整的示例代码，有效降低了从零实现复杂神经网络的门槛。\n\n该工具主要解决了早期深度学习研究中算法复现难、入门曲线陡峭的问题，让研究者能专注于模型理论验证而非底层代码编写。其技术亮点在于模块化设计清晰，将不同网络结构封装为独立库，并支持可视化权重等调试功能，非常适合用于教学演示或原型验证。\n\n鉴于官方已明确声明该项目停止维护，且当前业界主流已转向 TensorFlow、PyTorch 等现代框架，DeepLearnToolbox 不再推荐用于生产环境或前沿科研。它更适合对深度学习历史演进感兴趣的研究人员、需要复现经典论文结果的学者，以及希望在 Matlab 环境中理解神经网络基础原理的学生。对于追求高性能计算和最新模型架构的开发者，建议优先考虑其他现代化工具。","\nDeprecation notice.\n-----\n\nThis toolbox is outdated and no longer maintained.\n\nThere are much better tools available for deep learning than this toolbox, e.g. [Theano](http:\u002F\u002Fdeeplearning.net\u002Fsoftware\u002Ftheano\u002F), [torch](http:\u002F\u002Ftorch.ch\u002F) or [tensorflow](http:\u002F\u002Fwww.tensorflow.org\u002F)\n\nI would suggest you use one of the tools mentioned above rather than use this toolbox.\n\nBest, Rasmus.\n\nDeepLearnToolbox\n================\n\nA Matlab toolbox for Deep Learning.\n\nDeep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.\nIt is inspired by the human brain's apparent deep (layered, hierarchical) architecture.\nA good overview of the theory of Deep Learning theory is\n[Learning Deep Architectures for AI](http:\u002F\u002Fwww.iro.umontreal.ca\u002F~bengioy\u002Fpapers\u002Fftml_book.pdf)\n\nFor a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.\n\n* [The Next Generation of Neural Networks](http:\u002F\u002Fwww.youtube.com\u002Fwatch?v=AyzOUbkUf3M) (Hinton, 2007)\n* [Recent Developments in Deep Learning](http:\u002F\u002Fwww.youtube.com\u002Fwatch?v=VdIURAu1-aU) (Hinton, 2010)\n* [Unsupervised Feature Learning and Deep Learning](http:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ZmNOAtZIgIk) (Ng, 2011)\n\nIf you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http:\u002F\u002Fwww2.imm.dtu.dk\u002Fpubdb\u002Fviews\u002Fpublication_details.php?id=6284)\n\n```\n@MASTERSTHESIS\\{IMM2012-06284,\n    author       = \"R. B. Palm\",\n    title        = \"Prediction as a candidate for learning deep hierarchical models of data\",\n    year         = \"2012\",\n}\n```\n\nContact: rasmusbergpalm at gmail dot com\n\nDirectories included in the toolbox\n-----------------------------------\n\n`NN\u002F`   - A library for Feedforward Backpropagation Neural Networks\n\n`CNN\u002F`  - A library for Convolutional Neural Networks\n\n`DBN\u002F`  - A library for Deep Belief Networks\n\n`SAE\u002F`  - A library for Stacked Auto-Encoders\n\n`CAE\u002F` - A library for Convolutional Auto-Encoders\n\n`util\u002F` - Utility functions used by the libraries\n\n`data\u002F` - Data used by the examples\n\n`tests\u002F` - unit tests to verify toolbox is working\n\nFor references on each library check REFS.md\n\nSetup\n-----\n\n1. Download.\n2. addpath(genpath('DeepLearnToolbox'));\n\nExample: Deep Belief Network\n---------------------\n```matlab\n\nfunction test_example_DBN\nload mnist_uint8;\n\ntrain_x = double(train_x) \u002F 255;\ntest_x  = double(test_x)  \u002F 255;\ntrain_y = double(train_y);\ntest_y  = double(test_y);\n\n%%  ex1 train a 100 hidden unit RBM and visualize its weights\nrand('state',0)\ndbn.sizes = [100];\nopts.numepochs =   1;\nopts.batchsize = 100;\nopts.momentum  =   0;\nopts.alpha     =   1;\ndbn = dbnsetup(dbn, train_x, opts);\ndbn = dbntrain(dbn, train_x, opts);\nfigure; visualize(dbn.rbm{1}.W');   %  Visualize the RBM weights\n\n%%  ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NN\nrand('state',0)\n%train dbn\ndbn.sizes = [100 100];\nopts.numepochs =   1;\nopts.batchsize = 100;\nopts.momentum  =   0;\nopts.alpha     =   1;\ndbn = dbnsetup(dbn, train_x, opts);\ndbn = dbntrain(dbn, train_x, opts);\n\n%unfold dbn to nn\nnn = dbnunfoldtonn(dbn, 10);\nnn.activation_function = 'sigm';\n\n%train nn\nopts.numepochs =  1;\nopts.batchsize = 100;\nnn = nntrain(nn, train_x, train_y, opts);\n[er, bad] = nntest(nn, test_x, test_y);\n\nassert(er \u003C 0.10, 'Too big error');\n\n```\n\n\nExample: Stacked Auto-Encoders\n---------------------\n```matlab\n\nfunction test_example_SAE\nload mnist_uint8;\n\ntrain_x = double(train_x)\u002F255;\ntest_x  = double(test_x)\u002F255;\ntrain_y = double(train_y);\ntest_y  = double(test_y);\n\n%%  ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN\n%  Setup and train a stacked denoising autoencoder (SDAE)\nrand('state',0)\nsae = saesetup([784 100]);\nsae.ae{1}.activation_function       = 'sigm';\nsae.ae{1}.learningRate              = 1;\nsae.ae{1}.inputZeroMaskedFraction   = 0.5;\nopts.numepochs =   1;\nopts.batchsize = 100;\nsae = saetrain(sae, train_x, opts);\nvisualize(sae.ae{1}.W{1}(:,2:end)')\n\n% Use the SDAE to initialize a FFNN\nnn = nnsetup([784 100 10]);\nnn.activation_function              = 'sigm';\nnn.learningRate                     = 1;\nnn.W{1} = sae.ae{1}.W{1};\n\n% Train the FFNN\nopts.numepochs =   1;\nopts.batchsize = 100;\nnn = nntrain(nn, train_x, train_y, opts);\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.16, 'Too big error');\n\n```\n\n\nExample: Convolutional Neural Nets\n---------------------\n```matlab\n\nfunction test_example_CNN\nload mnist_uint8;\n\ntrain_x = double(reshape(train_x',28,28,60000))\u002F255;\ntest_x = double(reshape(test_x',28,28,10000))\u002F255;\ntrain_y = double(train_y');\ntest_y = double(test_y');\n\n%% ex1 Train a 6c-2s-12c-2s Convolutional neural network \n%will run 1 epoch in about 200 second and get around 11% error. \n%With 100 epochs you'll get around 1.2% error\nrand('state',0)\ncnn.layers = {\n    struct('type', 'i') %input layer\n    struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer\n    struct('type', 's', 'scale', 2) %sub sampling layer\n    struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer\n    struct('type', 's', 'scale', 2) %subsampling layer\n};\ncnn = cnnsetup(cnn, train_x, train_y);\n\nopts.alpha = 1;\nopts.batchsize = 50;\nopts.numepochs = 1;\n\ncnn = cnntrain(cnn, train_x, train_y, opts);\n\n[er, bad] = cnntest(cnn, test_x, test_y);\n\n%plot mean squared error\nfigure; plot(cnn.rL);\n\nassert(er\u003C0.12, 'Too big error');\n\n```\n\n\nExample: Neural Networks\n---------------------\n```matlab\n\nfunction test_example_NN\nload mnist_uint8;\n\ntrain_x = double(train_x) \u002F 255;\ntest_x  = double(test_x)  \u002F 255;\ntrain_y = double(train_y);\ntest_y  = double(test_y);\n\n% normalize\n[train_x, mu, sigma] = zscore(train_x);\ntest_x = normalize(test_x, mu, sigma);\n\n%% ex1 vanilla neural net\nrand('state',0)\nnn = nnsetup([784 100 10]);\nopts.numepochs =  1;   %  Number of full sweeps through data\nopts.batchsize = 100;  %  Take a mean gradient step over this many samples\n[nn, L] = nntrain(nn, train_x, train_y, opts);\n\n[er, bad] = nntest(nn, test_x, test_y);\n\nassert(er \u003C 0.08, 'Too big error');\n\n%% ex2 neural net with L2 weight decay\nrand('state',0)\nnn = nnsetup([784 100 10]);\n\nnn.weightPenaltyL2 = 1e-4;  %  L2 weight decay\nopts.numepochs =  1;        %  Number of full sweeps through data\nopts.batchsize = 100;       %  Take a mean gradient step over this many samples\n\nnn = nntrain(nn, train_x, train_y, opts);\n\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.1, 'Too big error');\n\n\n%% ex3 neural net with dropout\nrand('state',0)\nnn = nnsetup([784 100 10]);\n\nnn.dropoutFraction = 0.5;   %  Dropout fraction \nopts.numepochs =  1;        %  Number of full sweeps through data\nopts.batchsize = 100;       %  Take a mean gradient step over this many samples\n\nnn = nntrain(nn, train_x, train_y, opts);\n\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.1, 'Too big error');\n\n%% ex4 neural net with sigmoid activation function\nrand('state',0)\nnn = nnsetup([784 100 10]);\n\nnn.activation_function = 'sigm';    %  Sigmoid activation function\nnn.learningRate = 1;                %  Sigm require a lower learning rate\nopts.numepochs =  1;                %  Number of full sweeps through data\nopts.batchsize = 100;               %  Take a mean gradient step over this many samples\n\nnn = nntrain(nn, train_x, train_y, opts);\n\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.1, 'Too big error');\n\n%% ex5 plotting functionality\nrand('state',0)\nnn = nnsetup([784 20 10]);\nopts.numepochs         = 5;            %  Number of full sweeps through data\nnn.output              = 'softmax';    %  use softmax output\nopts.batchsize         = 1000;         %  Take a mean gradient step over this many samples\nopts.plot              = 1;            %  enable plotting\n\nnn = nntrain(nn, train_x, train_y, opts);\n\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.1, 'Too big error');\n\n%% ex6 neural net with sigmoid activation and plotting of validation and training error\n% split training data into training and validation data\nvx   = train_x(1:10000,:);\ntx = train_x(10001:end,:);\nvy   = train_y(1:10000,:);\nty = train_y(10001:end,:);\n\nrand('state',0)\nnn                      = nnsetup([784 20 10]);     \nnn.output               = 'softmax';                   %  use softmax output\nopts.numepochs          = 5;                           %  Number of full sweeps through data\nopts.batchsize          = 1000;                        %  Take a mean gradient step over this many samples\nopts.plot               = 1;                           %  enable plotting\nnn = nntrain(nn, tx, ty, opts, vx, vy);                %  nntrain takes validation set as last two arguments (optionally)\n\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.1, 'Too big error');\n\n```\n\n\n\n\n[![Bitdeli Badge](https:\u002F\u002Fd2weczhvl823v0.cloudfront.net\u002Frasmusbergpalm\u002Fdeeplearntoolbox\u002Ftrend.png)](https:\u002F\u002Fbitdeli.com\u002Ffree \"Bitdeli Badge\")\n\n","弃用通知。\n-----\n\n该工具箱已过时，不再维护。\n\n目前有比此工具箱更好的深度学习工具，例如 [Theano](http:\u002F\u002Fdeeplearning.net\u002Fsoftware\u002Ftheano\u002F)、[torch](http:\u002F\u002Ftorch.ch\u002F) 或 [tensorflow](http:\u002F\u002Fwww.tensorflow.org\u002F)。\n\n建议您使用上述工具之一，而不是继续使用本工具箱。\n\n祝好，拉斯穆斯。\n\nDeepLearnToolbox\n================\n\n用于深度学习的 MATLAB 工具箱。\n\n深度学习是机器学习的一个新兴子领域，专注于学习数据的深层层次化模型。它受到人类大脑明显具有深度（分层、层次化）结构的启发。关于深度学习理论的一个很好的概述是\n[Learning Deep Architectures for AI](http:\u002F\u002Fwww.iro.umontreal.ca\u002F~bengioy\u002Fpapers\u002Fftml_book.pdf)。\n\n如需更非正式的介绍，请观看 Geoffrey Hinton 和 Andrew Ng 的以下视频：\n\n* [下一代神经网络](http:\u002F\u002Fwww.youtube.com\u002Fwatch?v=AyzOUbkUf3M)（Hinton，2007年）\n* [深度学习的最新进展](http:\u002F\u002Fwww.youtube.com\u002Fwatch?v=VdIURAu1-aU)（Hinton，2010年）\n* [无监督特征学习与深度学习](http:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ZmNOAtZIgIk)（Ng，2011年）\n\n如果您在研究中使用本工具箱，请引用 [预测作为学习数据深层层次化模型的一个候选方法](http:\u002F\u002Fwww2.imm.dtu.dk\u002Fpubdb\u002Fviews\u002Fpublication_details.php?id=6284)。\n\n```\n@MASTERSTHESIS\\{IMM2012-06284,\n    author       = \"R. B. Palm\",\n    title        = \"Prediction as a candidate for learning deep hierarchical models of data\",\n    year         = \"2012\",\n}\n```\n\n联系方式：rasmusbergpalm at gmail dot com\n\n工具箱包含的目录\n-------------------\n\n`NN\u002F`   - 前馈反向传播神经网络库\n\n`CNN\u002F`  - 卷积神经网络库\n\n`DBN\u002F`  - 深度信念网络库\n\n`SAE\u002F`  - 堆叠自编码器库\n\n`CAE\u002F` - 卷积自编码器库\n\n`util\u002F` - 各库使用的实用函数\n\n`data\u002F` - 示例中使用的数据\n\n`tests\u002F` - 用于验证工具箱是否正常工作的单元测试\n\n有关每个库的参考文献，请查看 REFS.md 文件。\n\n设置\n-----\n\n1. 下载。\n2. 使用 `addpath(genpath('DeepLearnToolbox'));` 将工具箱添加到路径中。\n\n示例：深度信念网络\n---------------------\n```matlab\n\nfunction test_example_DBN\nload mnist_uint8;\n\ntrain_x = double(train_x) \u002F 255;\ntest_x  = double(test_x)  \u002F 255;\ntrain_y = double(train_y);\ntest_y  = double(test_y);\n\n%%  ex1 训练一个拥有100个隐藏单元的RBM，并可视化其权重\nrand('state',0)\ndbn.sizes = [100];\nopts.numepochs =   1;\nopts.batchsize = 100;\nopts.momentum  =   0;\nopts.alpha     =   1;\ndbn = dbnsetup(dbn, train_x, opts);\ndbn = dbntrain(dbn, train_x, opts);\nfigure; visualize(dbn.rbm{1}.W');   %  可视化RBM的权重\n\n%%  ex2 训练一个100-100隐藏单元的DBN，并用其权重初始化一个前馈神经网络\nrand('state',0)\n%训练DBN\ndbn.sizes = [100 100];\nopts.numepochs =   1;\nopts.batchsize = 100;\nopts.momentum  =   0;\nopts.alpha     =   1;\ndbn = dbnsetup(dbn, train_x, opts);\ndbn = dbntrain(dbn, train_x, opts);\n\n%将DBN展开为前馈神经网络\nnn = dbnunfoldtonn(dbn, 10);\nnn.activation_function = 'sigm';\n\n%训练前馈神经网络\nopts.numepochs =  1;\nopts.batchsize = 100;\nnn = nntrain(nn, train_x, train_y, opts);\n[er, bad] = nntest(nn, test_x, test_y);\n\nassert(er \u003C 0.10, '误差太大');\n\n```\n\n\n示例：堆叠自编码器\n---------------------\n```matlab\n\nfunction test_example_SAE\nload mnist_uint8;\n\ntrain_x = double(train_x)\u002F255;\ntest_x  = double(test_x)\u002F255;\ntrain_y = double(train_y);\ntest_y  = double(test_y);\n\n%%  ex1 训练一个拥有100个隐藏单元的SDAE，并用其初始化一个前馈神经网络\n%设置并训练一个堆叠去噪自编码器（SDAE）\nrand('state',0)\nsae = saesetup([784 100]);\nsae.ae{1}.activation_function       = 'sigm';\nsae.ae{1}.learningRate              = 1;\nsae.ae{1}.inputZeroMaskedFraction   = 0.5;\nopts.numepochs =   1;\nopts.batchsize = 100;\nsae = saetrain(sae, train_x, opts);\nvisualize(sae.ae{1}.W{1}(:,2:end)')\n\n%用SDAE初始化一个前馈神经网络\nnn = nnsetup([784 100 10]);\nnn.activation_function              = 'sigm';\nnn.learningRate                     = 1;\nnn.W{1} = sae.ae{1}.W{1};\n\n%训练前馈神经网络\nopts.numepochs =   1;\nopts.batchsize = 100;\nnn = nntrain(nn, train_x, train_y, opts);\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.16, '误差太大');\n\n```\n\n\n示例：卷积神经网络\n---------------------\n```matlab\n\nfunction test_example_CNN\nload mnist_uint8;\n\ntrain_x = double(reshape(train_x',28,28,60000))\u002F255;\ntest_x = double(reshape(test_x',28,28,10000))\u002F255;\ntrain_y = double(train_y');\ntest_y = double(test_y');\n\n%% ex1 训练一个6c-2s-12c-2s的卷积神经网络 \n%运行1个epoch大约需要200秒，误差约为11%。  \n%如果运行100个epoch，误差可以降到约1.2%\nrand('state',0)\ncnn.layers = {\n    struct('type', 'i') %输入层\n    struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %卷积层\n    struct('type', 's', 'scale', 2) %下采样层\n    struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %卷积层\n    struct('type', 's', 'scale', 2) %下采样层\n};\ncnn = cnnsetup(cnn, train_x, train_y);\n\nopts.alpha = 1;\nopts.batchsize = 50;\nopts.numepochs = 1;\n\ncnn = cnntrain(cnn, train_x, train_y, opts);\n\n[er, bad] = cnntest(cnn, test_x, test_y);\n\n%绘制均方误差曲线\nfigure; plot(cnn.rL);\n\nassert(er\u003C0.12, '误差太大');\n\n```\n\n\n示例：前馈神经网络\n---------------------\n```matlab\n\nfunction test_example_NN\nload mnist_uint8;\n\ntrain_x = double(train_x) \u002F 255;\ntest_x  = double(test_x)  \u002F 255;\ntrain_y = double(train_y);\ntest_y  = double(test_y);\n\n%标准化\n[train_x, mu, sigma] = zscore(train_x);\ntest_x = normalize(test_x, mu, sigma);\n\n%% ex1 普通前馈神经网络\nrand('state',0)\nnn = nnsetup([784 100 10]);\nopts.numepochs =  1;   %  完整遍历数据的次数\nopts.batchsize = 100;  %  在这么多样本上取平均梯度步长\n[nn, L] = nntrain(nn, train_x, train_y, opts);\n\n[er, bad] = nntest(nn, test_x, test_y);\n\nassert(er \u003C 0.08, '误差太大');\n\n%% ex2 带有L2权重衰减的前馈神经网络\nrand('state',0)\nnn = nnsetup([784 100 10]);\n\nnn.weightPenaltyL2 = 1e-4;  %  L2权重衰减\nopts.numepochs =  1;        %  完整遍历数据的次数\nopts.batchsize = 100;       %  在这么多样本上取平均梯度步长\n\nnn = nntrain(nn, train_x, train_y, opts);\n\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.1, '误差太大');\n\n\n%% ex3 带有dropout的前馈神经网络\nrand('state',0)\nnn = nnsetup([784 100 10]);\n\nnn.dropoutFraction = 0.5;   %  Dropout比例 \nopts.numepochs =  1;        %  完整遍历数据的次数\nopts.batchsize = 100;       %  在这么多样本上取平均梯度步长\n\nnn = nntrain(nn, train_x, train_y, opts);\n\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.1, '误差太大');\n\n%% ex4 带有sigmoid激活函数的前馈神经网络\nrand('state',0)\nnn = nnsetup([784 100 10]);\n\nnn.activation_function = 'sigm';    %  Sigmoid激活函数\nnn.learningRate = 1;                %  Sigm需要较低的学习率\nopts.numepochs =  1;                %  对数据进行完整遍历的次数\nopts.batchsize = 100;               %  在这么多样本上计算平均梯度并更新参数\n\nnn = nntrain(nn, train_x, train_y, opts);\n\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.1, '误差太大');\n\n%% ex5 绘图功能\nrand('state',0)\nnn = nnsetup([784 20 10]);\nopts.numepochs         = 5;            %  对数据进行完整遍历的次数\nnn.output              = 'softmax';    %  使用softmax输出\nopts.batchsize         = 1000;         %  在这么多样本上计算平均梯度并更新参数\nopts.plot              = 1;            %  启用绘图功能\n\nnn = nntrain(nn, train_x, train_y, opts);\n\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.1, '误差太大');\n\n%% ex6 带有Sigmoid激活函数的神经网络，并绘制验证集和训练集的误差曲线\n% 将训练数据分为训练集和验证集\nvx   = train_x(1:10000,:);\ntx = train_x(10001:end,:);\nvy   = train_y(1:10000,:);\nty = train_y(10001:end,:);\n\nrand('state',0)\nnn                      = nnsetup([784 20 10]);     \nnn.output               = 'softmax';                   %  使用softmax输出\nopts.numepochs          = 5;                           %  对数据进行完整遍历的次数\nopts.batchsize          = 1000;                        %  在这么多样本上计算平均梯度并更新参数\nopts.plot               = 1;                           %  启用绘图功能\nnn = nntrain(nn, tx, ty, opts, vx, vy);                %  nntrain可选地将验证集作为最后两个参数传入\n\n[er, bad] = nntest(nn, test_x, test_y);\nassert(er \u003C 0.1, '误差太大');\n\n```\n\n\n\n\n[![Bitdeli Badge](https:\u002F\u002Fd2weczhvl823v0.cloudfront.net\u002Frasmusbergpalm\u002Fdeeplearntoolbox\u002Ftrend.png)](https:\u002F\u002Fbitdeli.com\u002Ffree \"Bitdeli Badge\")","# DeepLearnToolbox 快速上手指南\n\n> **⚠️ 重要提示：项目已弃用**\n>\n> 该工具箱已过时且不再维护。作者强烈建议使用更现代的深度学习框架，如 [Theano](http:\u002F\u002Fdeeplearning.net\u002Fsoftware\u002Ftheano\u002F)、[Torch](http:\u002F\u002Ftorch.ch\u002F) 或 [TensorFlow](http:\u002F\u002Fwww.tensorflow.org\u002F)。本指南仅供学习历史代码或特定研究复现参考。\n\nDeepLearnToolbox 是一个基于 MATLAB 的深度学习工具箱，支持前馈神经网络 (NN)、卷积神经网络 (CNN)、深度信念网络 (DBN) 和堆叠自编码器 (SAE) 等模型。\n\n## 环境准备\n\n*   **操作系统**: Windows, macOS 或 Linux\n*   **核心软件**: MATLAB (推荐较新版本以确保兼容性，但需注意该工具箱主要面向旧版 MATLAB 语法)\n*   **前置依赖**: 无额外第三方库依赖，仅需标准 MATLAB 环境。\n*   **数据准备**: 示例代码依赖 `mnist_uint8.mat` 数据集，需自行下载并放置在路径中或修改加载逻辑。\n\n## 安装步骤\n\n1.  **下载源码**\n    从 GitHub 仓库下载源代码压缩包并解压到本地目录（例如：`\u002Fpath\u002Fto\u002FDeepLearnToolbox`）。\n\n2.  **添加路径**\n    启动 MATLAB，在命令行窗口执行以下命令，将工具箱及其子目录添加到搜索路径：\n\n    ```matlab\n    addpath(genpath('DeepLearnToolbox'));\n    ```\n\n    *建议将上述命令添加到 `startup.m` 文件中，以便每次启动 MATLAB 时自动加载。*\n\n3.  **验证安装**\n    进入 `tests\u002F` 目录运行单元测试，或直接运行下文提供的示例代码。\n\n## 基本使用\n\n以下是最简单的前馈神经网络（Feedforward Neural Network）训练示例，基于 MNIST 数据集。\n\n### 示例：训练一个简单的神经网络\n\n```matlab\nfunction test_example_NN\n% 1. 加载数据 (需确保工作区有 mnist_uint8.mat)\nload mnist_uint8;\n\n% 2. 数据预处理\ntrain_x = double(train_x) \u002F 255;\ntest_x  = double(test_x)  \u002F 255;\ntrain_y = double(train_y);\ntest_y  = double(test_y);\n\n% 归一化\n[train_x, mu, sigma] = zscore(train_x);\ntest_x = normalize(test_x, mu, sigma);\n\n% 3. 构建网络结构: 输入层 784 -> 隐藏层 100 -> 输出层 10\nrand('state',0)\nnn = nnsetup([784 100 10]);\n\n% 4. 配置训练参数\nopts.numepochs =  1;   % 遍历数据的轮数\nopts.batchsize = 100;  % 批次大小\n\n% 5. 训练模型\n[nn, L] = nntrain(nn, train_x, train_y, opts);\n\n% 6. 测试模型\n[er, bad] = nntest(nn, test_x, test_y);\n\nfprintf('Error rate: %f\\n', er);\nend\n```\n\n### 其他可用模块\n工具箱还包含以下模块，使用方法类似（初始化 -> 配置 -> 训练 -> 测试）：\n*   **CNN**: `cnnsetup`, `cnntrain`, `cnntest` (卷积神经网络)\n*   **DBN**: `dbnsetup`, `dbntrain`, `dbnunfoldtonn` (深度信念网络)\n*   **SAE**: `saesetup`, `saetrain` (堆叠自编码器)\n\n具体用法可参考源码目录下的 `test_example_*.m` 文件。","某高校计算机系的研究团队正致力于复现 2012 年前后的经典深度学习论文，需要在 Matlab 环境中快速验证深度信念网络（DBN）和堆叠自编码器（SAE）的基础理论。\n\n### 没有 DeepLearnToolbox 时\n- **底层代码重复造轮子**：研究人员需从零编写反向传播、卷积运算等底层数学公式，耗费数周时间调试矩阵维度错误，严重拖慢科研进度。\n- **算法复现门槛极高**：缺乏标准化的 DBN 或 CNN 模块，复现文献中的分层架构时极易出错，难以确认是理论理解偏差还是代码实现漏洞。\n- **可视化与调试困难**：训练过程中的权重变化、特征图提取缺乏现成的可视化工具，导致模型内部机制如同“黑盒”，难以直观分析收敛情况。\n- **环境依赖复杂**：若强行转向早期的 Python 框架，面临复杂的依赖配置和版本兼容问题，偏离了团队熟悉的 Matlab 科研生态。\n\n### 使用 DeepLearnToolbox 后\n- **开箱即用的核心算法**：直接调用 `dbnsetup`、`saetrain` 等封装函数，几行代码即可构建多层神经网络，将原型验证时间从数周缩短至数小时。\n- **标准示例加速理解**：内置的 MNIST 手写数字识别示例提供了完整的训练、展开（unfold）及测试流程，帮助团队成员快速对齐理论公式与代码逻辑。\n- **内置可视化辅助分析**：利用 `visualize` 函数一键绘制 RBM 权重或自编码器特征，直观展示模型学习到的边缘检测等低级特征，便于调优。\n- **无缝融入现有工作流**：作为纯 Matlab 工具箱，无需配置外部引擎，完美契合团队现有的数据处理脚本和仿真环境，降低迁移成本。\n\nDeepLearnToolbox 通过提供标准化的经典算法实现，让研究人员能从繁琐的底层编码中解脱，专注于深度学习模型的理论验证与教学演示。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frasmusbergpalm_DeepLearnToolbox_0e31f445.png","rasmusbergpalm","Rasmus Berg Palm","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Frasmusbergpalm_e142ce7e.jpg",null,"https:\u002F\u002Fgithub.com\u002Frasmusbergpalm",[20,24,28],{"name":21,"color":22,"percentage":23},"MATLAB","#e16737",98.7,{"name":25,"color":26,"percentage":27},"Shell","#89e051",1.2,{"name":29,"color":17,"percentage":30},"M",0.1,3869,2266,"2026-04-10T16:10:29","BSD-2-Clause",2,"未说明 (基于 MATLAB，理论上支持所有运行 MATLAB 的系统)","未说明 (纯 CPU 实现，不支持 GPU 加速)","未说明",{"notes":40,"python":41,"dependencies":42},"该工具已废弃且不再维护。作者建议改用 Theano、Torch 或 TensorFlow 等现代深度学习框架。运行环境仅需安装 MATLAB 并将工具箱路径添加到搜索路径中即可，无需 Python 环境或特定显卡支持。","不适用 (基于 MATLAB)",[21],[44],"开发框架","ready","2026-03-27T02:49:30.150509","2026-04-18T22:32:42.463847",[49,54,59,64,68,73,78],{"id":50,"question_zh":51,"answer_zh":52,"source_url":53},40834,"训练好 DBN 后，如何将其应用于新数据并获取隐藏层的响应（特征提取）？","DBN 通常是无监督预训练的。要应用于新数据或进行分类，需要将其“展开”（unroll）为神经网络（NN）。具体步骤是：使用训练好的 DBN 权重初始化一个前馈神经网络（FFNN），然后使用该网络对新数据进行前向传播以获取输出或隐藏层激活值。对于时间序列预测等非图像数据，同样可以将时间窗口数组作为输入向量处理，无需必须是图像格式。","https:\u002F\u002Fgithub.com\u002Frasmusbergpalm\u002FDeepLearnToolbox\u002Fissues\u002F16",{"id":55,"question_zh":56,"answer_zh":57,"source_url":58},40835,"使用 SDAE（堆叠去噪自编码器）时，为什么预测结果总是返回类别 1？","这通常不是代码错误，而是由数据集特性导致的。如果数据非常难以分类，或者模型在特定数据集上表现不佳，它可能会倾向于预测多数类或默认类。在某些设置下，所有样本被预测为类别 0（在 MATLAB 索引中对应值 1）意味着模型未能学习到区分特征。建议尝试其他更容易区分的数据集进行验证，或检查数据预处理和标签设置是否正确。","https:\u002F\u002Fgithub.com\u002Frasmusbergpalm\u002FDeepLearnToolbox\u002Fissues\u002F69",{"id":60,"question_zh":61,"answer_zh":62,"source_url":63},40836,"DeepLearnToolbox 是否支持时间序列预测的有监督训练？输入必须是图像吗？","支持。工具箱的函数输入不限于图像，也可以是任意维度的数组（如时间窗口数据）。对于有监督的时间序列预测，你可以将时间窗口数组作为 `train_x`，将对应的预测值作为 `train_y` 传入。注意：DBN 本身是无监督的，如果需要利用标签进行有监督微调，需先训练 DBN，然后将其展开为神经网络（NN），再使用 `nntrain` 函数配合标签数据进行有监督训练。","https:\u002F\u002Fgithub.com\u002Frasmusbergpalm\u002FDeepLearnToolbox\u002Fissues\u002F50",{"id":65,"question_zh":66,"answer_zh":67,"source_url":63},40837,"在使用 DBN 时遇到\"all data in x must be in [0:1]\"的错误，能否使用负数或大于 1 的值？","DBN 的实现通常假设输入数据已归一化到 [0, 1] 区间。虽然理论上可以修改代码移除该检查，但为了保证训练稳定性和收敛速度，强烈建议对数据进行预处理。如果数据包含负数或大于 1 的值，应先通过归一化（如 Min-Max 缩放）将其映射到 [0, 1] 范围内，而不是直接忽略该验证。",{"id":69,"question_zh":70,"answer_zh":71,"source_url":72},40838,"CNN 训练中，不归一化数据（不除以 255）反而效果更好，这是正常的吗？","虽然大多数文献建议将数据归一化（如缩放到 0-1 或 -1 到 1）以加速训练和提高性能，但在某些特定数据集或网络配置下，未归一化的数据偶尔可能表现出更好的初期结果。这可能与学习率设置、权重初始化或数据分布有关。尽管如此，通常仍推荐遵循标准做法进行归一化，如果未归一化效果好，建议进一步探索超参数调整或检查是否存在过拟合现象。","https:\u002F\u002Fgithub.com\u002Frasmusbergpalm\u002FDeepLearnToolbox\u002Fissues\u002F105",{"id":74,"question_zh":75,"answer_zh":76,"source_url":77},40839,"神经网络反向传播代码中，Softmax 激活函数的导数计算是否有误？它应该和 Sigmoid 一样还是和 Linear 一样？","代码中将 Softmax 与 Linear 归为一类（导数直接取误差 `-nn.e`）是正确的，前提是搭配交叉熵（Cross-Entropy）损失函数使用。当 Softmax 输出层与交叉熵损失函数结合时，其梯度的数学推导结果会简化为 `(预测值 - 真实值)`，形式上与线性输出的梯度计算类似，而不需要像 Sigmoid 那样乘以 `a.*(1-a)`。因此，只要损失函数选择正确，现有的实现是没有问题的。","https:\u002F\u002Fgithub.com\u002Frasmusbergpalm\u002FDeepLearnToolbox\u002Fissues\u002F113",{"id":79,"question_zh":80,"answer_zh":81,"source_url":82},40840,"如何在训练过程中监控验证集性能并在性能不再提升时提前停止训练？","原生工具箱示例可能未直接包含此功能，但社区用户已开发了包装函数（wrapper function）。该函数围绕 `nntrain` 编写，可以在每个 epoch 后评估训练集和验证集的性能，可选地绘制训练进度图，并在满足条件（如验证误差连续 n 个 epoch 未下降）时保存网络模型并停止训练。用户可以参考相关 Issue 讨论或搜索社区贡献的代码来实现早停（Early Stopping）机制。","https:\u002F\u002Fgithub.com\u002Frasmusbergpalm\u002FDeepLearnToolbox\u002Fissues\u002F25",[],[85,97,105,114,122,131],{"id":86,"name":87,"github_repo":88,"description_zh":89,"stars":90,"difficulty_score":91,"last_commit_at":92,"category_tags":93,"status":45},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[94,44,95,96],"Agent","图像","数据工具",{"id":98,"name":99,"github_repo":100,"description_zh":101,"stars":102,"difficulty_score":91,"last_commit_at":103,"category_tags":104,"status":45},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[44,95,94],{"id":106,"name":107,"github_repo":108,"description_zh":109,"stars":110,"difficulty_score":35,"last_commit_at":111,"category_tags":112,"status":45},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",160015,"2026-04-18T11:30:52",[44,94,113],"语言模型",{"id":115,"name":116,"github_repo":117,"description_zh":118,"stars":119,"difficulty_score":35,"last_commit_at":120,"category_tags":121,"status":45},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[44,95,94],{"id":123,"name":124,"github_repo":125,"description_zh":126,"stars":127,"difficulty_score":35,"last_commit_at":128,"category_tags":129,"status":45},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[130,94,95,44],"插件",{"id":132,"name":133,"github_repo":134,"description_zh":135,"stars":136,"difficulty_score":35,"last_commit_at":137,"category_tags":138,"status":45},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[130,44]]