21、深度学习与无监督学习技术解析

深度学习与无监督学习技术解析

1. 深度学习早期停止标准与模型结果

新的早期停止标准如下,其余代码与之前的版本相同:

stopping_metric = "AUC",
stopping_tolerance = 0.001,
stopping_rounds = 4,
epochs = 2000

两个模型的最终结果如下:
- AUC值 :
| 数据集 | HomeWin | HW - NoOdds |
| ---- | ---- | ---- |
| train | 0.635 | 0.596 |
| valid | 0.678 | 0.632 |
| test | 0.648 | 0.616 |
- 准确率值 :
| 数据集 | HomeWin | HW - NoOdds |
| ---- | ---- | ---- |
| train | 0.595 | 0.567 |
| valid | 0.649 | 0.618 |
| test | 0.617 | 0.606 |

额外的轮次提升了训练和验证分数,但验证数据集的参考AUC为0.675,测试数据集为0.650,一个高于参考值,一个低于参考值。在准确率方面,目标值分别为0.650和0.634,表现不佳。

2. 深度学习调优总结

调优深度学习更像是一门艺术而非科学,众多参数让人感觉可能遗漏了重要的东西。MNIST数据的优异表现符合预期,而足球数据的糟糕表现有点出乎意料,这表明对于困难、嘈杂的数据集,深度学习可能无法超越其他算法,且耗时更长。建筑能源结果最为有趣,它需要完整的训练数据(而非交叉验证的90%)以及早期停止带来的额外轮次,才能实现理解上的大幅提升。

3. 更多深度学习参数

以下是未在前面使用的深度学习参数:
| 参数 | 描述 | 默认值 |
| ---- | ---- | ---- |
| missing_values_handling | 处理缺失值,“Skip”忽略含缺失值的行,“MeanImputation”将缺失值设为列均值 | MeanImputation |
| use_all_factor_levels | 每个枚举变量的每个级别都有一个输入神经元,设为false则删除每个枚举的第一个级别 | true |
| max_categorical_features | 最大分类特征数,通过哈希强制执行(实验性) | 无限制 |
| single_node_mode | 是否在集群的单个节点上运行 | false |
| fast_mode | 启用快速模式(反向传播的轻微近似) | true |
| force_load_balance | 强制额外的负载均衡以提高训练速度 | true |
| standardize | 数据是否自动归一化 | true |
| sparse | 数据是否有大量零值,设为true更高效 | false |
| sparsity_beta | 稀疏正则化(实验性) | 0.0 |
| initial_biases | 用于初始化模型偏置向量的H2OFrame ID列表 | 无 |
| initial_weights | 用于初始化模型权重矩阵的H2OFrame ID列表 | 无 |
| initial_weight_distribution | 权重初始化分布,可选“UniformAdaptive”、“Uniform”、“Normal” | UniformAdaptive |
| initial_weight_scale | 根据分布不同,可为范围或标准差 | 1.0 |
| rate | 学习率,越高越不稳定,越低收敛越慢 | 0.005 |
| rate_annealing | 学习率退火 | 1e - 6 |
| rate_decay | 层间学习率衰减因子 | 1 |
| adaptive_rate | 自适应学习 | true |
| epsilon | 自适应学习率平滑因子 | 1e - 8 |
| rho | 自适应学习率时间衰减因子 | 0.99 |
| momentum_ramp | 动量增加的训练样本数 | 1e - 6 |
| momentum_stable | 动量稳定后的最终值 | 0.0 |
| momentum_start | 训练开始时的初始动量 | 0.0 |
| nesterov_accelerated_gradient | 是否使用Nesterov加速梯度 | true |

4. 无监督学习概述

无监督学习是人类智能的核心优势,在机器学习中,它可以自动组织数据,可看作是一种数据压缩形式。如果有5000个输入列,且稀疏并包含大量重复,可以使用无监督学习技术将其减少到更易管理、信息更密集的12列,然后再使用监督学习技术。

5. K - 均值聚类

K - 均值聚类的思想是将数据分为k个组,每个数据项离其所在簇的中心比其他簇的中心更近。以自然语言处理(NLP)为例,使用他人处理好的tf - idf数据。
- NLP数据准备 :
1. 运行cluster_analysis.ipynb获取数据。
2. 提取术语列表和tf - idf矩阵。
3. 将稀疏矩阵转换为pandas数据框并导出为csv文件。

import pandas as pd
d = pd.DataFrame(
  tfidf_matrix.todense(),
  index=titles,
  columns=terms
)
d.to_csv("tfidf.csv")
  • K - 均值聚类代码示例 :
    • R代码 :
library(h2o)
h2o.init(nthreads = -1)
tfidf <- h2o.importFile("./datasets/movie.tfidf.csv")
m <- h2o.kmeans(tfidf, x = 2:564, k = 5,
  standardize = FALSE, init = "PlusPlus")
p <- h2o.predict(m, tfidf)
tapply(as.vector(tfidf[,1]), as.vector(p$predict), print)
- **Python代码**:
import h2o
h2o.init()
tfidf = h2o.import_file("./datasets/movie.tfidf.csv")
from h2o.estimators.K-means import H2OKMeansEstimator
m = H2OKMeansEstimator(k=5, standardize=False, init="PlusPlus")
m.train(x=range(1,564), training_frame=tfidf)
p = m.predict(tfidf)
d = tfidf[0].cbind(p).as_data_frame()
d.columns = ["movie","group"]
for ix, g in d.groupby("group"):
    print("---", ix, "---")
    print(', '.join(g["movie"]))

聚类结果可以作为电影推荐系统的基础,但由于每次运行分组变化较大,需要对输入数据进行更多处理。

6. 深度学习自动编码器

将h2o.deeplearning()用于无监督学习,通过设置autoencoder为true并取消设置y参数来切换模式。它会尝试学习输入,迫使隐藏层总结和压缩数据。
- 简单自动编码器示例 :
- R代码 :

m <- h2o.deeplearning(
  2:564, training_frame = tfidf,
  hidden = c(2), auto-encoder = T, activation = "Tanh"
)
f <- h2o.deepfeatures(m, tfidf, layer = 1)
- **Python代码**:
m = h2o.estimators.deeplearning.H2OAutoEncoderEstimator(
  hidden=[2],
  activation="Tanh"
)
m.train(x=range(1,564), training_frame=tfidf)
f = m.deepfeatures(tfidf, layer=0)

简单自动编码器的MSE为0.035,结果可接受。后续还进行了19个模型的实验,探索在2到20个维度之间的降维效果。

深度学习与无监督学习技术解析

7. 自动编码器实验结果分析

在进行的19个模型实验中,对降维程度进行了探索,维度范围在2到20之间。每个模型的隐藏层设置为128, 64, nodes 。通过这些实验,可以观察到随着隐藏层维度的变化,均方误差(MSE)等指标也会发生相应的改变。

为了更直观地展示维度与MSE之间的关系,我们可以绘制一个简单的流程图:

graph LR
    A[开始实验] --> B[设置隐藏层维度为2]
    B --> C[训练模型并计算MSE]
    C --> D{维度是否达到20}
    D -- 否 --> E[增加维度]
    E --> B
    D -- 是 --> F[结束实验]

通过实验发现,随着维度的增加,MSE呈现出一定的变化趋势。在维度较低时,如2维,自动编码器需要在有限的维度内对数据进行压缩和表示,这可能导致一些信息的丢失,从而使得MSE相对较高。随着维度的增加,自动编码器有更多的空间来学习数据的特征,MSE会逐渐降低。但当维度增加到一定程度后,MSE的下降趋势可能会变得平缓,甚至可能出现过拟合的情况,导致MSE不再显著降低。

8. 无监督学习的应用与挑战

无监督学习在许多领域都有广泛的应用,如数据压缩、异常检测、推荐系统等。
- 数据压缩 :通过自动编码器将高维数据压缩到低维空间,减少数据的存储空间和计算成本。
- 异常检测 :利用聚类算法将数据分为不同的簇,异常数据点可能会偏离这些簇,从而被检测出来。
- 推荐系统 :如K - 均值聚类可以将用户或物品进行分组,根据用户的历史行为和所在的簇,为用户推荐相似的物品。

然而,无监督学习也面临着一些挑战:
- 结果的可解释性 :无监督学习的结果往往难以解释,例如聚类结果中的簇代表什么含义,自动编码器学习到的特征如何理解等。
- 数据质量的影响 :输入数据的质量对无监督学习的结果有很大影响。如果数据存在噪声、缺失值或分布不均匀等问题,可能会导致聚类不准确或自动编码器学习效果不佳。
- 参数选择的困难 :无监督学习算法通常有多个参数需要调整,如K - 均值聚类中的簇数k、自动编码器的隐藏层维度等。选择合适的参数需要一定的经验和实验。

9. 深度学习参数调优总结

在深度学习中,参数调优是一个关键的步骤。从前面介绍的众多深度学习参数可以看出,不同的参数对模型的性能有不同的影响。
- 学习率相关参数 :学习率(rate)、学习率退火(rate_annealing)、学习率衰减(rate_decay)等参数影响模型的收敛速度和稳定性。较高的学习率可能导致模型不稳定,而较低的学习率则会使收敛速度变慢。
- 初始化参数 :初始权重分布(initial_weight_distribution)和初始权重尺度(initial_weight_scale)决定了模型的初始状态,对模型的训练过程有重要影响。
- 正则化参数 :稀疏正则化(sparsity_beta)等参数可以防止模型过拟合,提高模型的泛化能力。

为了更好地进行参数调优,可以采用以下步骤:
1. 确定参数的取值范围:根据经验和文献,确定每个参数可能的取值范围。
2. 进行网格搜索或随机搜索:在参数取值范围内进行搜索,评估不同参数组合下模型的性能。
3. 选择最优参数组合:根据评估结果,选择性能最优的参数组合。

10. 未来发展趋势

随着数据量的不断增加和计算能力的提升,深度学习和无监督学习技术将不断发展。
- 更复杂的模型结构 :未来可能会出现更复杂的深度学习模型结构,能够更好地处理高维、复杂的数据。
- 与其他技术的融合 :无监督学习可能会与监督学习、强化学习等技术相结合,发挥各自的优势,解决更复杂的问题。
- 可解释性的提升 :研究人员将致力于提高无监督学习结果的可解释性,使得模型的决策更加透明和可信。

总之,深度学习和无监督学习技术在不断发展和完善,为我们处理各种复杂的数据问题提供了强大的工具。但同时,我们也需要深入理解这些技术的原理和应用,合理选择参数和算法,以获得更好的结果。

相关推荐

机器学习VS深度学习

​如今,当有人提到人工智能引起社会变革潜力时,他们很可能是在谈论机器学习中的人工神经网络。当一篇文章谈人工神经网络突破性进展时,作者很可能指的是深度学习。 人工神经网络是一种非线性统计建模工具,可以用于发现输入和输出之间的关系,或在大型数据库中发现模式。人工神经网络已应用于统计模型开发、自适应控制系统、数据挖掘模式识别和不确定性下的决策。 深度学习是基于人工神经网络和表示学习的一系列机器学习方法的一部分。学习可以是有监督的、半监督的或无监督的,甚至强化学习的。 【深度学习有别于传统机器学习】 有..

qq_40558336的博客 1436

图解人工智能:从规则到深度学习的全景解析

人工智能(AI)从一个概念的萌芽发展为现代科技革命的核心力量,横跨多个领域,从规则系统到深度学习,各种技术栈和方法构建了一个多层次的智能体系。本篇文章结合《图解人工智能》的框架,全面探讨人工智能的过去、现在和未来,为读者呈现AI发展的完整脉络与技术细节,使读者更快速了解什么是人工智能(AI)。深度学习(Deep Learning)是人工智能的核心分支,利用多层神经网络提取复杂数据特征,在语音识别、图像处理和自然语言理解等领域取得了革命性突破。权重的调整和优化算法是人工智能模型性能提升的核心环节。

小高~的博客 2389

21、模型拟合、优化与深度学习技术解析

本文系统解析了模型拟合、优化与深度学习技术在计算机视觉中的应用。内容涵盖数据插值与近似、鲁棒拟合、正则化与变分方法、马尔可夫随机场及交互式分割等传统技术,并深入探讨了监督学习、无监督学习及深度神经网络的核心原理与实践方法。文章还对比了传统机器学习与深度学习的差异,介绍了卷积神经网络架构设计、复杂模型融合策略及训练技巧,结合实际应用场景提供练习与操作建议,旨在帮助读者全面掌握从基础理论到前沿技术的完整知识体系,并有效应用于实际项目中。

metaverse5vr的博客 34

21、深度学习与机器学习在多领域的应用解析

本文深入探讨了深度学习与机器学习在多个领域的应用,涵盖自然语言处理、医学影像分析与诊断以及治疗等方面。文章介绍了深度学习的基础架构与核心算法,如CNN、RNN、DBN和自编码器,并详细解析了其在图像识别、语义分割和疾病检测中的具体应用。同时,阐述了机器学习在处理患者数据、生物信号分析和智能健康管理中的重要作用。文章还总结了当前面临的数据质量、模型解释性、计算资源和隐私安全等挑战,并提出了相应的应对策略。最后展望了跨领域融合、个性化医疗和自动化流程等未来发展方向,强调通过持续优化与创新推动技术进步和行业变革。

tech5的博客 82

VCS 2018 环境下,手把手教你用 UVMC 搞定 SystemC 和 SystemVerilog 混合仿真(附完整代码)

本文详细介绍了在VCS 2018环境下使用UVMC实现SystemC和SystemVerilog混合仿真的完整指南。从环境配置、工具链设置到UVMC通信机制解析,提供了实战案例和高级调试技巧,帮助开发者高效搭建复杂验证环境。特别适合需要处理跨语言仿真的芯片验证工程师。

weixin_30952535的博客 285

STM32开发工具链选型:MDK、CubeIDE、VSCode与IAR深度对比

嵌入式开发工具链是连接软件逻辑与硬件行为的核心枢纽,其选择直接影响代码可靠性、调试效率与量产稳定性。从编译器优化能力、调试协议支持(如ARM CoreSight、SWO)、硬件抽象层级(寄存器/LL/HAL)到跨平台构建能力,不同工具在实时性保障、静态分析合规性(如MISRA-C)、WCET可预测性及生态开放度上存在本质差异。尤其在STM32平台,Keil MDK凭借深度调试能力成为HardFault定位首选,STM32CubeIDE依托图形化配置加速外设初始化,而VSCode+PlatformIO则以LS

weixin_42602368的博客 429

C# WinForms 多语种切换实现:打造国际化应用程序

合理实现多语种切换功能可以显著提升应用程序的国际化水平。模块化设计:将本地化逻辑模块化,便于管理和维护。异常处理:始终捕获和处理可能的异常,确保程序的健壮性。资源管理:合理管理资源文件,避免重复和遗漏。测试:在不同语言环境下进行全面测试,确保所有字符串都能正确显示。文档和注释:为关键代码添加详细的文档和注释,便于后续维护。

墨夶的博客 1691

AMBA-CHI协议详解(一)

CHI体系结构是一种可扩展、一致性的集线器接口和片上互联,可由多个组件使用。CHI体系结构允许根据性能、功耗和面积系统要求灵活地进行组件连接拓扑。硬件一致性使系统组件能够共享内存,而无需维护软件缓存以保持一致性。如果两个组件对同一存储器位置的写入可被所有组件以相同的顺序观察到,则存储器区域是一致的。

Crazzy_M的博客 1万+

ResNet改进(20):融合Swin Transformer与ResNet

这种混合架构的设计理念是:在保留CNN强大局部特征提取能力的同时,引入Transformer的全局建模优势。我们实现的模型在ResNet18的基础上嵌入了一个简化版的Swin Transformer Block,旨在探索两种范式结合的可能性。通过在ResNet早期阶段引入Transformer模块,我们既保留了CNN强大的局部特征提取能力,又获得了Transformer的全局建模优势。本文提出的ResNet与Swin Transformer混合架构,探索了CNN与Transformer结合的可能性。

2401_82355416的博客 859

Vue - 最新详细实现滑块拖动拼图验证,网站登录验证滑块验证功能,拖动滑块到图片缺口的位置即为成功,滑块验证安全检测(详细示例代码,一键复制运行)

您一定见过很多系统都“配备”了滑块验证、拼图验证、找不同等,本质上都是为了验证登录系统的是人还是机器(代码),如下图所示效果: 您打开项目根目录,终端执行如下命令:拼图式拖动滑块验证 验证拖动滑块验证,滑动拼图/图片点选验证 接下来,在中加入以下代码: 如下图所示: 更多配置示例和参数详见官方文档,以下便是如上效果图的代码:.........

🏆 前端领域优质创作者 1万+

深信服全产品线新版图标库 Visio版+PPT版【2023年最新整理】

深信服全产品线新版图标库Visio版(含网络位置符号以及其他网络设备和外设图标)有朋友想要我整理一下深信服的相关图标,那么今天,瑞哥给老铁们整理了。运维漫谈是瑞哥针对运维领域的一个公众号,欢迎大家的关注哦!篇幅原因,就只展示那么多,有需要的朋友自行下载。SANGFOR 各产品图标-Visio版。你好,这里是网络技术联盟站。SANGFOR全产品线图标。深信服设备前置面板-AC。

网络技术联盟站 3693

实战案例—encrypt靶场(AES固定key篇)

AES是一种对称密钥加密方法,意味着加密和解密时使用相同的密钥。AES加密存在三种形式:AES-128、AES-192和AES-256,它们分别对应于三种不同的密钥长度——128位(即16字节)、192位(即24字节)和256位(即32字节)。通常情况下,密钥的长度越长,提供的安全性就越高,但相应地,加解密过程所需的时间也会增加。默认情况下,采用的是AES-128,其提供的安全性对于大多数应用来说已经足够充分。

zhouzhou_98的博客 497

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 20、深度学习在MNIST和足球数据集中的应用与调优
下一篇: 20、宏、鼠标编程与有符号数运算全解析
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值