上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 15 下一页
摘要: Python:用pyinstrument做性能分析 在计算密集型计算或一些Web应用中,我们常常需要对代码做性能分析。在Python中,最原始的方法即是使用time包中的time函数(该函数以秒为计时单位)。但是一旦函数多了起来,这种方式显然过于繁杂。类似C语言中的cProfile,在Python中,也有专门的性能分析工具pyinstrument(该库非内置,需要使用conda/pip安装),我们在复杂的项目中可以使用它来代替简陋的time.time()。 阅读全文
posted @ 2022-03-21 14:50 orion-orion 阅读(1703) 评论(0) 推荐(0) 编辑
摘要: Python:用tqdm模块绘制进度条 在计算密集型迭代计算中,我们常常需要知道当前的迭代轮次,最传统的方法就是打印当前迭代计数器的轮数。那有没有更好的方法呢?我们可以使用tqdm模块(非py内置,需要单独按照)来在控制台绘制进度条,这样更加直观。最简单的一种方法是直接做为迭代器使用,还有一种稍复杂的方法,就是自定义进度条计数器的更新。 阅读全文
posted @ 2022-03-21 11:01 orion-orion 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 联邦学习:多任务思想与聚类联邦学习 在联邦学习领域,许多传统机器学习已经讨论过的问题(甚至一些90年代和00年代的论文)都可以被再次被发明一次。比如我们会发现聚类联邦学习和多任务学习之间就有千丝万缕的联系。聚类联邦学习基本上都基于这样一个假设:虽然联邦学习中各节点的数据是Non-IID的,但是我们可以假定某些节点的数据可以归为一个聚类簇(簇内节点的分布近似IID)。实际上,这个思想让我们联想到高斯混合分布。高斯混合分布就假设每个节点的数据采样自高斯混合分布中的一个成分(对应一个簇),而经典的高斯混合聚类就是要确定每个节点和簇的对应关系。 阅读全文
posted @ 2022-03-15 21:17 orion-orion 阅读(3356) 评论(4) 推荐(2) 编辑
摘要: 联邦学习:按混合分布划分Non-IID样本 在上一篇博文中我们已经提到了按照Dirichlet分布划分联邦学习Non-IID数据集的一种算法。下面让我们来看按Dirichlet分布划分数据集的另外一种变种,即按混合分布划分Non-IID样本,该方法在NIPS2021的一篇论文中首次提出。该论文提出了一个重要的假设,那就是虽然联邦学习每个client的数据是Non-IID,但我们假设它们都来自一个混合分布(混合成分个数为超参数可调。 阅读全文
posted @ 2022-03-10 21:39 orion-orion 阅读(2698) 评论(2) 推荐(1) 编辑
摘要: 统计学习:EM算法及其在高斯混合模型(GMM)中的应用 我们在应用中所面对的数据有时是缺损的/观测不完全的。我们将数据分为:可观测数据,用Y表示;缺失数据,用Z表示; 完全数据,用X=(Y, Z)表示。EM算法的基本思想是通过P(Y,Z)和P(Z |Y)这两个容易进行估计的分布来估计P(Y)。事实上,在应用中缺失数据Z常常并不是真实存在,而是人为造出来的(为了方便概率分布的估计)。我们此时将缺失数据Z称为隐含数据(latent data)。 阅读全文
posted @ 2022-03-09 11:03 orion-orion 阅读(794) 评论(0) 推荐(0) 编辑
摘要: 联邦学习中的优化算法 联邦学习做为一种特殊的分布式机器学习,仍然面临着分布式机器学习中存在的问题,那就是设计分布式的优化算法。 不过相比传统的分布式机器学习,它需要关注系统异质性(system heterogeneity)、统计异质性(statistical heterogeneity)和数据隐私性(data privacy)。系统异质性体现为昂贵的通信代价和节点随时可能宕掉的风险(容错);统计异质性数据的不独立同分布(Non-IID)和不平衡。由于以上限制,传统分布式机器学习的优化算法便不再适用,需要设计专用的联邦学习优化算法。 阅读全文
posted @ 2022-03-04 15:37 orion-orion 阅读(5258) 评论(0) 推荐(4) 编辑
摘要: 分布式多任务学习及联邦学习个性化 现在多任务学习根据数据的收集方式可以粗略地被分为两种,一个是集中化的计算方法,即假定数据被事先收集到一个中心节点上然后再运行模型, 大多数基于神经网络的多任务学习应用,比如CV和NLP,主要都用的这种方法。另外还有一种是分布式的计算方法,这种方法假定异构的(heterogeneous)数据分别由各个任务分别以分布式的方式收集。近年来由于联邦学习的火热,该方法得到了很多的重视。 阅读全文
posted @ 2022-03-01 18:50 orion-orion 阅读(1685) 评论(0) 推荐(1) 编辑
摘要: Pytorch:自定义Subset/Dataset类完成数据集拆分 我们常常会在训练集的基础上拆分出验证集(或者只用部分数据来进行训练)。我们想到的第一个方法是使用torch.utils.data.random_split对dataset进行划分,但这样拆分后已经不再是原本的dataseet对象,而是一个所谓的Subset对象!此时Subset对象虽然仍然还存有data属性,但是内置的target和classes属性已经不复存在,那么该如何做到前后代码的一致性呢?这里有一个trick,那就是以继承SubSet类的方式的方式定义一个新的CustomSubSet类。 阅读全文
posted @ 2022-02-17 19:29 orion-orion 阅读(8152) 评论(0) 推荐(0) 编辑
摘要: Chrome:用uBlacklist屏蔽CSDN搜索结果 CSDN现在广告满天飞,且很多博客需要先关注才能复制,非常令人无语。如果每次用Google搜索的时候都要加上"-csdn"选项,就非常麻烦。有没有更方便的办法呢?我们可以利用Chrome的uBlacklist插件。 阅读全文
posted @ 2022-02-16 11:37 orion-orion 阅读(6440) 评论(2) 推荐(3) 编辑
摘要: 联邦学习:按Dirichlet分布划分Non-IID样本 我们在联邦学习中,经常会假设不同client间的数据集不满足独立同分布(non-iid)。那么我们如何将一个现有的数据集按照non-iid划分呢?我们知道带标签样本的生成分布看可以表示为p(x,y),我们进一步将其写作p(x,y)=p(x|y)p(y)。其中如果要估计p(x|y)的计算开销非常大,但估计p(y)的计算开销就很小。所有我们按照样本的标签分布来对样本进行non-iid划分是一个非常高效、简便的做法。 阅读全文
posted @ 2022-02-15 19:15 orion-orion 阅读(6686) 评论(2) 推荐(2) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 15 下一页