0%

古罗马是古希腊的继承者,从爱琴海文明转移到了地中海文明。

建筑三原则:坚固、实用、美观

古希腊柱式


古希腊更多是前两种柱式:
经济原因:成本较低
思想原因:中庸克制

帕台农神庙:黄金比例

梁柱结构,三角眉式、柱廊

斯多葛学派(廊下学派):

哥特式建筑

哥特式建筑:尖锐高耸

肋:复杂的肋
窗:大彩玻璃窗
拱:哥特尖拱
壁:飞扶壁
墙:薄墙

中世纪是宗教的时代,希望教堂就是人间的天堂,所以教堂都是封闭的

以前的教堂:低、胖(墙厚)、暗(窗户小)
哥特式教堂:高、瘦、亮

以线为主体,视觉引导,显得清瘦、高

vi的使用

命令模式:
输入i进入编辑模式,输入:进入底线命令模式,输入x类似于[del]删除光标处的字符
退出的话,如果没有改动需要:q!退出,改动了:wq退出。
输入模式:
G:移动到文件的最后一行
gg:移动到文件的第一行,相当于1G
n<\Enter>: 光标向下移动n行

/word:向光标之下

常用的复制粘贴:
复制光标这一行:yy

重复上一个动作:.(小数点)
撤销上一个动作:u

ESC切换到命令模式

底线命令模式:
q退出程序
w保存文件
按esc进入命令模式

Swap file “.test927.txt.swp” already exists!
使用vim编辑,先复制一份临时文件并映射到内存来编辑,编辑的是临时文件,当执行了:w是保存临时文件到原文件,执行:q后删除临时文件。

每次启动时会检索是否有临时文件。
使用ll -a会显示全部文件,包括一些隐藏文件,以及文件的详细信息。例如.test.txt.swp
rm-f删除文件

服务器报错

CUDA Version: 11.2
pip install torch==1.5.0

RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED
运行报错,原因是cuda和pytorch版本不匹配,服务器上的cuda版本是11.2,而pytorch版本是1.5.0,
通过网站https://pytorch.org/get-started/previous-versions/
可以看到cuda和pytorch对应的版本,对应cuda 9.2/10.1/10.2三个。

但是import torch, torch.version.cuda,输入版本为10.2

Traceback (most recent call last):
File “main.py”, line 365, in <\module>
train_gat(args)
File “main.py”, line 194, in train_gat
torch.LongTensor(current_batch_2hop_indices)).cuda()
TypeError: expected torch.LongTensor (got torch.FloatTensor)

修改了对应文件的代码
current_batch_2hop_indices = torch.tensor
current_batch_2hop_indices = torch.LongTensor([])
tensor默认是float,改成Long应该可以

1
2
3
4
5
6
7
8
Socket error Event: 32 Error: 10053.
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(3090) at 01:30:17.

Type help to learn how to use Xshell prompt.

cuda:Compute Unified Device Architecture统一计算架构,是nvidia推出的编程环境,包括

位置编码

由于transformer摒弃RNN结构,需要标记各个字之间的时序和位置关系。

首先的想法自然是取[0,1]之间的数分配给每个字,这样的问题是句子长度不同,在短句子中接近的两个字差值为0.1,长句子中相隔很远的两个字差值也是0.1.相同的差值,在不同的句子中含义不同,是不合适的。

另一个想法是线性地给每个时间步分配一个数字,第一个单词为1,第二个为2,这样的问题是1.比字嵌入的值大,会抢了字嵌入的风头。2.最后一个字比第一个字大太多,和字嵌入合并后会出现特征在数值上的倾斜。

理想的情况:

  • 为每个字输入唯一的编码,不是一个数字,而是包含句子特定信息的d维向量
  • 不同长度的句子之间,任何两个字的差值保持一致
  • 值应该是有界的

9月26日,跟着学校一起去参观了中国共产党历史展览馆,一点钟展览馆开门。我们一行是12.45左右到的,但是已经排起了很长的队伍。排的队分成背包的和没背包的两个队伍,没背包的队伍安检速度会快一点。很快一点钟了,安检的速度很快,虽然排队人很多,但是很快就进去了。
里面有公益讲解,内容也是涵盖的很广很全面,从1840年开始,一直到最近的脱贫攻坚。这个展馆最大的特点是,里面的东西我们多多少少地都了解过,都学习过。所以看到一些场面时会有所感触,这或许才是展览馆的意义。

我们对于一些历史背景或者说艺术流派有了一定的了解,但是没有那种亲眼见证的体会,这时展览馆才能发挥出它最大的价值。我回想起前几天去的故宫,由于每个宫殿都不让进去,从外面看每个宫殿的造型也是大同小异,很快就失去了游玩的兴趣,只看看这个殿是皇上休息的,那个宫是皇上睡觉的,根本体会不到其中的意义。反而是军机处让我留有印象。因为我很喜欢看《雍正王朝》,而中学历史书对雍正的介绍少之又少,夹在了最有名的康乾盛世中间,历史的考点只有一个,他创办了军机处,皇权达到了顶峰。而在雍正王朝中的军机处特别小,让人很难想象,最高级别的几个人讨论最重要的时期,和珅也是军机大臣,却挤在这么小的一间屋子。

又想到之前去卢浮宫参观,像什么断臂的维纳斯,蒙娜丽莎,一堆人围着,连走近观看都做不到。根本无法理解其中好在哪里。只有课本上的《自由领导人民》是我见过的,而且旁边没啥人,还能看一看,也没看出什么东西来。但看完了西方艺术史,了解了德拉克洛瓦的重要地位,了解了浪漫主义的前因后果,才能理解其的重要意义。

遇到的问题

python对GitHub的爬虫特别不稳定,因为自己本地访问GitHub就不稳定,爬虫自然也难以稳定。想到了挂梯子,但是挂梯子后会报错:ValueError: check_hostname requires server_hostname

解决方法:要么取消梯子,要么可以降低requests库版本到2.7.0。
用conda命令行,python -m pip install —upgrade requests==2.7.0,但是pip之前还是得取消梯子。
成功解决这个问题。

将表格中的元素变成链接

1
2
3
4
<el-table-column
prop="url"
label="Url">
</el-table-column>

上面是原来的表格形式,改成如下格式。

1
2
3
4
5
6
7
<el-table-column
prop="url"
label="Url">
<template slot-scope="scope">
<a :href="scope.row.url" target="_blank" >{{scope.row.url}}</a>
</template>
</el-table-column>

子组件无法修改父组件传进来的值

知识图谱与预训练语言模型

Focal Loss

做机器学习分类问题,难免遇到Biased-Data-Problem, 例如

  • CV的目标检测问题: 绝大多数检测框里都是 backgroud
  • NLP的异常文本检测: 绝大多数文本都是 normal
  • 对此,以下套路可以缓解:
  • 升/降采样, 或者调整样本权重
  • 换个更鲁棒的loss函数 ,或者加正则
  • 集成模型: Bagging, RandomForest …
  • 利于外部先验知识: 预训练+微调
  • 多任务联合学习


可以看到如果label是1,p越接近1,损失就越小。

考前复习的时候,「他不会划重点,对所有知识点 “一视同仁”」。

如果教科书上有100道例题,包括: 90道加减乘除 + 10道 三角函数。CE同学就会吭哧吭哧的“平均用力”反复练习这100道例题,结果可想而知——他会精通那90道个位数加减乘除题目,然后其他题目基本靠蒙。那10道他不会的题,往往还是分值高的压轴题。

方法一:分科复习

每个【科目】的难度是不同的;你要花 30%的精力在四则运算,70%的精力在三角函数。—- 老师告诉CE同学 第一个技巧

方法二:刷题战术

当$p_t$越大,说明准确率越高,观察CE中的$p_t$,它反映了模型对这个样本的识别能力(即 “这个知识点掌握得有多好”);显然,对于$p_t$越大的样本,我们越要打压它对loss的贡献。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from keras import backend as K
def focal_loss(alpha=0.75, gamma=2.0):
""" 参考 https://blog.csdn.net/u011583927/article/details/90716942 """
def focal_loss_fixed(y_true, y_pred):
# y_true 是个一阶向量, 下式按照加号分为左右两部分
# 注意到 y_true的取值只能是 0或者1 (假设二分类问题),可以视为“掩码”
# 加号左边的 y_true*alpha 表示将 y_true中等于1的槽位置为标量 alpha
# 加号右边的 (ones-y_true)*(1-alpha) 则是将等于0的槽位置为 1-alpha
ones = K.ones_like(y_true)
alpha_t = y_true*alpha + (ones-y_true)*(1-alpha)

# 类似上面,y_true仍然视为 0/1 掩码
# 第1部分 `y_true*y_pred` 表示 将 y_true中为1的槽位置为 y_pred对应槽位的值
# 第2部分 `(ones-y_true)*(ones-y_pred)` 表示 将 y_true中为0的槽位置为 (1-y_pred)对应槽位的值
# 第3部分 K.epsilon() 避免后面 log(0) 溢出
p_t = y_true*y_pred + (ones-y_true)*(ones-y_pred) + K.epsilon()

# 就是公式的字面意思
focal_loss = -alpha_t * K.pow((ones-p_t),gamma) * K.log(p_t)
return focal_loss_fixed

model = ...
model.compile(..., loss=focal_loss(gamma=3, alpha=0.5))

代理

设计模式中的代理模式:给某个对象提供一个代理对象,并由代理对象控制原对象的引用。

理解为看房的中介。
当使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。

我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。

正向代理

 这里我再举一个例子:大家都知道,现在国内是访问不了 Google的,那么怎么才能访问 Google呢?我们又想,美国人不是能访问 Google吗(这不废话,Google就是美国的),如果我们电脑的对外公网 IP 地址能变成美国的 IP 地址,那不就可以访问 Google了。你很聪明,VPN 就是这样产生的。我们在访问 Google 时,先连上 VPN 服务器将我们的 IP 地址变成美国的 IP 地址,然后就可以顺利的访问了。

  这里的 VPN 就是做正向代理的。正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端。这里客户端是要进行一些正向代理的设置的。

反向代理

正向和反向的区别在于:正向代理代理的是客户端,反向代理代理的是服务器
所以,反向代理对客户端是无感知的,因为客户端不需要任何配置就可以访问。只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回客户端。

理解这两种代理的关键在于代理服务器所代理的对象是什么,正向代理代理的是客户端,我们需要在客户端进行一些代理的设置。而反向代理代理的是服务器,作为客户端的我们是无法感知到服务器的真实存在的。

顾顺章叛变,上海地下党暴露,中共中央的领导转移到了苏区,王明被共产国际指定为中央的主要领导人,认为应该攻击主要城市。然后博古请来了伏龙芝军事学院毕业的李德,认为山沟沟里没有马列主义。

蒋介石树立碉堡来割裂根据地,李德让红军堡垒对堡垒,引起大家的不满。因为共军的堡垒会被飞机打破。决定派项英、陈毅带领一万六千人留守,其余人进行长征。

教员在政治上趋于成熟,因为原本经常一个人反对所有人,得罪了好多人。现在决定争取中间派,在路上和洛浦、王稼祥同行,达成了共识:博古不行,没能力带领红军。

遵义会议:教员指出先纠正军事指挥的错误,不先追究责任。得到了周恩来的支持。

一开始指挥,为了能够顺利渡过长江,建议在土城附近围歼郭勋奇部,但由于情报有误,没有打过,只能一渡赤水,向西南走。


蒋介石判断红军是想逃到云南,所以想在云南围歼红军。但是却出人意料地二渡赤水,占领娄山关,回到遵义。

但此时教员的战法与大家不同。原来的方案是按照既定计划,严格执行。教员认为要保存有生力量,不能硬打。

红军在鲁班场战役损失惨重,决定经茅台镇三渡赤水。

在陈福村召开会议,因为遵义会议后,虽然解除了博古李德的指挥,但是仍有20多人参与决策。陈福村会议后,毛泽东进入领导核心。

三渡赤水后,蒋介石判断红军的目的是北上渡江,立即调集兵力于川南。

毛主席带兵原路返回,四渡赤水,直插贵阳的蒋介石。蒋介石让滇军主力迅速来救,教员看到滇军离开云南,便带红军直插昆明,打出标语“打到昆明,活捉龙云”,龙云调附近守军回到昆明。金沙江旁边的守军兵力大幅缩减,于是巧渡金沙江,摆脱了大部分的敌人追击。

会理会议:林彪不满教员用兵走了很多冤枉路,因为他不知道很多情报,但是周恩来和朱德力挺教员。巩固了毛泽东在党内的地位。
红军要飞夺泸定桥,22名突击队员爬着铁索过桥。强渡大渡河。

然后翻雪山,夹金山。

翻过雪山后与四方面军在懋功会师,总兵力达到10多万人。但是张国焘以为中央红军有30多万人,但是中央红军只有2万多人,而且 装备都不如四方面军。张国焘心里不满,公开要权。

只能继续北上过草地,右路军穿过草地,等着和左路军会合继续北上。但是左路军在张国焘进入草地后,准备退回阿坝。并要求右路军的陈昌浩也向南撤。毛泽东带着中央红军偷偷北上,徐向前和陈昌浩只能抱怨。

1936年6月张国焘被迫取消第二中央,与红二、四方面军一起北上,10月到达陕北。

经过六盘山后,