- 博客(31)
- 收藏
- 关注
原创 利用anaconda安装pytorch0.4和1.2双环境
首先已经安装好了pytorch0.4,环境是python3.6、anaconda3,现在在0.4的基础上再安装一个pytorch1.2的环境一、下载pytorch1.2相关包https://download.pytorch.org/whl/torch_stable.html这里可以下载对应版本的pytorch和torchvision包,注意是.whl文件,要用pip安装二、创建虚拟环境# conda create -n env_name python=X.Xconda create -n pyt
2020-06-13 23:38:38
1396
原创 组合数学题型总结
第一章第二章容斥原理A,B,C,D 4 位学生选课,共有 a,b,c,d,e 5 门课可选。由于基础不同,A 不可以选 a和 c,B 不可以选 b,C 不可以选 c、d 和 e,D 可以选任何课。问:(1)如果每人选一门,有多少种选法?(2)每人选两门,有多少种选法?教师授课问题求S={X1⋅a,X2⋅b,X3⋅c,⋯ }S=\{X_1\cdot a,X_2\cdot b,X...
2020-01-04 21:33:41
778
原创 论文复现《Effective Adversarial Regularization for Neural Machine Translation》
复现论文《Effective Adversarial Regularization for Neural Machine Translation》,遇到的一些pytorch的技巧(坑),总结一下。原文是基于另一个库Chainer实现的,我在fairseq框架上加以复现,基于pytorch >= 1.0论文中主要用公式来介绍主要思想,主要集中在word embedding和loss部分的修...
2019-11-19 20:29:13
1037
原创 决策树——分类树
决策树——分类树一、 信息熵和信息增益信息熵熵,在物理中表示一个体系混乱程度的度量,熵越高,混乱程度越高。信息熵( )是一个系统有序化程度的度量。越小,则某个样本集合中的元素纯度越高。假如一个随机变量X取值为,每一种取到的概率分别为,那么X的信息熵的公式:,单位:bit信息增益信息增益,是数据集按照其中的某个特征所进行划分之后,数据集的纯度提升的度量。一般而言,信息增益越大,意味着使...
2019-10-07 21:49:37
517
原创 NLP名词解释(持续更新)
token即句子中独立的单词,也称标记(token),包括标点在数据中保存为某单词 在词典 中的位置 ,类型为 tokenization标记化(tokenization)把句子分解成独立的token的过程。假设有两句话:s1:My name is Anny.s2:I am a student.那么把这两句话放在一起,经过token以后(假设参照某一个dictionary),可...
2019-09-27 16:25:33
2068
原创 fairseq transformer训练中的一些问题
fairseq transformer训练中的一些问题这两天看fairseq transformer的代码,并在服务器用transformer跑实验。今天遇到一些问题,和师兄进行了一些交流,记录下来。另一篇梳理nlp中的一些英文名词的还在写,整理好再发布。transformer中的数据的流向和形式的变化?在训练前,数据基本都是以 的形式传入,即 句子数*单词数 的一个矩阵。假设现...
2019-09-21 22:33:25
4781
9
原创 C共用体选择题
遇到一个问题,看到一个解答很棒,分享出来以下程序运行后的输出结果是#include<stdio.h>union pwint i;char ch[2];a;main( )a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);A.13B.14C.208D.209解答:原网页https://zhidao.baidu.com/question/1821...
2019-03-09 17:12:43
463
原创 Netty 实现一对一客户端聊天(由服务器转发)
学习Netty有一个多星期,参考《Netty实战》敲了Echo C/S 代码,也学习了channelHandler等组件。不满足客户端服务器一对一聊天,所以寻思着自己实现一个客户端和客户端一对一聊天,消息由服务器转发。 如果有代码写的不合适的地方,还请评论指正。 《Netty实战》电子书下载地址主要思路服务器端服务器端维护一个ChannelHandlerContext类型的数...
2018-05-21 15:49:37
8361
2
原创 线程同步操作
线程同步,即在一个线程完成前,需要等待一个特定的事情发生,或者等待一个条件达成。在条件变量(condition_variable)和期望(future)中可实现线程同步的操作。condition_variable在condition_variable头文件中,包含了可以用于等待(wait)和通知(notify)系列函数。 等待函数 解释 wait() ...
2018-04-09 08:58:57
454
原创 C++11:右值引用
左值、右值,和右值引用左值(lvalue)右值(rvalue)是编译器和程序中常出现的词汇,一个最为典型的判别左值右值的方法是,在赋值表达式中,出现在等号左边的就是左值,出现在等号右边的就是右值。例如 a = b + c; 在这个表达式中,a就是左值,b+c就是右值。 不过 C++中还有另一种被广泛认同的说法:可以取地址的、有名字的就是左值;不能取地址的、没有名字的就是右值。 上述表达...
2018-04-08 14:15:47
247
1
原创 线程的创建
线程管理启动线程线程在thread对象创建时开始启动,传递给线程的函数运行结束时,线程也结束。//线程thread构造函数:template<class _Fn,class... _Args>explicit thread(_Fn&& _Fx, _Args&&... _Ax){ // construct with _Fx...
2018-03-22 14:26:57
240
原创 C++ Most vexing parse
原文C++最令人烦恼的解析问题描述假如有如下示例://类Timerclass Timer{public: Timer(){ cout << "Timer()"<<endl; }}//类TimeKeeperclass TimeKeeper{public: TimeKeeper(const Timer& t) { ...
2018-03-16 08:57:04
426
转载 WSARecv & Recv 的区别
转自:WSARecv()和Recv()的区别recv()定义在winsock.h,WSARecv定义在winsock2.h文件中。recv和WSARecv:对在已连接套接字上接受接入数据来说,recv函数是最基本的方式。它的定义如下:C/C++ code?12345int recv ( SOCKET s, char FAR* buf, int len, int flags...
2018-03-14 20:55:00
5502
转载 使用socket函数的一些常见错误
原文地址:使用socket函数的一些常见错误1.socketSOCKET socket( int af, int type, int protocol );af:常为AF_INET 使用AF_ISO等其他地址族标识,而非AF_INET。 返回:-1。 错误:10047(使用了与请求的协议不兼容的地址)type,通常为SOC...
2018-03-05 15:48:24
813
原创 拓扑排序
拓扑排序拓扑排序是对有向无环图的一种排序方式,它使得如果存在一条从vi到vj的路径,那么在排序中,vj将出现在vi的后面。这在课程的先行课的安排中很有用,拓扑排序将不会破坏课程的结构要求。拓扑排序的方法一个简单的求拓扑排序的算法分为一下几步找出任意一个入度为0的顶点输出该点,并将它和它的边一起从图中删除重复步骤1,直到没有入度为0的点算法实现#include...
2018-02-08 18:19:48
316
原创 排序算法(插入排序、希尔排序、堆排序、归并排序)
插入排序插入排序由N-1次排序组成,对于i = 1到N-1趟,插入排序保证从0到i位置上的元素是已排序状态。 插入排序在第i次排序的时候,把第i个位置上的元素向左移动到[ 0 , i ]范围内的正确的位置上。算法实现/*插入排序将整个数组分为前后两部分,i(不包括i)之前的部分视为已排序部分,i及i之后的部分视为未排序部分;令temp = a[i],将a[i]暂时提取出
2018-01-30 17:34:25
338
原创 二叉堆中上滤和下滤的问题
在学习到堆排序时,对于上滤和下滤的知识掌握的不清楚,回来复习了一下。有了些感悟,记下来。上滤(percolate up) 上滤一般应用于在一个已经排序好的二叉堆中插入一个新节点。通过上滤,使堆在容纳了新节点后仍能保持原来的堆序。 上滤的主要思想: 首先在堆末新建一个空间,称为空穴(hole),然后比较穴的值和其父节点的值。如果空穴的当前位置满足整个堆的堆序,那么就把要插入的值赋给空穴
2018-01-29 18:08:49
3998
2
原创 优先队列(二叉堆)的基本实现
什么是二叉堆对于优先队列的实现,最常用的数据结构就是二叉堆。二叉堆是一棵完全二叉树, 因此借用完全二叉树的规律我们可以自上而下,从左到右地对每一个节点进行标记。这时,二叉堆便可以用一个数组表示而不必使用树形结构。 ① A / \ |0|1|2|3|4|5|6|7|8| ② B
2018-01-25 16:27:41
318
原创 左式堆的基本操作
什么是左式堆左式堆是一种有效地支持堆的合并操作的高级数据结构。左式堆既有二叉堆的结构性质,又有堆序性质。但和二叉堆不同,左式堆同时也是一棵二叉树,而二叉堆可以简化为数组。左式堆不是理想平衡的,事实上它也是趋于不平衡的。左式堆的性质我们把任一节点X的零路径长(null path length)npl(x)定义为从X节点到一个不具有两个儿子的节点的最短路径的长度。 因此,具有0个或1
2018-01-25 15:38:21
392
原创 二叉树搜索树的懒惰删除及相关的其他例程
对于一棵二叉树,如果删除的次数不多,通常可以使用懒惰删除策略:当一个元素要被删除时,它仍留在树中,只是做一个删除的记号。但因为这个记号的存在,所以要修改插入等其他操作。代码的最后给出了删除叶子节点和输出指定范围内的节点的定义,仅供参考。#includeiostream>#includecstdlib>using namespace std;templatetypename T>c
2018-01-18 18:00:37
786
原创 二叉搜索树常规例程
二叉树的常规例程,包括插入节点、删除节点、清空二叉树、是否包含某一节点等 方便起见,二叉树节点类的三个变量没有进行封装,实际操作中应设置为templateclass BinaryTree{private: T element; BinaryTree* left; BinaryTree* right;public: BinaryTree(T e, Bi
2018-01-18 16:34:29
152
原创 AVL树的旋转和插入
包含了AVL树的单旋转和双旋转的算法,以及AVL树的递归插入和非递归插入算法。单旋转也叫“一”字形旋转,又可分为左-左型旋转和右-右型旋转;双旋转也叫“之”字形旋转,又可分为左-右型旋转和右-左型旋转。#includeiostream>#includestack>using namespace std;class AVLNode{public: int element;
2018-01-16 18:16:02
366
原创 cocos2dx基础——图层类
图层类(Layer)Layer是在游戏开发中常用的类,通常将其添加到场景中,然后再把精灵添加到Layer上。LayerColor颜色图层类LayerColor是Layer的子类,除了Layer的基本功能,还可以为图层添加颜色,可以设置不透明度。 bool HelloWorld::init(){ if (!Layer::init()){ return false; }
2017-09-26 17:13:45
804
原创 Java——抽象类
抽象类抽象类的作用类似C++的模版,用来表征对某一个方面的问题分析抽象出的一个概念模型。其目的是让设计者依据抽象类的格式来修改并创造出新的类。但是抽象类不能直接创建对象,只能通过抽象类派生出子类,通过子类创建对象。抽象类的定义定义一个Shape抽象类,包含计算周长和面积的方法//定义shape抽象类public abstract Shape{ public abstract double
2017-09-18 19:00:03
601
原创 cocos2dx基础——场景类
场景类Scene是场景类,相当于一个巨大的容器,将包含在内的Layer和Sprite输出到屏幕上。cocos2d-x同时只能渲染一个Scene,因此Scene是渲染的根节点。在构建游戏时,一般都是在一个Scene中添加一个或多个Layer,然后在一个Layer中又添加多个Sprite等。这样就构建起一个渲染树,cocos2d-x通过遍历这棵树上的节点来将图像显示在屏幕上。Director控制场景的方
2017-09-14 20:01:20
487
原创 C++函数新特性——函数模版
函数模版函数模版是通用的函数描述,使用泛型来定义函数,其中的泛型可用具体的类型(如int或double)来代替。通过将类型作为参数传递给模版,可使编译器生成该类型的函数。下面演示一个最简单的函数模版://交换两数据的值template<typename T>void Swap(T &a, T &b){ T temp; temp = a; a = b; b = te
2017-09-13 15:41:28
258
原创 cocos2dx基础——导演类
导演类(Director)导演类在游戏引擎中的地位很高,用来创建并且控制着主屏幕的显示,同时控制场景的显示时间和显示方式,游戏开始、结束、暂停都会调用Dirctor类的方法。调用方式Director* director = Director::getInstance();director->函数名;常用函数
2017-09-06 20:37:06
599
转载 C++——const关键字和指针
给定声明 const char * const * pp; 下列操作或说明正确的是?A.pp++B.(*pp)++C.(**pp) = \\c\\;D.以上都不对const 限定一个对象为只读属性。 先从一级指针说起吧: (1)const char p 限定变量p为只读。这样如p=2这样的赋值操作就是错误的。 (2)const char *p p为一个指向char类型的指针
2017-09-06 14:13:21
213
原创 C++函数新特性——引用类型
引用变量引用是已定义的变量的别名,主要用途是用作函数的形参。通过将引用变量作为形参可以直接使用原始数据而不是新建一个副本。必须在声明引用变量的时候进行初始化int rat;int & rodent;rodent = rat; //不可以这样做!而应该这样int rat;int & rodent = rat; //正确!交换两个变量的值比较下面交换变量值的方法:include<iostream>
2017-09-06 13:59:42
545
原创 C++函数新特性——内联函数
内联函数内联函数的编译代码与其他程序代码“内联”起来,无需跳到其他代码块来执行代码。因此内联函数的执行速度更快,但会占用更多内存。使用方法① 在函数声明前加上关键字inline; ② 在函数定义前加上关键字inline; 通常将整个定义(函数头和函数体)放在一起。比如:#include<iostream>inline double square(double x){return x*x;}int
2017-09-04 10:50:24
316
原创 cocos2dx基础——坐标系
cocos2dx基础——坐标系常见坐标系分为屏幕坐标系、OpenGL坐标系、世界坐标系屏幕坐标系和cocos2d坐标系 标准屏幕坐标系使用和OpenGL不同的坐标系,而Cocos2d则使用和OpenGL相同的坐标系。 iOS, Android, Windows Phone等在开发应用时使用的是标准屏幕坐标系,原点为屏幕左上角,x向右,y向下。 ——cocos官网世界坐
2017-07-30 15:23:35
419
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人