关于思维逻辑的几点思考
今天中秋,刚刚晚上下班回来后就22:30了,然后处理了下工作上的事情,然后放松了会洗了个澡,然后就现在00:43了。总是说生活要有一些仪式感的,哎,时间所迫生活已然不易。
今天中秋,刚刚晚上下班回来后就22:30了,然后处理了下工作上的事情,然后放松了会洗了个澡,然后就现在00:43了。总是说生活要有一些仪式感的,哎,时间所迫生活已然不易。
目前主流的以双塔结构为基础的粗排系统被定义为第三代粗排系统,其离线计算得到用户和广告的向量,同时以向量内积的方式在线计算得到用户和广告的分数进行排序过滤。该架构的优点在于性能开销小,但是也有如下缺点:
aiomultiprocess是一个异步多进程的python库,其依赖于aiohttp和asyncio两个库。aiohttp是一个基于asyncio的异步http客户端和服务器。asyncio 是用来编写 并发 代码的库,使用 async/await 语法。asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等。
最近状态一直不好,可能潜意识中被莫名其妙的事情影响着。我想是心态有点崩和毫无工作计划。这让我想起来了《李小龙传奇》中徐迪雅和李小龙说的一段话:“美国是个大动物园,适者生存。这是我这么多年在美国打拼,尝遍酸甜苦辣之后得出的结论。不管遇到任何困难,都不要迷失自己,不要丧失自信”。我想对于现在的我也同样适用吧。想清楚自己想要的是什么,好好干。
最近遇到一个问题,几天没有思路,结果被同事一语道破,发现还是对api不熟,所以这里立个flag,最近把所有的tf.nn下的api全部看一遍。下次有问题直接先把api撸一遍再说。
在tensorflow和pytorch中都有一个gather函数,其作用相似但是用法不同。关于tf.gather的用法可以参考知乎作者Towser的文章《TF 中的 indexing 和 slicing》。torch.gather函数的用法也很简单,就是给定indices获取tensor对应元素。给个例子就明白了。
在sklearn中使用roc_auc_score()函数计算auc,其计算方式和tf.metrics.auc()计算方式基本一致,也是通过极限逼近思想,计算roc曲线下面积的小梯形之和得到auc的。二者主要区别在于计算小梯形面积(计算小梯形面积时需要设置阈值计算tp,tn,fp,fn,进而计算tpr,fpr和小梯形面积)。第一,在tf.metrics.auc()中可以指定阈值个数,默认是200个阈值,一般设置该阈值为batch size比较合理。而在sklearn的roc_auc_score()函数实现中,直接指定了阈值个数为batch size。第二,阈值的产生方式也不同。tf.metrics.auc()是等距产生阈值的,roc_auc_score()直接以预测概率scores为阈值。
auc是机器学习二分类问题的常用指标,其反映了分类器对正负样本的排序能力,换句话说,auc反映了模型对正负样本的区分能力。常用的auc计算方式有两种,一种是tensorflow的tf.metrics.auc函数,另一种是sklearn中的roc_auc_score()函数。二者都是通过极限逼近的思想,计算roc曲线下面积的一个个小梯形的面积和得到auc。不过有点奇怪的是,这两个函数计算出来的auc值并不总是相似的,有时会差别比较大,所以想分析下。本文先看下tf.metrics.auc的实现。