内存参数

vgg 16模型的内存和参数量的计算

元气小坏坏 提交于 2020-01-21 07:33:07
cs231n 上关于VGG-16模型的内存和参数的计算过程如下。 INPUT: [224x224x3] memory: 224*224*3=150K weights: 0 CONV3-64: [224x224x64] memory: 224*224*64=3.2M weights: (3*3*3)*64 = 1,728 CONV3-64: [224x224x64] memory: 224*224*64=3.2M weights: (3*3*64)*64 = 36,864 POOL2: [112x112x64] memory: 112*112*64=800K weights: 0 CONV3-128: [112x112x128] memory: 112*112*128=1.6M weights: (3*3*64)*128 = 73,728 CONV3-128: [112x112x128] memory: 112*112*128=1.6M weights: (3*3*128)*128 = 147,456 POOL2: [56x56x128] memory: 56*56*128=400K weights: 0 CONV3-256: [56x56x256] memory: 56*56*256=800K weights: (3*3*128)*256 = 294,912 CONV3-256:

Spark-SQL 面试准备 2

馋奶兔 提交于 2020-01-21 01:51:30
Spark Knowledge NO.2 11.RDD缓存: Spark可以使用 persist 和 cache 方法将任意 RDD 缓存到内存、磁盘文件系统中。缓存是容错的,如果一个 RDD 分片丢失,可以通过构建它的 transformation自动重构。被缓存的 RDD 被使用的时,存取速度会被大大加速。一般的executor内存60%做 cache, 剩下的40%做task。 Spark中,RDD类可以使用cache() 和 persist() 方法来缓存。cache()是persist()的特例,将该RDD缓存到内存中。而persist可以指定一个StorageLevel。StorageLevel的列表可以在StorageLevel 伴生单例对象中找到。 Spark的不同StorageLevel ,目的满足内存使用和CPU效率权衡上的不同需求。我们建议通过以下的步骤来进行选择: 如果你的RDDs可以很好的与默认的存储级别(MEMORY_ONLY)契合,就不需要做任何修改了。这已经是CPU使用效率最高的选项,它使得RDDs的操作尽可能的快。 如果不行,试着使用MEMORY_ONLY_SER并且选择一个快速序列化的库使得对象在有比较高的空间使用率的情况下,依然可以较快被访问。 尽可能不要存储到硬盘上,除非计算数据集的函数,计算量特别大,或者它们过滤了大量的数据。否则

Docker——Cgroup资源限制

[亡魂溺海] 提交于 2020-01-21 01:18:33
一、Cgroup (1)Docker通过 Cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。 (2)Cgroup 是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源的机制。 Cgroup 子系统: 1、blkio:设置限制每个块设备的输入输出控制; 2、cpu:使用调度程序为 cgroup 任务提供 cpu 的访问; 3、cpuacct:产生 cgroup 任务的 cpu 资源报告; 4、cpuset:如果是多核心的 cpu,这个子系统会为 cgroup 任务分配单独的 cpu 和内存; 5、devices:允许或拒绝 cgroup 任务对设备的访问; 6、freezer:暂停和恢复 cgroup 任务; 7、memory:设置每个 cgroup 的内存限制以及产生内存资源报告; 8、net_cls:标记每个网络包以供 cgroup 方便使用; 9、ns:命名空间子系统; 10、perf_event:增加了对每个 cgroup 的监测跟踪能力,可以监测属于某个特定的 cgroup 的所有线程及运行在特定 CPU 上的线程。 二、使用 stress 工具测试 CPU 和内存 首先使用 Dockerfile 来创建一个基于 Centos 的 stress 的工具镜像: [root@localhost ~

Spark优化总结(三)——调参

纵然是瞬间 提交于 2020-01-19 04:30:14
文章目录 Spark优化总结(三)——调参 前言 简单示例 常用参数 JVM调参 Spark优化总结(三)——调参 前言 不要期待修改一个参数能够像魔法一样立马得到神奇的好效果!(某些时候效果确实很棒^_^)你应当把参数看作一道菜中的调味品,能够丰富味道,但主要还是得靠原材料的质量与炒菜的技艺。 开发Spark应用时,应当先优化好你的应用代码,再来思考调参优化(必要的参数的除外)。 调参是一个比较复杂的主题,不同的环境、不同的代码都会导致同样的参数产生不同的效果。建议尽量在确定您的生产环境情况后、在优化好存在明显问题的代码后,再做调参测试。 下面会列出开发中常用的部分参数,并加以解释,以作参考 简单示例 一个Spark任务提交示例 spark-submit \ --queue test_queue --master yarn --deploy-mode cluster \ --num-executors 10 --executor-memory 8G --executor-cores 4 \ --driver-memory 4G --driver-cores 2 \ --conf spark.network.timeout = 300 \ --conf spark.locality.wait = 9s \ --class com.skey.spark.app.MyApp /home

java面试题大全-基础方面

我只是一个虾纸丫 提交于 2020-01-19 03:53:23
Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时默认为friendly 2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4、&和&&的区别 答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5、Collection 和 Collections的区别 答

小熊派华为物联网操作系统LiteOS内核教程06-内存管理

泄露秘密 提交于 2020-01-19 00:38:13
1. LiteOS内核的内存管理 1.1. 内存管理 在系统运行的过程中,一些内存空间 大小是不确定的 ,比如一些数据缓冲区,所以系统需要提供内存空间的管理能力,用户可以在使用的时候申请需要的内存空间,使用完毕释放该空间,以便再次利用。 Huawei LiteOS 的内存管理模块通过对内存的申请/释放操作,来管理用户和OS对内存的使用,使内存的利用率和使用效率达到最优,同时最大限度地解决系统的内存碎片问题。 1.2. 动态内存管理 动态内存管理,即在内存资源充足的情况下,从系统配置的一块比较大的连续内存(内存池),根据用户需求,分配任意大小的内存块。当用户不需要该内存块时,又可以释放回系统供下一次使用。 与静态内存相比,动态内存管理的好处是按需分配,缺点是内存池中容易出现碎片 。 LiteOS动态内存支持 DLINK 和 BEST LITTLE 两种标准算法。 1.2.1. DLINK 动态内存管理算法 DLINK动态内存管理结构如下图所示: 第一部分 堆内存(也称内存池)的起始地址及堆区域总大小。 第二部分 本身是一个数组,每个元素是一个双向链表,所有free节点的控制头都会被分类挂在这个数组的双向链表中。 第三部分 占用内存池极大部分的空间,是 用于存放各节点的实际区域 。 1.2.2. BEST LITTLE 算法(重点) LiteOS 的动态内存分配支持最佳适配算法,即

.NET笔试集(二)

无人久伴 提交于 2020-01-18 23:45:20
1.using关键字有什么用?什么是IDisposable? using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的Dispose方法,释放资源。using其实等价于try……finally,用起来更方便。 2.Assembly.Load("foo.dll"); 这句话是否正确? 错误,正确的应该是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll"); 3.XML 与 HTML 的主要区别 (1)XML是区分大小写字母的,HTML不区分。 (2)在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束 标记。在XML中,绝对不能省略掉结束标记。 HTML:<img src="1.jpg"><br><br> XML:<img src="1.jpg"></img><br/><br/> (3)在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。 (4)在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。 (5)在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

java基础解疑!!!

给你一囗甜甜゛ 提交于 2020-01-18 05:11:06
疑问一:0.01+0.09的结果? public class MathTest{ public static void main(String[]args){ double a = 0.01, b = 0.09; System.out.print(a+b); } } 打印的结果为什么是 0.09999999999999999 而非 0.1,发生精度损失, 无论是 double还是 float 都会遇到这个问题,就拿 float 说话, float 的 0.1 二进制形式是 00111101110011001100110011001101 ,根据符号位换算为 10 进制表达的值精确应该是这样计算 110011001100110011001101 乘以 2 的负 27 次方,实际值是 0.100000001490116119384765625 这样就产生了实际误差。 例 public float getLeftMoney() throws Exception { // TODO Auto-generated method stub float m = new MoneyDaoImpl().CountAllMoney(); float c = new DetailsDaoImpl().countDetailsMoney(); flaot less = m-c; System.out

js知识点小结

你。 提交于 2020-01-18 03:16:54
文章目录 1、原始值和引用值类型及区别 2、判断数据类型typeof、instanceof、Object.prototype.toString.call()、constructor 3、类数组与数组的区别与转换 4、 数组的常见API 5、bind、call、apply的区别 6、new的原理 7、如何正确判断this(区别箭头函数) 8、严格模式与非严格模式的区别 9、原型和原型链 10、prototype与__proto__的关系与区别 11、继承的实现方式及比较 12、作用域和作用域链、执行上下文 13、闭包及其作用 14、深拷贝与浅拷贝 15、防抖和节流 16、Js事件绑定时,函数名加括号和不加括号区别 17、DOM常见的操作方式 18、 Array.sort()方法与实现机制 19、 Ajax的请求过程 20、JS的垃圾回收机制 21、JS中的String、Array和Math方法 22、addEventListener(DOM2级事件处理程序)和onClick()(DOM0级事件处理程序)的区别 23、立即执行函数 24、整个HTML解析过程与JS脚本解析和执行顺序 25、new和Object.create的区别 26、DOM的location对象 27、浏览器从输入URL到页面渲染的整个流程 28、跨域、同源策略及跨域实现方式和原理 29、浏览器的回流(Reflow

Kubernetes-运维指南

◇◆丶佛笑我妖孽 提交于 2020-01-14 04:54:29
Node隔离与恢复 cat unschedule_node.yaml apiVersion: kind: Node metadata: name: k8s-node-1 labels: kubernetes.io/hostname: k8s-node-1 sepc: unschedulable: true kubectl replace -f unschedule_node.yaml kubectl patch node k8s-node-a -p '{"spec":{"unschedulable":"true"}' kubectl cordon k8s-node-1(对节点进行隔离) kubectl uncordon k8s-node-1(对节点进行恢复) Node的扩容 在新节点上安装Docker、kubelet、kube-proxy服务,并修改kubelet和kube-proxy的启动参数将Master URL指定为当前集群的Master的地址,最后启动这些服务。 更新资源对象的Label kubectl lable pod redis-master-bobr role=backend kubectl get pods -Lrole kubectl label pod redis-master-bobr0 role- kubectl label pod redis