《她对此感到厌烦》
之前没有接触或看过任何关于女权、厌女类书籍,所以这本是我第一本女性意识启蒙书籍。
它虽然是一部网络作品,但具备了许多优点。不仅有紧凑而不拖泥带水的情节,有体现人性弱点的桥段,也有激发自我意识、值得全体复诵的金句。它的文风之成熟,对人性之洞察,思想之深刻,我认为它毫不逊色于世界名著。
目前我只看了第一遍,但受限于自身经历,无法对书中的所有描写和自白都有深刻的理解。希望之后能入手一本实体书,把经典情节和语录反复观看。
谈谈小说中的几个人物吧。
首先,最先打动我的人物是赫卡特。赫卡特是本森子爵家的商业天才,扩大了家族商业规模,却始终被迫隐藏在幕后,随时能够被弟弟维德抢回管理权。父亲死后,弟弟与一众亲戚逼迫赫卡特嫁给了大她四十岁的老变态马洛伯爵,成为了他第六任妻子,不久后便被他虐待致死。在过去的轮回中,莉莉丝的坏结局之一,成为了马洛伯爵的第七任妻子。在无数次凌辱和虐待中,她无意间找到了赫卡特隐藏的日记。
“那个本子的纸张皱巴巴的,有些地方被泪水浸湿,有些地方被血浸染,但是上面记录着一些商业上的想法。
赫卡特在被虐待的间隙,靠着幻想支撑着自己。她在本子上写出了很多天才般的想法,幻想出了一个店面, ...
Hexo 无法加载图床图片
之前使用图床,markdown中直接引用图床的链接,这几天重新打开博客,发现所有的图片都失效了,变成404
咔咔一顿搜,只有这个博主的方法是对的
https://www.jianshu.com/p/5b58ecce6443
因为我个人用的是butterfly主题,所以处理方式就是修改主题下的head.pug文件,添加下面这段代码:
1meta(name="referrer" content="no-referrer")
搞定!
Javascript作用域与闭包
作用域与闭包
概念
闭包是指有权访问另一个函数作用域中变量的函数。
创建闭包的最常见的方式就是在一个函数内创建另一个函数,创建的函数可以访问到当前函数的局部变量。
闭包有两个常用的用途:
闭包的第一个用途是使我们在函数外部能够访问到函数内部的变量。通过使用闭包,可以通过在外部调用闭包函数,从而在外部访问到函数内部的变量,可以使用这种方法来创建私有变量。
闭包的另一个用途是使已经运行结束的函数上下文中的变量对象继续留在内存中,因为闭包函数保留了这个变量对象的引用,所以这个变量对象不会被回收。
闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰。直观的说就是形成一个不销毁的栈环境。
闭包作用域
函数作为返回值
fn函数内定义了一个局部变量,并返回一个匿名函数结果,该匿名函数保留了对该变量的引用。
在外层,我们使用f接收fn的返回值,得到的返回结果是一个函数,通过调用该函数,使得我们在fn函数的外部能够访问到函数内部的变量,同时调用之后该变量不会被回收。
注意,内部的函数绑定的是它附近的环境
123456789101112funct ...
Javascript原型与原型链
原型与原型链
Javascript语言的继承机制
Javascript语言的继承机制全靠一种很奇特的"原型链"(prototype chain)模式来实现,以下是它的形成过程:
在一开始的时候,JS打算用构造函数生成实例对象,可是存在一个缺点,那就是无法共享属性和方法。
比如,在DOG对象的构造函数中,设置一个实例对象的共有属性species。
1234function DOG(name){ this.name = name; this.species = '犬科'; }
然后,生成两个实例对象:
12var dogA = new DOG('大毛');var dogB = new DOG('二毛');
这两个对象的species属性是独立的,修改其中一个,不会影响到另一个。
12dogA.species = '猫科';alert(dogB.species); // 显示"犬科",不受dogA的影响
每一个实例对象,都有自己的属性和 ...
Javascript异步编程
异步编程
概念
同步:一定要等任务执行完了,得到结果,才执行下一个任务。(类似于串行)
1A -> B -> AJAX 请求 -> C ---------------------------
异步:不等任务执行完,直接执行下一个任务。(类似于并行)
12A -> B -> C --------------------------------------- -> AJAX 请求 --------------------------------
当各个任务相互独立的时候,可以使用异步的方式执行,可以加速运行效率
12345678console.log("A")setTimeout(() => { console.log("B")}, 1000)console.log("C")// 输出顺序是 ACB
回调函数
回调函数可以告诉异步任务下一步做什么。
当A B两个函数存在运行顺序的时候,可以使用嵌套回调函数进行维护。比如我们希望先打印A,过了一秒钟之后 ...
决策树笔记
生成步骤
特征选择
决策树的生成
剪枝
特征选择
某件事的不确定性越大,需要了解的信息就越多;在统计中,用熵度量随机变量的不确定性;
熵越大,随机变量的不确定就越大
信息熵
若一个随机变量Y的取值为Y=c1,c2...Y = {c_1, c_2...}Y=c1,c2...,概率分布为P(Y=ci)=pi,i=1,2,..kP(Y = c_i) = p_i, i =1,2,..kP(Y=ci)=pi,i=1,2,..k
那么随机变量Y的熵定义为
H(Y)=−∑i=1kpilog(pi)H(Y) = -\sum_{i=1}^k p_ilog(p_i)
H(Y)=−i=1∑kpilog(pi)
举个例子:
Entropy(t)=−16log2(16)−56log256=0.65Entropy(t) = -\frac{1}{6}log_2(\frac{1}{6})-\frac{5}{6}log_2\frac{5}{6} = 0.65
Entropy(t)=−61log2(61)−65log265=0.65
信息增益
随机变量Y的熵H(Y)与Y的条件熵H(Y ...
模型评估指标解读
分类指标
以下指标用于二分类问题,如果是多分类的问题,也可以使用1:M的方法转变成二分类进行计算。
混淆矩阵 Confusion Matrix
准确率 - accuracy
全局预测正确的样本数占所有样本数的比例,计算公式如下:
Acc=TP+TNALLAcc = \frac{TP + TN}{ALL}
Acc=ALLTP+TN
缺点:在binary classification且正反例不平衡的情况下,计算准确率没有意义。
假设在测试集里,有100个sample,99个反例,只有1个正例。如果模型对任意一个sample都预测为反例,Acc是 正确的个数/总个数 = 99/100 = 99%,但显然这样的预测是不合理的。
查准率 Precision
所有预测为正样本的集合中预测正确的比例:
Precision=TPTP+FPPrecision = \frac{TP}{TP + FP}
Precision=TP+FPTP
查全率 Recall
所有正样本中预测正确的比例,即正样本的准确率。
Recall=TPTP+FNRecall = \frac{TP}{TP + FN}
...
BatchNormalization原理与python实现
背景
炼丹困扰
在深度学习中,由于问题的复杂性,我们往往会使用较深层数的网络进行训练,需要去尝试不同的学习率、初始化参数方法(例如Xavier初始化)等方式来帮助我们的模型加速收敛。
深度神经网络之所以如此难训练,其中一个重要原因就是网络中层与层之间存在高度的关联性与耦合性。
网络中层与层之间的关联性会导致如下的状况:随着训练的进行,网络中的参数也随着梯度下降在不停更新。
一方面,当底层网络中参数发生微弱变化时,由于每一层中的线性变换与非线性激活映射,这些微弱变化随着网络层数的加深而被放大(类似蝴蝶效应);
另一方面,参数的变化导致每一层的输入分布会发生改变,进而上层的网络需要不停地去适应这些分布变化,使得我们的模型训练变得困难。这一现象叫做Internal Covariate Shift。
Internal Covariate Shift
一个较规范的定义:在深层网络训练的过程中,由于网络中参数变化而引起内部结点数据分布发生变化的这一过程被称作Internal Covariate Shift。
我们定义每一层的线性变换为 ,其中 代表层数;非线性变换为 ,其中 ...
最近反思
Leetcode:
最近觉得自己的方法不对,只是追求做题的数量,没有保证速度和质量,像之前刷1000题的时候一样,对题目的理解不够深入,停留在很浅层的层面上。
可能还是需要多反思多总结,单纯计算量是无意义的。
主要是今天发现之前做过的一道题,虽说方法很巧妙,但居然完全忘记了,只是对题目有一点印象而已,结果还是重新写了一遍,跟最优解的思路完全不一样。
大无语事件,被打击到了,突然就觉得自己之前刷题像是没走心似的走了过场,特别是对于那些似懂非懂的算法题。
算法:
去年一直在质疑自己继续读计算机是不是正确的选择,为自己找借口,嫁祸给所谓的兴趣。后来受到启发,了解了心理学的就业和所学内容,b站有很多来自北师大的心理学生的劝退视频,都说毕业了就去社区服务或者是当心理咨询师,哎也不行,太穷了。虽然并不在乎钱,但是有钱确实可以任性一点。
找实习是为了体验一下工作后的氛围以及自己的变化,不想继续呆在学校的温室内。
光看理论的话,算法知识很容易遗忘,任何知识点都一样,还是得用起来,探索一些有趣的例子,或者是实现一下跑跑看,记得牢理解深。
小车不管倒退只管推,一条路走到黑,干就完事了。
情感:
我觉得自己 ...
图像分割中的Mask、One-hot、Label代码详解
图像分割是计算机视觉中除了分类和检测外的另一项基本任务,它意味着要将图片根据内容分割成不同的块。相比图像分类和检测,分割是一项更精细的工作,因为需要对每个像素点分类。
如下图的街景分割,由于对每个像素点都分类,物体的轮廓是精准勾勒的,而不是像检测那样给出边界框。
图像分割可以分为以下三个子领域:语义分割(Semantic Segmentation)、实例分割(Instance Segmentation)、全景分割(Panoptic Segmentation)。
由对比图可发现,语义分割是从像素层次来识别图像,为图像中的每个像素制定类别标记;实例分割相对更具有挑战性,不仅需要正确检测图像中的目标,同时还要精确的分割每个实例;全景分割综合了两个任务,要求图像中的每个像素点都必须被分配给一个语义标签和一个实例id。
在进行网络训练时,时常需要对语义标签图或是实例分割图进行预处理。如对于一张彩色的标签图,通过颜色映射表得到每种颜色所代表的类别,再将其转换成相应的掩膜或Onehot编码完成训练。
这里以语义分割任务为例,介绍标签的不同表达形式。
语义标签图
语义分割数据集中包括原图和语义标 ...