python3 嵌套函数调用全局变量
例子示例112345678910111213# 嵌套函数声明了自己的局部变量,所以不会找到外部函数的局部变量,对外面的局部变量也不会产生影响def outFunc(): a = 1 def inFunc(): a = 2 print('from inFunc: a =',a) inFunc() print('from outFunc: a =',a)outFunc()# 输出:from inFunc: a = 2from outFunc: a = 1
示例2123456789101112# 嵌套函数找不到局部变量时找全局变量,这里指外部函数的局部变量def outFunc(): a = 1 def inFunc(): print('from inFunc: a =',a) inFunc() print('from outFunc: a =',a)outFunc()# 输出:from inFunc: a = 1from ...
day3-树
1. 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先1234567891011121314151617# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': pointer = root while pointer: if p.val<pointer.val and q.val<pointer.val: pointer = ...
python3 理清sort、sorted、key、lambda、cmp_to_key
1. sort和sortedsort和sorted区别:
sort是应用在list上的,而sorted可应用于任何可迭代的对象上;
list的sort方法是在原始list上操作,而sorted返回新的list;
sort使用ls.sort(),而sorted使用sorted(ls);
123456789101112131415161718# 例子dic = {'a': 31, 'b': 21, 'c': 3, '33': 56, 'd': 0}print(sorted(dic.items(), key=lambda a:a[0]))L = list(dic.items())print('1: ',L)print(sorted(L, key=lambda a:a[0]))print('2: ',L)L.sort(key=lambda a:a[0])print('3: ',L)输出:[(' ...
Python3 * 和 ** 运算符
原文链接
1. 算数运算* 代表乘法** 代表乘方1234>>> 2 * 510>>> 2 ** 532
2. 函数形参*args 和 **kwargs 主要用于函数定义。你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成 *args 和 **kwargs。 *(星号) 才是必须的. 你也可以写成 *ar 和 **k 。而写成 *args 和**kwargs 只是一个通俗的命名约定。python函数传递参数的方式有两种:
位置参数(positional argument)
关键词参数(keyword argument)
*args 与 **kwargs 的区别,两者都是 python 中的可变参数:*args 表示任何多个无名参数,它本质是一个 tuple**kwargs 表示关键字参数,它本质上是一个 dict如果同时使用 *args 和 **kwargs 时,必须 *args 参数列要在 **kwargs 之前。1234567> ...
day2-数组与字符串
1. 剑指 Offer 04. 二维数组中的查找重点思想:从左下角或右上角开始,这样就能将二维数组转换成二叉树12345678910class Solution: def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool: left,right = len(matrix)-1,0 while(left>-1 and right<len(matrix[0])): if target>matrix[left][right]: right+=1 elif target<matrix[left][right]: left-=1 else:return True return False
2. 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面12345678910111213141516clas ...
day1-链表
1. 剑指 Offer 18. 删除链表的节点123456789101112class Solution: def deleteNode(self, head: ListNode, val: int) -> ListNode: if not head:return head if head.val==val:return head.next pre,cur = head,head.next while(cur): if cur.val != val: pre,cur = cur,cur.next else: pre.next = cur.next break return head
2. 剑指 Offer 22. 链表中倒数第k个节点12345678910class Solution: def getKthFromlatter(self, head: ListNode, ...
预训练语言模型
自回归VS自编码(Autoregressive LM VS Autoencoder LM)
自回归模型可类比于早期统计语言模型,根据上文内容预测下一个可能出现的单词,或者反过来根据下文预测前面的单词.GPT 就是典型的自回归语言模型。ELMo把LSTM的两个方向的隐节点状态拼接到一起实现双向语言模型,尽管看上去利用了上文也利用了下文,但是本质上仍然是两个自回归LM的拼接。所以ELMo仍然是自回归语言模型。可参考这篇文章。
自编码模型通常也被称为降噪自编码模型(Denosing Autoencoder),自编码简单来说就是压缩后再解压的过程,而压缩的过程提取了源数据的主要特征。参考这篇文章。降噪自编码就是在此基础上给源数据上添加一些噪音,从而达到模拟真实数据,增模型强鲁棒性的效果。以Bert为例,Bert通过在输入X中随机Mask掉一部分单词,然后预训练过程的主要任务之一是根据上下文单词来预测这些被Mask掉的单词,那些被Mask掉的单词就是在输入侧加入的所谓噪音。
XLNet模型尝试融合自回归LM和自编码LM两者的优点。就是说如果站在自回归LM的角度,如何引入和双向语言模型等价的效 ...
神经网络基础知识点回忆
1. RNN简单RNN写代码时只需定义输入层(X)维度,隐藏层(S)维度,输出层(O)维度,循环次数即可。RNN处理图像时可把每行看做一个词,一张图即一个句子
对于多版本cuda切换的一些认识
1. cuda安装路径一般cuda都安装在/usr/local下的cuda文件夹下,进入该路径一般能看到cuda和若干cuda-版本号,其实cuda文件夹是后面的某个文件夹软连接而已
2. 安装多cuda环境安装不同版本的cuda和安装一个cuda的过程类似,重复几次而已,到 CUDA Toolkit Download 下载所需版本,安装位置可以选择不放在默认路径,可以自定义安装路径,比如放在用户目录下,也不用非得创建一个名为cuda的软连接,直接用cuda-版本号就行,比如cuda-10.0
3. cuda版本切换3.1 所有用户整体切换直接通过更换软连接进行更换,将原来的/usr/local/cuda删掉,软连接到新的版本ln -s 源文件 目标文件
3.2 只对某个用户切换在该用户的环境变量中添加新版本的bin路径、lib路径和动态库路径,在~/.bashrc中改:123export PATH=$PATH:/home/Bio/liuzhiqiang/mycuda/cuda-10.0/bin/export PATH=$PATH:/home/Bio/liuzhiqiang/mycud ...
教程:一文读懂如何用LSA、PSLA、LDA和lda2vec进行主题建模
转载于:https://www.sohu.com/a/234584362_129720英文原文:https://medium.com/nanonets/topic-modeling-with-lsa-psla-lda-and-lda2vec-555ff65b0b05
本文是一篇关于主题建模及其相关技术的综述。文中介绍了四种最流行的技术,用于探讨主题建模,它们分别是:LSA、pLSA、LDA,以及最新的、基于深度学习的 lda2vec。
1. 概述所有主题模型都基于相同的基本假设:
每个文档包含多个主题;
每个主题包含多个单词。
换句话说,主题模型围绕着以下观点构建:实际上,文档的语义由一些我们所忽视的隐变量或「潜」变量管理。因此,主题建模的目标就是揭示这些潜在变量——也就是主题,正是它们塑造了我们文档和语料库的含义。这篇博文将继续深入不同种类的主题模型,试图建立起读者对不同主题模型如何揭示这些潜在主题的认知。
2. LSA潜在语义分析(LSA)是主题建模的基础技术之一。其核心思想是把我们所拥有的文档-术语矩阵分解成相互独立的文档-主题矩阵和主题-术语矩阵。
第一步是生成文档-术语矩 ...