网络模型

【深度学习基础】从零开始的炼丹生活07——深度模型中的优化

喜夏-厌秋 提交于 2020-02-04 07:09:35
往期回顾: 04——从传统机器学习走向深度学习 05——深度前馈网络、神经网络概述 06——深度学习中的正则化 介绍了神经网络的基本构件和正则化策略之后,学习一下深度模型中的优化。先说一说传统的纯优化与机器学习中的优化的异同,再介绍一下神经网络中优化的挑战,最后说说基本的优化算法。(参考《深度学习》第8章) 一、机器学习中的优化 传统的优化方法是纯优化最小化目标 J 本身,而机器学习的优化是间接作用的。在机器学习问题中,我们关注某些性能度量 P ,其定义于测试集上并且是不可解的。因此机器学习希望通过降低代价函数 J(θ)来间接提高 P 。 1. 经验风险最小化 机器学习算法的目标是降低期望泛化误差 J ∗ ( θ ) = E ( x , y ) ∼ p d a t a L ( f ( x ; θ ) , y ) J^*(\theta)=\mathbb E_{(\bold {x,y})\sim p_{data}}L(f(x;\theta),y) J ∗ ( θ ) = E ( x , y ) ∼ p d a t a ​ ​ L ( f ( x ; θ ) , y ) 这被称为 风险 。此时数据取自真实的潜在分布,然而,我们遇到的问题通常并不清楚真实分布,只知道训练集中的样本。 我们将机器学习中的优化转换回一个优化问题的最简单方法就是最小化训练集上的期望损失,以训练集上的经验分布 p

理解I/O Completion Port(完成端口)

只谈情不闲聊 提交于 2020-02-04 05:51:45
理解I/O Completion Port(完成端口) 欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提到的相关技术: I/O端口 同步/异步 堵塞/非堵塞 服务端/客户端 多线程程序设计 Winsock API 2.0 在这之前,我曾经开发过一个项目,其中一块需要网络支持,当时还考虑到了代码的可移植性,只要使用select,connect,accept,listen,send还有recv,再加上几个#ifdef的封装以用来处理Winsock和BSD套接字[socket]中间的不兼容性,一个网络子系统只用了几个小时很少的代码就写出来了,至今还让我很回味。那以后很长时间也就没再碰了。 前些日子,我们策划做一个网络游戏,我主动承担下网络这一块,想想这还不是小case,心里偷着乐啊。网络游戏好啊,网络游戏为成百上千的玩家提供了乐趣和令人着秘的游戏体验,他们在线上互相战斗或是加入队伍去战胜共同的敌人。我信心满满的准备开写我的网络,于是乎,发现过去的阻塞同步模式模式根本不能拿到一个巨量多玩家[MMP]的架构中去,直接被否定掉了。于是乎,就有了IOCP,如果能过很轻易而举的搞掂IOCP,也就不会有这篇教程了

理解I/O Completion Port(完成端口)

狂风中的少年 提交于 2020-02-04 05:35:57
欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提到的相关技术:   I/O端口   同步/异步   堵塞/非堵塞   服务端/客户端   多线程程序设计   Winsock API 2.0   在这之前,我曾经开发过一个项目,其中一块需要网络支持,当时还考虑到了代码的可移植性,只要使用select,connect,accept,listen,send还有recv,再加上几个#ifdef的封装以用来处理Winsock和BSD套接字[socket]中间的不兼容性,一个网络子系统只用了几个小时很少的代码就写出来了,至今还让我很回味。那以后很长时间也就没再碰了。   前些日子,我们策划做一个网络游戏,我主动承担下网络这一块,想想这还不是小case,心里偷着乐啊。网络游戏好啊,网络游戏为成百上千的玩家提供了乐趣和令人着秘的游戏体验,他们在线上互相战斗或是加入队伍去战胜共同的敌人。我信心满满的准备开写我的网络,于是乎,发现过去的阻塞同步模式模式根本不能拿到一个巨量多玩家[MMP]的架构中去,直接被否定掉了。于是乎,就有了IOCP,如果能过很轻易而举的搞掂IOCP,也就不会有这篇教程了。下面请诸位跟随我进入正题

初步探索高性能网络应用框架Netty

喜夏-厌秋 提交于 2020-02-03 22:56:30
Netty 是一个高性能的网络框架,应用非常普遍,目前在Java 领域,Netty 基本上成为网络程序的标配了,Netty 框架功能丰富,也非常复杂。今天主要分析Netty 框架中的线程模型,而线程模型直接影响着网络程序的性能。 在介绍Netty 的线程模型之前,我们首先搞清楚网络编程性能的瓶颈在哪里,然后再看Netty 的线程模型是如何解决这个问题的。 网络编程性能的瓶颈 传统的BIO 编程模型里, 所有的read() 操作和 write() 操作都会阻塞当前线程的, 如果客户端和服务端已经建立了一个连接,而迟迟不发送数据,那么服务端的 read() 操作会一直阻塞, 所以使用BIO 模型, 一般都会为每个socket 分配一个独立的线程,这样就不会因为线程阻塞在一个socket 上而影响对其他socket 的读写。 BIO 的线程模型如下图所示:每个socket 对应一个独立的线程。为了避免频繁创建消耗线程,可以采用线程池,但是socket 和线程之间的对应关系不会变化。 BIO 这种线程模型,适用于socket 连接不是很多的场景。但是现在的互联网场景,往往需要服务器能够支撑十万甚至百万连接,而创建十万甚至百万连接显然不现实,所以BIO 线程模型无法解决百万连接的问题。如果仔细观察,你会发现互联网场景中,虽然连接很多,但是每个连接的请求并不频繁,所以线程大部分时间都在等待I

动态人工神经网络

倾然丶 夕夏残阳落幕 提交于 2020-02-01 20:35:46
对于非线性系统如果使用传统的线性方法进行建模,会带来很大的误差。使用非线性建模方法,特别是使用动态人工神经网络,可以比较精确的获得对象的输入输出模型。 在秋季学期人工神经网络课程的第三次作业中,为了增加一道实际控制对象建模的作业题,对一个废旧的热吹风枪进行改造,使得它加热电压可以改变,并增加了测量出风温度和风速的传感器。可以同时采集到工作电压与出口温度的数据。 热风枪出口温度与工作电压之间呈现非线性关系 由于热风枪的功率与施加的电压呈现二次关系,这也就直接影响到加热电压与出口温度之间呈现非线性关系。 通过对每个施加电压测量对应稳态时出风口温度,绘制出它们之间的工作曲线。如下图所示,显示了输入电压与输出温度之间的非线性关系。 热风枪出口温度与加热工作电压之间的关系 热风枪的出口温度与环境温度、风速都有直接的关系。上述曲线是在保持环境温度和风速恒定的情况下获得的。 由于热风枪内的加热元件有一定的热惯性,再加上热扩散到空气中有延迟,所以出口温度与工作电压之间是一个动态关系。 下图显示了在施加55V电压后,出口温度呈现的动态响应曲线。 热风枪的在施加单位阶跃电压后的动态过程 如果热风枪的输入电压与出口温度之间是线性关系,则可以通过第一原理建立响应的微分方程,获得系统的动态模型。也可以通过输入输出之间数据对系统进行动态建模。 通过系统输入输出数据建立线性模型,可以通过系统的单位阶跃响应

从网络IO看高性能框架

China☆狼群 提交于 2020-02-01 18:52:46
前言: 我是一名golang后端开发工程师,不是Java,也不是拍黄片,对,就是那个号称原生支持高并发的“够浪!”。那为什么go能支持高并发?原生支持高并发又是何解?跟着我,一起探讨一下所谓的高并发是怎么回事… 阅读本文你将收获: 知道框架高性能的根本原因 了解进程,线程切换开销在哪里 熟悉阻塞与非阻塞IO,同步与异步调用的区别 大纲: 讨论一个高性能框架甚至语言的时候,我们在讨论什么? 三大网络模型 阻塞IO+多进程 阻塞IO+多线程 非阻塞IO+IO多路复用 五种网络IO简介 网络IO的本质 如何区分阻塞IO和非阻塞IO 如何区分同步和异步 个人整理的网络IO思维导图 1.讨论一个高性能框架甚至语言的时候,我们在讨论什么 我相信大家肯定听过什么阻塞/非阻塞IO,同步/异步调用,我也尝试过死记概念,结果大家应该都有体会,过一阵子就忘记了。知其然而不知其所以然~然并卵。 大家在选择一门语言或者一个框架的时候肯定优先看他的性能,也就是并发量,例如常用的测试手段,就是用该语言或者框架写个http server服务器,对于http请求返回一个“hello,world!”,利用wrk进行压测,看看每分钟请求量最高能到多少,在4核8G的Ubuntu服务器上跑该http服务,利用wrk压测,gin框架每分钟能处理的请求量接近300W!这是相当优秀的! 前一阵子在go meet

图神经网络 | (2) 图神经网络(Graph Neural Networks,GNN)综述

不打扰是莪最后的温柔 提交于 2020-02-01 16:21:16
原文地址 本篇文章是对 论文“Wu Z , Pan S , Chen F , et al. A Comprehensive Survey on Graph Neural Networks[J]. 2019.” 的翻译与笔记。 论文链接 目录 1. 什么是图神经网络? 2. 有哪些图神经网络? 3. 图卷积网络(Graph Convolution Networks,GCN) 4. 图注意力网络(Graph Attention Networks) 5. Graph Autoencoders 6. Graph Generative Networks 7. Graph Spatial -Temporal Networks 8. 图神经网络的应用 1. 什么是图神经网络? 在过去的几年中,神经网络的成功推动了模式识别和数据挖掘的研究。许多机器学习任务,如目标检测、机器翻译和语音识别,曾经严重依赖手工的特征工程来提取信息特征集,最近被各种端到端的深度学习范式(例如卷积神经网络(CNN)、长短期记忆(LSTM)和自动编码器)彻底改变了。在许多领域中,深度学习的成功部分归因于快速发展的计算资源(如GPU)和大量训练数据的可用性,部分归因于深度学习从欧氏空间数据中提取潜在表示的有效性。 尽管深度学习在欧氏空间中的数据方面取得了巨大的成功,但在许多实际的应用场景中的数据是从非欧式空间生成的

网络模型的压缩

只谈情不闲聊 提交于 2020-02-01 03:22:04
引用本文: [如本文对读者朋友们的研究有所帮助,请添加如下参考文献] 纪荣嵘,林绍辉,晁飞,吴永坚,黄飞跃. 深度神经网络压缩与加速综述[J]. 计算机研究与发展, 2018, 55(9): 1871-1888. Ji Rongrong,Lin Shaohui,Chao Fei,Wu Yongjian,Huang Feiyue. Deep Neural Network Compression and Acceleration: A Review. Journal of Computer Research and Development, 2018, 55(9): 1871-1888. 1.原因 对于深度神经网络而言,其无论参数、计算量、数据存储或者说是网络深度与宽度等等都会限制深度神经网络在嵌入式、便携式工具上的拓展应用 2.加速、压缩任务 2.1 卷积层: 计算耗时长,可以通过权值共享策略进行网络存储压缩,涉及到的是网络的计算加速 2.2 全连接层: 因为是神经元之间的全连接,所以其网络参数尤其的多,因此涉及到的是网络模型的内存压缩 而这两项任务设计到很多学类门课: 机器学习、参数优化、计算架构、数据压缩、索引、硬件加速 。 3.主流方法 深度神经网络的压缩与加速的主要方法有: 参数剪枝、参数共享、低秩分解、紧性卷积核设计、知识蒸馏 参数剪枝: 主要通过设计判断参数重要与否的准则

keras_预测房价:回归问题

痴心易碎 提交于 2020-01-31 22:39:32
https://blog.csdn.net/xiewenrui1996/article/details/103913963 《Python深度学习》 下面是你应该从这个例子中学到的要点。 ‰ 回归问题使用的损失函数与分类问题不同。回归常用的损失函数是均方误差(MSE)。 ‰ 同样,回归问题使用的评估指标也与分类问题不同。显而易见,精度的概念不适用于回 归问题。常见的回归指标是平均绝对误差(MAE)。 ‰ 如果输入数据的特征具有不同的取值范围,应该先进行预处理,对每个特征单独进行 缩放。 ‰ 如果可用的数据很少,使用 K 折验证可以可靠地评估模型。 ‰ 如果可用的训练数据很少,最好使用隐藏层较少(通常只有一到两个)的小型网络,以 避免严重的过拟合。 import keras keras . __version__ Let's take a look at the data : # 波士顿房价数据集 # 本节将要预测 20 世纪 70 年代中期波士顿郊区房屋价格的中位数,已知当时郊区的一些数 # 据点,比如犯罪率、当地房产税率等。本节用到的数据集与前面两个例子有一个有趣的区别。 # 它包含的数据点相对较少,只有 506 个,分为 404 个训练样本和 102 个测试样本。输入数据的 # 每个特征(比如犯罪率)都有不同的取值范围。例如,有些特性是比例,取值范围为 0~1;有 #

k8s的网络模型和CNI插件

China☆狼群 提交于 2020-01-31 14:19:51
网络栈 一个进程发起和响应网络环境(网络栈) 网卡 回环设备 路由表 iptables规则 kubernetes-cni包 在宿主机上安装CNI插件所需要的基础可执行文件(/opt/cni/bin) flannel项目对应的cni插件已经被内置了 无需单独安装 weave calico等安装插件的时候必须把对应的CNI插件的可执行文件拷贝到/opt/cni/bin下 k8s的cni(flannel)插件的安装 网络方案的本身 创建和配置网络设备 如网桥等 配置宿主机路由表 配置ARP表和FDB表 网络对应的CNI插件 配置Infra容器的网络栈 并把容器连接到CNI网桥上 CNI插件的工作原理 kubelet创建Pod的时候,第一个创建的一定是Infra容器 创建并启动容器后就会 为CNI插件准备参数,然后调用CNI插件(/opt/cin/bin下的可执行文件)配置容器网络栈 CNI插件参数的组成 1.设置CNI的环境变量CNI_COMMAND 只有ADD和DEL ADD的含义是把容器添加到CNI网络里 DEL的含义是把容器从CNI网络里移除 2.设置CNI的环境变量CNI_ARGS 通过这个参数以key-value的格式传递自定义信息给网络插件是用户实现自定义CNI协议的重要方法 3.从CNI配置文件中加载自己的默认插件的配置信息 有了这两部分参数,接下来 CNI bridge