Loading

摘要: 基础链表题目 206. 反转链表 使用双指针法解决链表问题 19. 删除链表的倒数第N个节点 用两个指针指向head节点,先让第一个指针走n-1步,然后再让两个指针同时走,直到第一个指针的next为nullptr,此时第二个指针指向的就是要删除的节点。这里为了减少不必要的判断,我们把第二个指针设为二 阅读全文
posted @ 2020-09-07 10:06 shuo-ouyang 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 本文主要基于MXNet1.6.0版本进行分析。 MXNet的KVStore模块下有几个比较重要的类。KVStore是一个抽象类,提供了一些通用的API,例如Init、Push和Pull等。因为KVSotre支持int和string两种类型的key,所以这些API以不同类型的key作为参数,提供了两种 阅读全文
posted @ 2020-08-22 15:12 shuo-ouyang 阅读(658) 评论(0) 推荐(0) 编辑
摘要: 本文基于tensorflow-v1.15分支,简单分析下TensorFlow中的优化器。 optimizer = tf.train.GradientDescentOptimizer(learning_rate=.05) train_op = optimizer.minimize(loss) 当我们调 阅读全文
posted @ 2020-06-20 12:05 shuo-ouyang 阅读(1624) 评论(0) 推荐(0) 编辑
摘要: 主格助词「が」 表示对象 私は 本が ほしい です。 私は 紅茶が 飲みたいです。 表示主语 動物園に 多くの人が います。 花瓶の 傍に 本が あります。 主格助词「の」 表示所属、所用、性质、从属、状态等 王さんは 東京大学の 留学生です。 表示句中同位语 社員の 田中さんが 來ました。 宾格助 阅读全文
posted @ 2020-05-30 16:27 shuo-ouyang 阅读(808) 评论(0) 推荐(0) 编辑
摘要: 为了降低大规模分布式训练时的通信开销,作者提出了一种名为深度梯度压缩(Deep Gradient Compression, DGC)的方法。DGC通过稀疏化技术,在每次迭代时只选择发送一部分比较“重要”的梯度元素,以达到降低整个训练过程通信量的目的。为了保证使用DGC后模型的精度,作者还使用了几种花 阅读全文
posted @ 2020-05-24 18:33 shuo-ouyang 阅读(2010) 评论(0) 推荐(1) 编辑
摘要: 有时候人们会说,操作系统有两种方法,来解决大多数空间管理问题。第一种是将空间分割成不同长度的分片,就像虚拟内存管理中的分段。遗憾的是,这个解决方法存在固有的问题。具体来说,将空间切成不同长度的分片以后,空间本身会碎片化,随着时间推移,分配内存会变得比较困难。 因此,值得考虑第二种方法:将空间分割成固 阅读全文
posted @ 2020-05-06 09:28 shuo-ouyang 阅读(677) 评论(0) 推荐(0) 编辑
摘要: 本章主要讨论关于内存空闲空间管理的一些问题。如果需要管理的内存空间被划分为固定大小的单元,空闲空间管理就很容易。在这种情况下,只需要维护这些大小固定的单元的列表,如果有内存分配请求,就返回列表中的第一项。但是,如果空闲空间由大小不同的单元构成,管理就变得比较困难。这种情况出现在用户级的内存分配库(如 阅读全文
posted @ 2020-05-03 21:30 shuo-ouyang 阅读(1161) 评论(0) 推荐(0) 编辑
摘要: 到目前为止,我们一直假设将所有进程的地址空间完整地加载到内存中。利用基址和界限寄存器,操作系统很容易将不同进程重定位到不同的物理内存区域。但是,对于这些内存区域,一件有趣的事是:栈和堆之间,有一大块“空闲”空间。 从图中可知,如果我们将整个地址空间放入物理内存,那么栈和堆之间的空间并没有被进程使用, 阅读全文
posted @ 2020-04-27 16:15 shuo-ouyang 阅读(665) 评论(0) 推荐(0) 编辑
摘要: 为了高效地实现内存虚拟化,并提供应用程序所需的灵活性,我们利用基于硬件的地址转换技术。通过该技术,硬件对每次内存访问进行处理(即指令获取、数据读取或写入),将指令中的虚拟地址转换为数据实际存储的物理地址。因此,在每次内存引用时,硬件都会进行地址转换,将应用程序的内存引用重定位到物理内存中实际的位置。 阅读全文
posted @ 2020-04-26 12:30 shuo-ouyang 阅读(1276) 评论(0) 推荐(0) 编辑
摘要: 内存类型 在运行一个C程序的时候,会分配两种类型的内存。第一种称为栈内存,它的申请和释放操作是编译器来隐式管理的,所以有时也称为自动内存。假设需要在 函数中为一个整形变量 申请空间,我们只需要这样: 编译器完成剩下的事情,确保在你进入 函数的时候,在栈上开辟空间。当你从该函数退出时,编译器释放内存。 阅读全文
posted @ 2020-04-25 21:47 shuo-ouyang 阅读(229) 评论(0) 推荐(0) 编辑