自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lusing的专栏

Android爱好者,C++爱好者,汇编爱好者,数学爱好者

  • 博客(286)
  • 收藏
  • 关注

原创 代码补全漫谈(1) - 从TabNine说起

代码补全漫谈(1) - 从TabNine说起前不久,基于GPT-2模型的TabNine横空出世,在程序员界再次引起轰动。此前,国产的aixcoder,还有获得github ceo天使投资的Python编程利器kite等,已经收获了一轮又一轮的眼球。人工智能代替人编写代码的忧虑不时在知乎等网站上出现。从程序语言处理的近亲 - 自然语言处理NLP的发展来看,这样的乐观不是没有道理的。从进入深度学习...

2019-09-12 21:45:49 5115 4

原创 前端智能化漫谈 (4) - pix2code结果编辑距离分析

前端智能化漫谈 (4) - pix2code结果编辑距离分析Levenshtein距离分析从实用的角度,我们先采用莱文斯坦距离,也就是编辑距离来分析一下pix2code的结果。因为Levenshtein距离是从DSL角度来看,需要人工修改时的最小编辑次数,所以从这个角度来分析是有其意义的。我们分别用greedy和beam 3两种方法对于datasets/android/eval_set下面的...

2019-08-16 19:43:02 661 1

原创 前端智能化漫谈 (3) - pix2code推理部分解析

前端智能化漫谈 (3) - pix2code推理部分解析上一节我们将pix2code的流程梳理了一遍,相信大家已经都可以跑起来了。在谈pix2code的算法改进之前,关于训练和推理过程还有若干细节我们还需要进一步讨论一下。onehot编码上次我们讲到create_binary_representation,就是将单词转换成one hot编码。 def create_binary_r...

2019-08-10 16:08:51 776

原创 前端智能化漫谈 (2) - pix2code实战篇

前端智能化漫谈 (2) - pix2code实战篇将pix2code跑起来先来干货介绍将pix2code跑起来的步骤:1.下载pix2code源代码git clone https://github.com/tonybeltramelli/pix2code网速慢的话需要等一等,.git就有700兆左右。图像数据也有450兆左右。2.解压数据cd datasetszip -F pix...

2019-07-26 18:11:53 2915 5

原创 前端智能化漫谈 (1) - pix2code

前端智能化漫谈 (1) - pix2code自从有了GUI图形界面,就诞生了跟图形界面打交道的开发工程师,其中最大的一拨就演化成现在的前端工程师。不管是工作在前端、移动端还是桌面客户端,跟界面布局和切图等工作打交道是工作中的重要一部分。能够直接从设计稿生成代码,不仅是前端工程师的梦想,也是很多设计师同学的期望。2017年,一篇名为《pix2code: Generating Code from ...

2019-07-25 17:31:49 1492 1

原创 vscode插件快餐教程(8) - LSP文本同步

vscode插件快餐教程(8) - LSP文本同步这一节开始我们介绍下通过LSP进行文本同步的方法。文件打开我们先从简单的做起,先监听文件的打开。我们看一下LSP协议中对此部分的支持,参数是DidChangeTextDocumentParams结构。微软的SDK在LSP的基础上是做了封装的,我们看下封装后的接口:当前,TextDocument提供了4个属性:uri: 文件的UR...

2019-06-04 20:05:30 1270

原创 vscode插件快餐教程(7) - 从头开始写一个完整的lsp工程

vscode插件快餐教程(7) - 从头开始写一个完整的lsp工程有了一定的基础知识之后,我们就可以开始搭建一个client和server模式的lsp的插件了。server目录首先我们来写server端的代码。package.json首先我们来写package.json. 因为微软的sdk已经帮我们封装好了大部分细节,其实我们只要引用vscode-languageserver的模块就可以...

2019-06-03 17:27:27 4880

原创 vscode插件快餐教程(6) - LSP协议的初始化参数

vscode插件快餐教程(6) - LSP协议的初始化参数学习了lsp的代码补全之后,我们可以尝试搭建一套可以运行的lsp的系统。在此之前,我们再将一些细节夯实一下。我们在第4节曾经介绍过LSP的初始化的握手过程。我们可以在connection的onInitialize函数中来接收客户端的初始化参数,比如客户端的能力。connection.onInitialize((params: In...

2019-06-03 14:17:37 2080

原创 使用log4js打印日志

使用log4js打印日志不管在做任何开发的时候,打印日志都是很重要的功能。在Node.js中,最普通的打日志的方式就是console.log。如果要写到文件中,或者是要跟高级的log系统对接,我们就需要专门的模块,比如log4js。标准输出我们想要实现与console.log同样的功能,可以简单使用log4js.getLogger。代码如下:import {configure, ge...

2019-05-31 20:08:58 2641

原创 vscode插件快餐教程(5) - 代码补全

vscode插件快餐教程(5) - 代码补全上节我们介绍了lsp的基本框架和协议的三次握手。下面我们先学习一个最简单的功能协议:给vscode发送一条通知。LSP窗口消息在LSP协议中,跟窗口相关的协议有三条:window/ShowMessage Notificationwindow/showMessage Requestwindow/logMessage Notification...

2019-05-26 18:25:27 6435

原创 vscode插件快餐教程(4) - 语言服务器协议lsp

vscode插件快餐教程(4) - 语言服务器协议lsp语言服务器协议lsp是vscode为了解决语言扩展中的痛点来实现的一套协议。如下图所示:总体说来,在有lsp之前,存在三个主要问题:一是语言相关的扩展都是用该语言母语写的,不容易集成到插件中去。毕竟现在大量的语言都带有运行时。二是语言扫描相关的工作都比较占用CPU资源,运行在vscode内部不如放在独立进程,甚至远程服务器上更好。...

2019-05-20 13:38:16 5444 1

原创 vscode插件快餐教程(3) - Diagnostic

vscode插件快餐教程(3) - Diagnostic上一节我们介绍了语言扩展的大致情况,这一节我们开始深入一些细节。诊断信息语言扩展中一个重要的功能是代码扫描的诊断信息。这个诊断信息是以vscode.Diagnostic为载体呈现的。我们来看一下vscode.Diagnostic类的成员和与相关类的关系:以小到大,这些类为:Position: 定位到一行上的一个字符的坐标Ra...

2019-05-16 16:16:20 2810 5

原创 《Thinking in Bets》读书分享(2) 概率思维与从经验中学习

读书分享系列之一 - 《Thinking in Bets》(2) 概率思维与从经验中学习以赌一把的心态,用概率性思维看待问题上一次我们分享了人的大脑本质上是不喜欢不确定性的,人是轻信的,信念又是很难改变的。那么我们如何去解决这个问题呢?作者建议我们训练自己用『赌一把』的视角来观察世界。We can train ourselves to view the world through the ...

2019-04-23 21:23:51 1209

原创 《Thinking in Bets》读书分享(1) - 如何在信息不完全情况下做出更好的决策

Thinking in Bets读书分享..

2019-04-23 15:37:26 2118

原创 vscode插件快餐教程(2) - 编程语言扩展

vscode插件快餐教程(2) - 编程语言扩展上一节我们学习了如何写一个控制光标的vscode命令插件。对于一个编辑器来说,编辑命令是非常重要的部分。不过vscode更主要的作用不是写文本,而是写代码。所以我们第二讲就直入辅助编写代码的部分。可以做哪些编程语言相关的扩展我们先看一张图,看看vscode支持我们做哪些编程语言的扩展。我们以Bill Gates起家的BASIC语言的一个小...

2019-04-16 20:57:06 1712

原创 vscode插件快餐教程(1) - 从写命令开始

vscode插件快餐教程(1) - 从写命令开始大致从2017年开始,vscode就越来越流行。vscode能够流行起来,除了功能强大、微软不断升级给力之外,优秀的插件机制也是非常重要的一环。vscode中相当多的功能也是通过自身的插件机制实现的。比起使用coffeescript为主要开发语言的atom IDE,vscode使用越来越有王者气质的typescript做为主要的开发语言,这也为v...

2019-04-11 20:32:00 2172

原创 Android源代码下载与编译 - 2019

Android源代码下载与编译 - 2019 (基于Ubuntu 18.10,适用于国内环境)下载repo工具如果没有下载repo脚本工具,请到清华mirror下载curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repochmod +x repo然后设置更新源:export REPO_URL='https://mir...

2019-03-27 10:55:31 993

原创 使用uwolfer gerrit-rest-java-client获取Gerrit信息

使用uwolfer gerrit-rest-java-client获取Gerrit信息使用Gerrit来做代码管理工具的话,难免要调用Gerrit的API。Gerrit rest api我们来看个例子,体会下gerrit rest api的交互过程:请求如下, changes是API,q字符串想必gerrit的用户是熟悉的,n是限定个数:GET /changes/?q=status:op...

2019-02-11 21:08:44 1651

原创 全民学后端快餐教程(3) - 使用MyBatis访问数据库

全民学后端快餐教程(3) - 使用MyBatis访问数据库上节我们学习了JdbcTemplate来访问数据库,比起使用原始的JDBC来,还是方便很多的。至少不用去处理大量的Exception。但是我们还是可以通过一些框架,使工作量变得更少一些。这方面的主流选择是MyBatis.MyBatis简介MyBatis是由iBatis发展而来的。iBatis最早是由Clinton Begin于200...

2019-02-03 14:53:58 211

原创 全民学后端快餐教程(2) - 连接数据库

全民学后端快餐教程(2) - 连接数据库上一节我们介绍了如何像写一个普通Java程序一样去写Web应用,现在我们已经可以通过@Controller注解来获取路由,并且返回字符串给浏览器显示。跟客户端打通了之后,下面最重要的任务就是能够访问数据库。我们就以MySQL数据库被Oracle收购后fork出来的Mariadb为例,说明连接数据库的方法。安装配置Mariadb看了下阿里云ECS最新的...

2019-02-01 20:05:14 262

原创 全民学后端快餐教程(1) - 只不过是写个Java程序

全民学后端快餐教程(1) - 只不过是写个Java程序服务端程序本质上也只是个Java程序,它接收客户端的输入,然后将计算处理后的返回值返回给客户端。下面我们就以这个思路开始Java后端之旅吧。引用Spring Boot库处理HTTP请求之类的事情,我们需要库的帮助。所以第一步我们就把Spring Boot引入进来。不需要任何工具,我们使用maven来管理库依赖,这样我们只要写一个pom....

2019-01-31 17:37:24 317

原创 Tensorflow快餐教程(13) - 程序员学深度学习快速入门五步法

程序员学深度学习快速入门五步法作为一个程序员,我们可以像学习编程一样学习深度学习模型开发。我们以Keras为例来说明。我们可以用5步 + 4种基本元素 + 9种基本层结构,这5-4-9模型来总结。5步法: 1. 构造网络模型 2. 编译模型 3. 训练模型 4. 评估模型 5. 使用模型进行预测4种基本元素: 1. 网络结构:由10种基本层结构和其他层结构组成 2. ...

2018-06-04 21:19:57 13163 2

原创 Tensorflow快餐教程(12) - 用机器写莎士比亚的戏剧

高层框架:TFLearn和Keras上一节我们学习了Tensorflow的高层API封装,可以通过简单的几步就生成一个DNN分类器来解决MNIST手写识别问题。尽管Tensorflow也在不断推进Estimator API。但是,这并不是工具的全部。在Tensorflow官方的API方外,我们还有强大的工具,比如TFLearn和Keras。这节我们就做一个武器库的展示,看看专门为Ten...

2018-05-29 20:59:14 2612

原创 Tensorflow快餐教程(11) - 不懂机器学习就只调API行不行?

高层封装API有同学问,我们学习Tensorflow就是想学习一套可以用的套,像编程一样调用就行了,不想学习机器学习的细节,有没有这样的方式?针对于已经有成熟解决方案的模型,why not呢? 在前面已经快速将CNN, RNN的大致概念和深度学习的简史走马观花过了一遍之后,我们就可以开始尝试使用高层封装的API。模型 - 训练 - 评估 三条语句搞定既然高层封装,我们就采用最...

2018-05-18 21:24:29 1393 1

原创 Tensorflow快餐教程(10) - 循环神经网络

循环神经网络上节介绍了在图像和语音领域里大放异彩引发革命的CNN。但是,还有一类问题是CNN所不擅长的。这类问题的特点是上下文相关序列,比如理解文字。这时需要一种带有记忆的结构,于是,深度学习中的另一法宝RNN横空出世了。大家还记得第8节中我们讲的人工神经网络的第二次复兴吗?没错,第二次复兴的标志正是1984年加州理工学院的物理学家霍普菲尔德实现了他于两年前提出的一种循环神经网络模型。这种...

2018-05-08 21:33:08 1597

原创 《梁宁产品思维30讲》学习笔记

我的《梁宁产品思维30讲》学习笔记

2018-05-07 14:06:49 6489 1

原创 Tensorflow快餐教程(9) - 卷积

卷积卷积就是滑动中提取特征的过程在数学中,卷积convolution是一种函数的定义。它是通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与g经过翻转和平移的重叠部分的面积。其定义为: h(x)=f(x)∗g(x)=∫∞−∞f(t)g(x−t)dth(x)=f(x)∗g(x)=∫−∞∞f(t)g(x−t)dth(x)=f(x)*g(x) =\int_{-\infty}^{\...

2018-05-04 18:41:06 1249

原创 Tensorflow快餐教程(8) - 深度学习简史

深度学习简史从机器学习流派说起如果要给机器学习划分流派的话,初步划分可以分为『归纳学习』和『统计学习』两大类。所谓『归纳学习』,就跟我们平时学习所用的归纳法差不多,也叫『从样例中学习』。 归纳学习又分为两大类,一类是像我们归纳知识点一样,把知识分解成一个一个的点,然后进行学习。因为最终都要表示成符号,所以也叫做『符号主义学习』;另一类则另辟蹊径,不关心知识是啥,而是模拟人脑学习的过程...

2018-05-03 16:28:11 1490

原创 Tensorflow快餐教程(7) - 梯度下降

梯度下降学习完基础知识和矩阵运算之后,我们再回头看下第一节讲的线性回归的代码:import tensorflow as tfimport numpy as nptrX = np.linspace(-1, 1, 101)trY = 2 * trX + np.random.randn(*trX.shape) * 0.33 # 创建一些线性值附近的随机值X = tf.placeh...

2018-05-03 12:10:25 1822

原创 Tensorflow快餐教程(6) - 矩阵分解

矩阵分解特征向量和特征值我们在《线性代数》课学过方阵的特征向量和特征值。定义:设A∈Fn×nA∈Fn×nA{\in}F^{n{\times}n}是n阶方阵。如果存在非零向量X∈Fn×1X∈Fn×1X{\in}F^{n{\times}1}使AX=λXAX=λXAX={\lambda}X对某个常数λ∈Fλ∈F{\lambda\in}F成立,则称λλ\lambda是A的特征值(eigenva...

2018-04-27 21:23:22 2064

原创 Tensorflow快餐教程(5) - 范数

矩阵进阶 - 范数作为快餐教程,我们尽可能多上代码,多介绍工具,少讲原理和公式。但是我也深知这样是无法讲清楚的,毕竟问题的复杂度摆在这里呢。与大家一起在Tensorflow探索一圈之后,我一定要写一个数学基础比较扎实的进一步教程。范数(norm)初识一般大学本科的《线性代数》教材中是不讲范数、广义逆这些知识的,需要学习《矩阵论》课程。但是很不幸,深度学习中会频繁用到。所以我们还是要...

2018-04-25 16:58:42 3675

原创 Tensorflow快餐教程(4) - 矩阵

矩阵矩阵的初始化矩阵因为元素更多,所以初始化函数更多了。光靠tf.linspace,tf.range之类的线性生成函数已经不够用了。可以通过先生成一个线性序列,然后再reshape成一个矩阵的方式来初始化。例:>>> g1 = tf.linspace(1.0,10.0,16)>>> g1<tf.Tensor 'LinSpac...

2018-04-24 21:38:13 1144

原创 Tensorflow快餐教程(3) - 向量

向量向量在编程语言中就是最常用的一维数组。 二维数组叫做矩阵,三维以上叫做张量。向量虽然简单,高效,且容易理解。但是与操作0维的标量数据毕竟还是不同的。比如向量经常用于表示一个序列,生成序列像标量一样一个一个手工写就不划算了。当然可以用循环来写。在向量中这样还好,如果是在矩阵或者是张量中就强烈建议不要用循环来做了。系统提供的函数一般都是经过高度优化的,而且可以使用GPU资源来进行加速。 ...

2018-04-23 19:06:27 1706

原创 Tensorflow快餐教程(2) - 标量运算

Tensorflow的Tensor意为张量。一般如果是0维的数组,就是一个数据,我们称之为标是Scalar;1维的数组,称为向量Vector;2维的数组,称为矩阵Matrics;3维及以上的数组,称为张量Tensor。 在机器学习中,用途最广泛的是向量和矩阵的运算。这也是我们学习中的第一个难关。 不过,这一节我们先打标量的基础。上节我们学过,Tensorflow的运行需要一个Session...

2018-04-17 21:05:13 4067

原创 Tensorflow快餐教程(1) - 30行代码搞定手写识别

去年买了几本讲tensorflow的书,结果今年看的时候发现有些样例代码所用的API已经过时了。看来自己维护一个保持更新的Tensorflow的教程还是有意义的。这是写这一系列的初心。 快餐教程系列希望能够尽可能降低门槛,少讲,讲透。 为了让大家在一开始就看到一个美好的场景,而不是停留在漫长的基础知识积累上,参考网上的一些教程,我们直接一开始就直接展示用tensorflow实现MNIST手写识...

2018-04-16 19:33:32 11014 11

原创 NumPy快餐教程(2) - 多维数组进阶

NumPy快餐教程(2) - 多维数组进阶上一讲我们介绍了ndarray的形状变化和生成方法,这一节我们继续讨论多维数组的使用方法。访问元素NumPy中使用[]方括号来访问元素。如果是一维数组,就用下标数字,例如a[1],如果是多维数组,就在方括号中使用元组tuple,例如a[(2,3,4)]例:In [1]: import numpy as npIn [2]: a

2018-01-04 19:33:56 685

原创 NumPy快餐教程(1) - 如何生成多维数组

NumPy快餐教程(1) - 如何生成多维数组Python现在是最热门的人工智能语言,各种工具的支持如Google的Tensorflow,都是首选支持Python的。 但是,与R语言不同,Python语言设计时,并没有考虑对于矩阵运算,统计计算等功能做专项支持。于是我们需要NumPy库来补足这一能力上的不足。 NumPy是Python的著名扩展库,相当于Python中的MATLAB。

2018-01-04 10:51:09 1527

原创 TypeScript快餐教程 (1) - 初识

TypeScript是Microsoft大神,前Borland大神Anders领导开发的支持类型的Java Script

2017-11-02 21:01:02 1016

原创 Clojure快餐教程(1) - 运行在JVM上的Lisp方言

Java作为目前为止被使用最广泛的使用虚拟机的编程语言,带动了JVM上语言族的繁荣。 有根红苗正的为JVM设计的动态语言Groovy,目前最主要被用于Gradle编译环境中;也有Jython, JRuby等动态语言在JVM上的实现,也有scala这样强大的混合语言。 在这之中,clojure是比较特殊的一种,它是Lisp语言在JVM上的Lisp方言

2017-10-31 20:35:03 953

原创 Python API快餐教程(1) - 字符串查找API

字符串处理相关API字符串是7种序列类型中的一种。 除了序列的操作函数,比如len()来求字符串长度之外,Python还为字符串提供丰富到可以写个编辑器的API.查找类API首先,下面的查找API都是为了查找位置,或者查一共有几次这样的操作。 如果只是想判断一个字符串是不是另一个字符串的子串的话,使用序列的in运算符就可以了。

2017-08-02 20:04:14 1165

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除