自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (23)
  • 收藏
  • 关注

原创 左神带我飞之14[编程题]数组小和

def merge(nums ,l ,r ,mids): if l== r: return 0 temp = [0] * (r - l + 1) l1 = l r1 = mids + 1 i = 0 res = 0 while l1 <= mids and r1 <= r: if nums[l1...

2019-08-25 22:55:27 167

原创 快手笔试第一题之视频推荐

def go(dir_r,k,n): l=0 r=0 res=[] temp=0 test=1 while l<k or r<k: if (len(res))%n==0: test = 1 while l<k: if dir_r[l]=='P': ...

2019-08-25 22:02:19 171

原创 左神带我飞之13[编程题]换钱的方法数

from collections import dequedef go(nums,num): rec=[1]+[0]*num for n in nums: for i in range(n,num+1): rec[i]=rec[i]+rec[i-n] retur...

2019-08-23 16:44:15 220

原创 左神带我飞之12[编程题]机器人达到指定位置方法数

动态规划+空间压缩def go(n,m,p,k): rec=[0]*(n+1) rec[p]=1 for i in range(k): last = rec[1] for j in range(n): temp=rec[j] if j==1:...

2019-08-22 22:33:04 181

原创 左神带我飞之11[编程题]求最大子矩阵的大小

单调栈这个概念挺有意思from collections import dequedef tomaxare(rec): stack=[] res=0 for i,n in enumerate(rec): while stack and rec[i]<=rec[stack[-1]]: temp=rec[sta...

2019-08-22 21:21:03 134

原创 左神带我飞之11[编程题]生成窗口最大值数组

学会 dequefrom collections import dequedef soul(nums,k): d=deque(maxlen=k) res=list() for i,n in enumerate(nums): if i<k-1: if i==0: ...

2019-08-22 19:04:49 90

原创 左神带我飞之10[编程题]用一个栈实现另一个栈的排序

冒泡思想 还是比较简单的def soul(nums): help=list() help.append(nums.pop()) while len(nums)!=0: cur=nums.pop() if cur<=help[-1]: help.append(cur) el...

2019-08-22 15:11:07 68

原创 左神带我飞之09[编程题]换钱的最少货币数

动态规划 很简单def soul(nums,a): if a<nums[0]: return -1 l=len(nums) rec=[-1]*(a+1) rec[0]=0 for i in range(1,a+1): temp1=-1 rec[i] = float("inf...

2019-08-22 10:51:51 146

原创 左神带我飞之08[编程题]]未排序数组中累加和为给定值的最长子数组长度

这个用数组检验很巧妙def soul(k,nums): l=0 sums=0 rec=0 temp=0 dir_s={0:-1} for i in range(len(nums)): sums+=nums[i] if sums not in dir_s: dir_s[...

2019-08-19 18:25:39 76

原创 左神带我飞[番外篇]python数据结构常用的优先队列和自定义排序以及数据类型典型例子总结

python自定义优先队列优先队列内部默认实现的是小根堆,具有的操作主要有:向队列中添加元素 Queue.put(obj),每添加一个元素优先队列内部就会进行调整成最小堆;从队列中获取元素 Queue.get(),每取出一个元素队列内部就会进行调整;队列判空 Queue.empty()队列大小 Queue.qsize()队列存储的元素是数字:>>&gt...

2019-08-19 09:53:11 410

原创 左神带我飞之07[编程题]用递归函数和栈逆序一个栈

通过这个题可以清楚的理解递归!import sysdef dellast(nums): re=nums.pop() if not nums: return re else: i=dellast(nums) nums.append(re) return idef revers...

2019-08-18 22:22:44 99

原创 左神带我飞之06[编程题]用两个栈实现队列,支持队列的基本操作。

用两个栈实现队列,支持队列的基本操作。最近想练练pythonimport sysclass Soul(object): def __init__(self): self.l1=[] self.l2=[] def add(self,x): self.l1.append((x)) def peek(self): ...

2019-08-18 20:55:04 127

原创 左神带我飞之01[编程题]不重复打印排序数组中相加和为给定值的所有三元组

我觉的左神这个题有问题啊,题里面说的是不降序,实现时候 改成了头两个数升序才通过,心累,一直以为是我代码的问题。。。。。#include<iostream>#include<vector>using namespace std;void towsum( int ri,vector<int> &rec,long long targe,...

2019-08-17 14:37:28 181

原创 左神带我飞之02[编程题]最长可整合子数组长度

这个题很简单,就是刚开始没理解题意,注意一下子数组和子序列;字串和子序列区别#include<iostream>#include<vector>#include<algorithm>using namespace std;int main(){ int n; cin>>n; vector<int...

2019-08-16 17:22:52 101

原创 (十六)pytorch学习笔记---内容为学习资源摘录整合の循环神经网络模块

PyTorch 中的循环神经网络模块一般的 RNN对于最简单的 RNN,我们可以使用下面两种方式去调用,分别是torch.nn.RNNCell()和torch.nn.RNN(),这两种方式的区别在于RNNCell()只能接受序列中单步的输入,且必须传入隐藏状态,而RNN()可以接受一个序列的输入,默认会传入全 0 的隐藏状态,也可以自己申明隐藏状态传入。RNN(...

2019-08-16 14:48:35 152

原创 ELMO

原始论文:Deep contextualized word representationsELMO,是Embedding from Language Model的缩写( Peters等人,2018年),通过无监督预训练多层双向LSTM模型来学习带上下文信息的(Contextualized)单词表示。双向语言模型双向语言模型( bi-LM )是ELMO的基础。模型...

2019-08-16 14:45:33 365

原创 CoVe

论文:Learned in Translation: Contextualized Word VectorsCove(麦卡恩等人,2017年),是上下文词向量(Contextual Word Vectors)的缩写,是一种由机器翻译领域中的Seq2Seq + Attention模型的Encoder学习得到的word embedding。与传统的word embedding不同,CoV...

2019-08-16 14:45:19 373

原创 (二十一)pytorch学习笔记---内容为学习资源摘录整合のLSTM 做词性预测

LSTM 做词性预测前面我们讲了词嵌入以及 n-gram 模型做单词预测,但是目前还没有用到 RNN,在最后这一次课中,我们会结合前面讲的所有预备知识,教大家如何使用 LSTM 来做词性预测。模型介绍 对于一个单词,会有这不同的词性,首先能够根据一个单词的后缀来初步判断,比如 -ly 这种后缀,很大概率是一个副词,除此之外,一个相同的单词可以表示两种不同的词性,比如 bo...

2019-08-16 14:44:32 152

原创 (二十)pytorch学习笔记---内容为学习资源摘录整合のN-Gram 模型

N-Gram 模型现在我们来讲讲词嵌入如何来训练语言模型,首先我们介绍一下 N-Gram 模型的原理和其要解决的问题。对于一句话,单词的排列顺序是非常重要的,所以我们能否由前面的几个词来预测后面的几个单词呢,比如 'I lived in France for 10 years, I can speak _' 这句话中,我们能够预测出最后一个词是 French。我们可以再简化一下这个模型...

2019-08-16 14:44:10 185

原创 (十九)pytorch学习笔记---内容为学习资源摘录整合の词嵌入

前面讲了循环神经网络做简单的图像分类问题和飞机流量时序预测,但是现在循环神经网络最火热的应用是自然语言处理,下面我们介绍一下自然语言处理中如果运用循环神经网络,首先我们介绍一下第一个概念,词嵌入。 对于图像分类问题,我们可以使用 one-hot 的类型去编码,比如一共有 5 类,那么属于第二类就可以用 (0, 1, 0, 0, 0) 去表示,对于分类问题,这样当然忒别简单...

2019-08-16 14:43:48 88

原创 (十八)pytorch学习笔记---内容为学习资源摘录整合のRNN 用于时间序列的分析

RNN 用于时间序列的分析前面我们讲到使用 RNN 做简单的图像分类的问题,但是 RNN 并不擅长此类问题,下面我们讲一讲如何将 RNN 用到时间序列的问题上,因为对于时序数据,后面的数据会用到前面的数据,LSTM 的记忆特性非常适合这种场景。首先我们可以读入数据,这个数据是 10 年飞机月流量,可视化得到下面的效果。import numpy as npimport pandas a...

2019-08-16 14:43:27 388

原创 (十七)pytorch学习笔记---内容为学习资源摘录整合のRNN 做图像分类

RNN 做图像分类前面我们讲了 RNN 特别适合做序列类型的数据,那么 RNN 能不能想 CNN 一样用来做图像分类呢?下面我们用 mnist 手写字体的例子来展示一下如何用 RNN 做图像分类,但是这种方法并不是主流,这里我们只是作为举例。这样我们解决了输入序列的问题,对于输出序列怎么办呢?其实非常简单,虽然我们的输出是一个序列,但是我们只需要保留其中一个作为输出结果就可以了,...

2019-08-16 14:43:09 185 1

原创 (十四)pytorch学习笔记---内容为学习资源摘录整合の参数初始化

参数初始化 参数初始化对模型具有较大的影响,不同的初始化方式可能会导致截然不同的结果,所幸的是很多深度学习的先驱们已经帮我们探索了各种各样的初始化方式,所以我们只需要学会如何对模型的参数进行初始化的赋值即可。 PyTorch 的初始化方式并没有那么显然,如果你使用最原始的方式创建模型,那么你需要定义模型中的所有参数,当然这样你可以非常方便地定义每个变量的初始化方式,...

2019-08-16 14:42:24 104

原创 (十五)pytorch学习笔记---内容为学习资源摘录整合の深层神经网络MNIST数据

深层神经网络 前面一章我们简要介绍了神经网络的一些基本知识,同时也是示范了如何用神经网络构建一个复杂的非线性二分类器,更多的情况神经网络适合使用在更加复杂的情况,比如图像分类的问题,下面我们用深度学习的入门级数据集 MNIST 手写体分类来说明一下更深层神经网络的优良表现。MNIST 数据集mnist 数据集是一个非常出名的数据集,基本上很多网络都将其作为一个测试的标准,其来...

2019-08-16 14:42:07 589

原创 刷题笔记

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。class Solution {public: int removeDuplicates(vector<int>& nums) { //进入程序就要判断数...

2019-08-16 14:41:35 65

原创 ELMO----Cross-View训练

原始论文:Semi-Supervised Sequence Modeling with Cross-View Training在ELMO中,两个独立的模型在两个不同的训练阶段进行无监督的预训练和task-specific的有监督地学习。Cross-View训练(Cross-View Training,CVT;Clark等人,2018 )将两个训练阶段组合成一个统一的半监督学习过程,其中...

2019-08-16 14:40:19 178

原创 华为字符串面试题

#include<iostream>#include<vector>#include<algorithm>#include<map>#include<string>using namespace std;int main(){ i...

2019-08-16 14:39:46 65

原创 左神带我飞之01[编程题]在行列都排好序的矩阵中找指定的数

个人解题思路从右上角递归比较数组代码#include<iostream>#include<vector>using namespace std;bool erfen(int l,int r,vector< vector<int>>&rec,bool is_hang,int temp,int k){ if(l>r...

2019-08-16 14:39:09 96

原创 nlp翻译语言模型评价标准

nlp翻译语言模型评价标准机器翻译BLEUPerplexity详解------公式解释-----意义

2019-03-21 16:55:07 630

原创 (十三)pytorch学习笔记---内容为学习资源摘录整合の保存模型,Sequential 和 Module

一、多层神经网络,Sequential 和 Module通过前面的章节,我们了解到了机器学习领域中最常见的两个模型,线性回归模型和 Logistic 回归模型,他们分别是处理机器学习中最常见的两类问题-回归问题和分类问题。下面我们会讲第一个深度学习的模型,多层神经网络。多层神经网络左边是一张神经元的图片,神经元通过突触接受输入,然后通过神经激活的方式传输给后面的神经元。这对比于...

2019-03-02 13:27:19 483

原创 (十二)pytorch学习笔记---内容为学习资源摘录整合の梯度下降方法--反向传播算法

反向传播算法 前面我们介绍了的模型,整个处理的基本流程都是定义模型,读入数据,给出损失函数ff,通过梯度下降法更新参数。PyTorch 提供了非常简单的自动求导帮助我们求解导数,对于比较简单的模型,我们也能手动求出参数的梯度,但是对于非常复杂的模型,比如一个 100 层的网络,我们如何能够有效地手动求出这个梯度呢?这里就需要引入反向传播算法,自动求导本质是就是一个反向传播算法。反向传播算...

2019-03-02 13:18:30 199

原创 (十)pytorch学习笔记---内容为学习资源摘录整合の梯度下降方法--Adadelta(5)

Adadelta¶Adadelta 算是 Adagrad 法的延伸,它跟 RMSProp 一样,都是为了解决 Adagrad 中学习率不断减小的问题,RMSProp 是通过移动加权平均的方式,而 Adadelta 也是一种方法,有趣的是,它并不需要学习率这个参数。Adadelta 法def adadelta(parameters, sqrs, deltas, rho): e...

2019-03-02 13:17:18 1908 2

原创 (十一)pytorch学习笔记---内容为学习资源摘录整合の梯度下降方法--Adam(6)

AdamAdam 是一个结合了动量法和 RMSProp 的优化算法,其结合了两者的优点。Adam 算法下面我们来实现以下 adam 算法def adam(parameters, vs, sqrs, lr, t, beta1=0.9, beta2=0.999): eps = 1e-8 for param, v, sqr in zip(parameters, vs,...

2019-03-02 13:12:43 335

原创 (九)pytorch学习笔记---内容为学习资源摘录整合の梯度下降方法--RMSProp(4)

RMSProp RMSprop 是由 Geoff Hinton 在他 Coursera 课程中提出的一种适应性学习率方法,至今仍未被公开发表。前面我们提到了 Adagrad 算法有一个问题,就是学习率分母上的变量 s 不断被累加增大,最后会导致学习率除以一个比较大的数之后变得非常小,这不利于我们找到最后的最优解,所以 RMSProp 的提出就是为了解决这个问题。RMSProp...

2019-03-02 13:11:38 238

转载 (八)pytorch学习笔记---内容为学习资源摘录整合の梯度下降方法--Adagrad(3)

Adagrad这个优化算法被称为自适应学习率优化算法,之前我们讲的随机梯度下降以及动量法对所有的参数都使用的固定的学习率进行参数更新,但是不同的参数梯度可能不一样,所以需要不同的学习率才能比较好的进行训练,但是这个事情又不能很好地被人为操作,所以 Adagrad 便能够帮助我们做这件事。Adagrad 的想法非常简单,在每次使用一个 batch size 的数据进行参数更新的时候,我们需要...

2019-03-02 13:10:21 268

转载 (七)pytorch学习笔记---内容为学习资源摘录整合の梯度下降方法--动量法(2)

动量法使用梯度下降法,每次都会朝着目标函数下降最快的方向,这也称为最速下降法。这种更新方法看似非常快,实际上存在一些问题。相当于每次在进行参数更新的时候,都会将之前的速度考虑进来,每个参数在各方向上的移动幅度不仅取决于当前的梯度,还取决于过去各个梯度在各个方向上是否一致,如果一个梯度一直沿着当前方向进行更新,那么每次更新的幅度就越来越大,如果一个梯度在一个方向上不断变化,那么...

2019-03-02 13:08:03 384

转载 (六)pytorch学习笔记---内容为学习资源摘录整合の梯度下降方法sgd(1)

一、随机梯度下降法(sgd) 前面我们介绍了梯度下降法的数学原理,下面我们通过例子来说明一下随机梯度下降法,我们分别从 0 自己实现,以及使用 pytorch 中自带的优化器import numpy as npimport torchfrom torchvision.datasets import MNIST # 导入 pytorch 内置的 mnist 数据from torc...

2019-03-02 11:51:07 323

转载 (五)pytorch学习笔记---内容为学习资源摘录整合のLogistic 回归模型

Logistic 回归是一种广义的回归模型,其与多元线性回归有着很多相似之处,模型的形式基本相同,虽然也被称为回归,但是其更多的情况使用在分类问题上,同时又以二分类更为常用。一、模型形式 Logistic 回归的模型形式和线性回归一样,都是 y = wx + b,其中 x 可以是一个多维的特征,唯一不同的地方在于 Logistic 回归会对 y 作用一个 logistic...

2019-03-02 11:45:31 864 1

转载 (四)pytorch学习笔记---内容为学习资源摘录整合の线性模型和梯度下降

这是神经网络的第一课,我们会学习一个非常简单的模型,线性回归,同时也会学习一个优化算法-梯度下降法,对这个模型进行优化。线性回归是监督学习里面一个非常简单的模型,同时梯度下降也是深度学习中应用最广的优化算法,我们将从这里开始我们的深度学习之旅、梯度下降法在梯度下降法中,我们首先要明确梯度的概念,随后我们再了解如何使用梯度进行下降。梯度下降法有了对梯度的理解,我们...

2019-03-02 11:09:12 381

转载 (三)pytorch学习笔记---内容为学习资源摘录整合の动态图和静态图

目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算图表现形式。 TensorFlow 使用静态图,这意味着我们先定义计算图,然后不断使用它,而在 PyTorch 中,每次都会重新构建一个新的计算图。 静态图和动态图之间的优缺点。对于使用者来说,两种形式的计算图有着非常大的区别,同时静态图和动...

2019-03-02 11:04:48 103

算法导论(第3版中文版) - Thomas H.Cormen - 机械工业出版社

本书提供了对当代计算机算法研究的一个全面、综合的介绍。书中给出了多个算法,并对它们进行了较为深入的分析,使得这些算法的设计和分析易于被各个层次的读者所理解。我们力求在不牺牲分析的深度和数学严密性的前提下,给出深入浅出的说明。   书中每一章都给出了一个算法、一种算法设计技术、一个应用领域或一个相关的主题。算法是用英语和一种“伪代码”来描述的,任何有一点程序设计经验的人都能看得懂。书中给出了244幅图,说明各个算法的工作过程。我们强调将算法的效率作为一种设计标准,对书中的所有算法,都给出了关于其运行时间的详细分析。   本书主要供本科生和研究生的算法或数据结构课程使用。因为书中讨论了算法设计中的工程问题及其数学性质,所以,本书也可以供专业技术人员自学之用。   本书是第3版。在这个版本里,我们对全书进行了更新,包括新增了若干章、修订了伪代码等。   致使用本书的教师   本书的设计目标是全面、适用于多种用途。它可用于若干课程,从本科生的数据结构课程到研究生的算法课程。由于书中给出的内容比较多,只讲一学期一般讲不完,因此,教师们应该将本书看成是一种“缓存区”或“瑞典式自助

2019-04-01

算法与数据结构参考合集

1. 数据结构,英文是data structure,其实名字已经很清晰了。 这是一门专门处理数据的学科,数据元素相互之间的关联称为结构,描述的是存储和组织数据的方式。 按照书中的说法,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 下面我们就继续明确几个概念。 2. 数据:对客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。 上面场景中的注册信息,就是数据。数据库中存储的用户记录,那也是数据没跑了。 3. 数据项:数据项是数据的不可分割的最小单位。 这个不用太困惑,如上图所示的用户表中的id,accont,password等每一个字段,都是一个数据项。 4. 数据元素:数据的基本单位,在计算机中作为一个整体进行考虑和处理。一个数据元素由多个数据项组成。 那就比较好理解了,用户表中的每一条User记录就是一个数据元素。 5. 数据对象:性质相同的数据元素的集合,是数据的一个子集。 这里要记住集合这个概念,所有的用户组合到一起是数据对象,所有的女性用户也是一组数据对象。

2019-04-01

Sklearn_与_TensorFlow_机器学习实用指南

首先我们将以一个简单的线性回归模型为例,讨论两种不同的训练方法来得到模型的最优解: 直接使用封闭方程进行求根运算,得到模型在当前训练集上的最优参数(即在训练集上使损失函数达到最小值的模型参数) 使用迭代优化方法:梯度下降(GD),在训练集上,它可以逐渐调整模型参数以获得最小的损失函数,最终,参数会收敛到和第一种方法相同的的值。同时,我们也会介绍一些梯度下降的变体形式:批量梯度下降(Batch GD)、小批量梯度下降(Mini-batch GD)、随机梯度下降(Stochastic GD),在第二部分的神经网络部分,我们会多次使用它们。 接下来,我们将研究一个更复杂的模型:多项式回归,它可以拟合非线性数据集,由于它比线性模型拥有更多的参数,于是它更容易出现模型的过拟合。因此,我们将介绍如何通过学习曲线去判断模型是否出现了过拟合,并介绍几种正则化方法以减少模型出现过拟合的风险。 最后,我们将介绍两个常用于分类的模型:Logistic回归和Softmax回归 提示 在本章中包含许多数学公式,以及一些线性代数和微积分基本概念。为了理解这些公式,你需要知道什么是向量,什么是矩阵,以及它们直接是如何转化的,以及什么是点积,什么是矩阵的逆,什么是偏导数。如果你对这些不是很熟悉的话,你可以阅读本书提供的 Jupyter 在线笔记,它包括了线性代数和微积分的入门指导。对于那些不喜欢数学的人,你也应该快速简单的浏览这些公式。希望它足以帮助你理解大多数的概念。 线性回归 在第一章,我们介绍了一个简单的的生活满意度回归模型: $$ life_satisfaction = \theta _{0} + \theta _{1} * GDP_per_capita $$ 这个模型仅仅是输入量GDP_per_capita的线性函数,$\theta _{0}$ 和 $\theta _{1}$ 是这个模型的参数,线性模型更一般化的描述指通过计算输入变量的加权和,并加上一个常数偏置项(截距项)来得到一个预测值。如公式 4-1: 公式 4-1:线性回归预测模型 $$ \hat{y} = \theta _{0} + \theta _{1}x _{1}+\theta _{2}x _{2}+\dots+\theta _{n}x _{n} $$ $\hat{y}$ 表示预测结果 $n$ 表示特征的个数 $x_{i}$ 表示第i个特征的值 $\theta_{j}$ 表示第j个参数(包括偏置项 $\theta _{0}$ 和特征权重值 $\theta _{1},\theta _{2},\dots,\theta _{n}$) 上述公式可以写成更为简洁的向量形式,如公式 4-2: 公式 4-2:线性回归预测模型(向量形式) $$ \hat{y} = h _{\theta} (\mathbf{x})= \theta^T \cdot \mathbf{x} $$ $\theta$ 表示模型的参数向量包括偏置项 $\theta _{0}$ 和特征权重值 $\theta _{1}$ 到 $\theta _{n}$ $\theta^T$ 表示向量$\theta$的转置(行向量变为了列向量) $\mathbf{x}$ 为每个样本中特征值的向量形式,包括 $x {1}$ 到 $x{n}$,而且 $x_0$ 恒为 1 $\theta^T \cdot \mathbf{x}$ 表示 $\theta^T$ 和$ \mathbf{x}$ 的点积 $h_{\theta}$ 表示参数为 $\theta$ 的假设函数 怎么样去训练一个线性回归模型呢?好吧,回想一下,训练一个模型指的是设置模型的参数使得这个模型在训练集的表现较好。为此,我们首先需要找到一个衡量模型好坏的评定方法。在第二章,我们介绍到在回归模型上,最常见的评定标准是均方根误差(RMSE,详见公式 2-1)。因此,为了训练一个线性回归模型,你需要找到一个 $\theta$ 值,它使得均方根误差(标准误差)达到最小值。实践过程中,最小化均方误差比最小化均方根误差更加的简单,这两个过程会得到相同的 $\theta$,因为函数在最小值时候的自变量,同样能使函数的方根运算得到最小值。 在训练集 $\mathbf{X}$ 上使用公式 4-3 来计算线性回归假设 $h_{\theta}$ 的均方差($MSE$)。 公式 4-3:线性回归模型的 MSE 损失函数 $$ MSE (\mathbf{X},h {\theta}$) = $\frac{1}{m} \sum\limits{i=1}^m{\left(\theta^T \cdot \mathbf{x}^{(i)}-y^{(i)}\right)}^2 $$ 公式中符号的含义大多数都在第二章(详见“符号”)进行了说明,不同的是:为了突出模型的参数向量 $\theta$,使用 $h_{\theta}$ 来代替 $h$。以后的使用中为了公式的简洁,使用 $MSE(\theta)$ 来代替 $MSE(\mathbf{X},h _{\theta})$。 正态方程 为了找到最小化损失函数的 $\theta$ 值,可以采用公式解,换句话说,就是可以通过解正态方程直接得到最后的结果。 公式 4-4:正态方程 $$ \hat{\theta} = ({\mathbf{X}}^T\cdot\mathbf{X})^{-1}\cdot{\mathbf{X}}^T\cdot\mathbf{y} $$ $\hat{\theta}$ 指最小化损失 $\theta$ 的值 $\mathbf{y}$ 是一个向量,其包含了 $y^{(1)}$ 到 $y^{(m)}$ 的值 让我们生成一些近似线性的数据(如图 4-1)来测试一下这个方程。 import numpy as np X = 2 * np.random.rand(100, 1) y = 4 + 3 * X + np.random.randn(100, 1) 图 4-1:随机线性数据集 现在让我们使用正态方程来计算 $\hat{\theta}$,我们将使用 Numpy 的线性代数模块(np.linalg)中的inv()函数来计算矩阵的逆,以及dot()方法来计算矩阵的乘法。 X_b = np.c_[np.ones((100, 1)), X] theta_best = np.linalg.inv(X_b.T.dot(X_B)).dot(X_b.T).dot(y) 我们生产数据的函数实际上是 $y = 4 + 3x_0 + 高斯噪声$。让我们看一下最后的计算结果。 >>> theta_best array([[4.21509616],[2.77011339]]) 我们希望最后得到的参数为 $\theta_0=4,\theta_1=3$ 而不是 $\theta_0=3.865,\theta_1=3.139$ (译者注:我认为应该是 $\theta_0=4.2150,\theta_1=2.7701$)。这已经足够了,由于存在噪声,参数不可能达到到原始函数的值。 现在我们能够使用 $\hat{\theta}$ 来进行预测: >>> X_new = np.array([[0],[2]]) >>> X_new_b = np.c_[np.ones((2, 1)), X_new] >>> y_predict = X_new_b.dot(theta.best) >>> y_predict array([[4.21509616],[9.75532293]]) 画出这个模型的图像,如图 4-2 plt.plot(X_new,y_predict,"r-") plt.plot(X,y,"b.") plt.axis([0,2,0,15]) plt.show() 图4-2:线性回归预测 使用下面的 Scikit-Learn 代码可以达到相同的效果: 计算复杂度 正态方程需要计算矩阵 ${\mathbf{X}}^T\cdot\mathbf{X}$ 的逆,它是一个 $n * n$ 的矩阵($n$ 是特征的个数)。这样一个矩阵求逆的运算复杂度大约在 $O(n^{2.4})$ 到 $O(n^3)$ 之间,具体值取决于计算方式。换句话说,如果你将你的特征个数翻倍的话,其计算时间大概会变为原来的 5.3($2^{2.4}$)到 8($2^3$)倍。 提示 当特征的个数较大的时候(例如:特征数量为 100000),正态方程求解将会非常慢。 有利的一面是,这个方程在训练集上对于每一个实例来说是线性的,其复杂度为 $O(m)$,因此只要有能放得下它的内存空间,它就可以对大规模数据进行训练。同时,一旦你得到了线性回归模型(通过解正态方程或者其他的算法),进行预测是非常快的。因为模型中计算复杂度对于要进行预测的实例数量和特征个数都是线性的。 换句话说,当实例个数变为原来的两倍多的时候(或特征个数变为原来的两倍多),预测时间也仅仅是原来的两倍多。 接下来,我们将介绍另一种方法去训练模型。这种方法适合在特征个数非常多,训练实例非常多,内存无法满足要求的时候使用。 梯度下降 梯度下降是一种非常通用的优化算法,它能够很好地解决一系列问题。梯度下降的整体思路是通过的迭代来逐渐调整参数使得损失函数达到最小值。 假设浓雾下,你迷失在了大山中,你只能感受到自己脚下的坡度。为了最快到达山底,一个最好的方法就是沿着坡度最陡的地方下山。这其实就是梯度下降所做的:它计算误差函数关于参数向量$\theta$的局部梯度,同时它沿着梯度下降的方向进行下一次迭代。当梯度值为零的时候,就达到了误差函数最小值 。 具体来说,开始时,需要选定一个随机的$\theta$(这个值称为随机初始值),然后逐渐去改进它,每一次变化一小步,每一步都试着降低损失函数(例如:均方差损失函数),直到算法收敛到一个最小值(如图:4-3)。

2019-03-17

百面机器学习

作者简介编辑 诸葛越:现任Hulu公司全球研发副总裁,中国研发中心总经理。获美国斯坦福大学的计算机硕士与博士学位,纽约州立大学石溪分校的应用数学硕士学位,曾就读于清华大学计算机科学与技术系。 [2] 葫芦娃:15位Hulu北京创新实验室的顶尖人才,他们利用擅长的机器学习、深度学习等领域知识和算法模型,建立了一套定制化的机AI平台,改变着推荐引擎、视频编解码、内容理解、广告投放等多项与用户息息相关的在线业务技术。 [1] 主要内容编辑 本书收录了超过100道机器学习算法工程师的面试题目和解答,其中大部分源于Hulu算法研究岗位的真实场景。本书从日常工作、生活中各种有趣的现象出发,不仅囊括了机器学习的基本知识,而且还包含了成为优秀算法工程师的相关技能,更重要的是凝聚了笔者对人工智能领域的一颗热忱之心,旨在培养读者发现问题、解决问题、扩展问题的能力,建立对机器学习的热爱,共绘人工智能世界的宏伟蓝图。 [1] 目录编辑 推荐序 前言 机器学习算法工程师的自我修养 第1章 特征工程 第1节 特征归一化 第2节 类别型特征 第3节 高维组合特征的处理 第4节 组合特征 第5节 文本表示模型 第6节 Word2Vec 第7节 图像数据不足时的处理方法 第2章 模型评估 第1节 评估指标的局限性 第2节 ROC 曲线 第3节 余弦距离的应用 第4节 A/B 测试的陷阱 第5节 模型评估的方法 第6节 超参数调优 第7节 过拟合与欠拟合 第3章 经典算法 第1节 支持向量机 第2节 逻辑回归 第3节 决策树 第4章 降维 第1节 PCA 最大方差理论 第2节 PCA 最小平方误差理论 第3节 线性判别分析 第4节 线性判别分析与主成分分析 第5章 非监督学习 第1节 K 均值聚类 第2节 高斯混合模型 第3节 自组织映射神经网络 第4节 非监督学习算法的评估 第6章 概率图模型 第1节 概率图模型的联合概率分布 第2节 概率图表示 第3节 生成式模型与判别式模型 第4节 马尔可夫模型 第5节 主题模型 第7章 优化算法 第1节 有监督学习的损失函数 第2节 机器学习中的优化问题 第3节 经典优化算法 第4节 梯度验证 第5节 随机梯度下降法 第6节 随机梯度下降法的加速 第7节 L1 正则化与稀疏性 第8章 采样 第1节 采样的作用 第2节 均匀分布随机数 第3节 常见的采样方法 第4节 高斯分布的采样 第5节 马尔科夫蒙特卡洛采样法 第6节 贝叶斯网络的采样 第7节 不均衡样本集的重采样 第9章 前向神经网络 第1节 多层感知机与布尔函数 第2节 深度神经网络中的激活函数 第3节 多层感知机的反向传播算法 第4节 神经网络训练技巧 第5节 深度卷积神经网络 第6节 深度残差网络 第10章 循环神经网络 第1节 循环神经网络和卷积神经网络 第2节 循环神经网络的梯度消失问题 第3节 循环神经网络中的激活函数 第4节 长短期记忆网络 第5节 Seq2Seq 模型 第6节 注意力机制 第11章 强化学习 第1节 强化学习基础 第2节 视频游戏里的强化学习 第3节 策略梯度 第4节 探索与利用 第12章 集成学习 第1节 集成学习的种类 第2节 集成学习的步骤和例子 第3节 基分类器 第4节 偏差与方差 第5节 梯度提升决策树的基本原理 第6节 XGBoost 与GBDT 的联系和区别 第13章 生成式对抗网络 第1节 初识GANs 的秘密 第2节 WGAN:抓住低维的幽灵 第3节 DCGAN:当GANs 遇上卷积 第4节 ALI:包揽推断业务 第5节 IRGAN:生成离散样本 第6节 SeqGAN:生成文本序列 第14章 人工智能的热门应用 第1节 计算广告 第2节 游戏中的人工智能 第3节 AI 在自动驾驶中的应用 第4节 机器翻译 第5节 人机交互中的智能计算 后记 作者随笔 参考文献 参考资料 1. 百面机器学习:算法工程师带你去面试 .京东[引用日期2018-08-03] 2. 诸葛越 .豆瓣[引用日期2018-08-03]

2019-03-17

Effective C 中文版第三版 高清PDF+高清原版 - C Primer中文版(第五版) - 高清原版

c primer plus虽然是一部很经典的书籍,但是他所讲述的内容是适用于大部分C的理论。基本上不会针对某一种编译器该怎么写,有一个比较清晰的代码。全书共17章。第1、2章学习C语言编程所需的预备知识。第3到15章介绍了C语言的相关知识,包括数据类型、格式化输入输出、运算符、表达式、流程控制语句、函数、数组和指针、字符串操作、内存管理、位操作等等,知识内容都针对C99标准;另外,第10章强化了对指针的讨论,第12章引入了动态内存分配的概念,这些内容更加适合读者的需求。第16章和第17章讨论了C预处理器和C库函数、高级数据表示(数据结构)方面的内容。附录给出了各章后面复习题、编程练习的答案和丰富的C编程参考资料。 c primer plus(第五版)中文版目录 第1章 概览 1.1 C语言的起源 1.2 使用C语言的理由 1.3 C语言的发展方向 1.4 计算机工作的基本原理 1.5 高级计算机语言和编译器 1.6 使用C语言的7个步骤 1.7 编程机制 1.8 语言标准 1.9 本书的组织结构 1.10 本书体例 1.11 总结 1.12 复习题 1.13 编程练习 第2章 C语言概述 2.1 C语言的一个简单实例 2.2 实例说明 2.3 一个简单程序的结构 2.4 使程序可读的技巧 2.5 更进一步 2.6 多个函数 2.7 调试 2.8 关键字和保留标识符 2.9 关键概念 2.10 总结 2.11 复习题 2.12 编程练习 第3章 数据和C 3.1 示例程序 3.2 变量与常量数据 3.3 数据:数据类型关键字 3.4 C数据类型 3.5 使用数据类型 3.6 参数和易犯的错误 3.7 另一个例子:转义序列 3.8 关键概念 3.9 总结 3.10 复习题 3.11 编程练习 第4章 字符串和格式化输入/输出 4.1 前导程序 4.2 字符串简介 4.3 常量和C预处理器 4.4 研究和利用printf()和scanf() 4.5 关键概念 4.6 总结 4.7 复习题 4.8 编程练习 第5章 运算符、表达式和语句 5.1 循环简介 5.2 基本运算符 5.3 其他运算符 5.4 表达式和语句 5.5 类型转换 5.6 带有参数的函数 5.7 一个示例程序 5.8 关键概念 5.9 总结 5.10 复习题 5.11 编程练习 第6章 C控制语句:循环 6.1 再探while循环 6.2 while语句 6.4 不确定循环与计数循环 6.5 for循环 6.6 更多赋值运算符:+=、-=、*=、/=和%= 6.7 逗号运算符 6.8 退出条件循环:do while 6.9 选择哪种循环 6.10 嵌套循环 6.11 数组 6.12 使用函数返回值的循环例子 6.13 关键概念 6.14 总结 6.15 复习题 6.16 编程练习 第7章 C控制语句:分支和跳转 7.1 if语句 7.2 在if语句中添加else关键字 7.3 获得逻辑性 7.4 一个统计字数的程序 7.5 条件运算符?: 7.6 循环辅助手段:continue和break 7.7 多重选择:switch和break 7.8 goto语句 7.9 关键概念 7.10 总结 7.11 复习题 7.12 编程练习 第8章 字符输入/输出和输入确认 8.1 单字符I/O:getchar()和putchar() 8.2 缓冲区 8.3 终止键盘输入 8.5 创建一个更友好的用户界面 8.6 输入确认 8.7 菜单浏览 8.8 关键概念 8.9 总结 8.10 复习题 8.11 编程练习 第9章 函数 9.1 函数概述 9.2 ANSI C的函数原型 9.3 递归 9.4 多源代码文件程序的编译 9.5 地址运算符:& 9.6 改变调用函数中的变量 9.7 指针简介 9.8 关键概念 9.9 总结 9.10 复习题 9.11 编程练习 第10章 数组和指针 10.1 数组 10.2 多维数组 10.3 指针和数组 10.4 函数、数组和指针 10.5 指针操作 10.6 保护数组内容 10.7 指针和多维数组 10.8 变长数组(VLA) 10.9 复合文字 10.10 关键概念 10.11 总结 10.12 复习题 10.13 编程练习 第11章 字符串和字符串函数 11.1 字符串表示和字符串I/O 11.2 字符串输入 11.3 字符串输出 11.4 自定义字符串输入/输出函数 11.5 字符串函数 11.6 字符串例子:字符串排序 11.7 ctype.h字符函数和字符串 11.8 命令行参数 11.9 把字符串转换为数字 11.10 关键概念 11.11 总结 11.12 复习题 11.13 编程练习 第12章 存储类、链接和内存管理 12.1 存储类 12.2 存储类说明符 12.3 存储类和函数 12.4 随机数函数和静态变量 12.5 掷骰子 12.6 分配内存:malloc()和free() 12.7 ANSI C的类型限定词 12.8 关键概念 12.9 总结 12.10 复习题 12.11 编程练习 第13章 文件输入/输出 13.1 和文件进行通信 13.2 标准I/O 13.3 一个简单的文件压缩程序 13.4 文件I/O:fprintf ( )、fscanf ( )、fgets ( )和fputs ( )函数 13.5 随机存取:fseek()和ftell()函数 13.6 标准I/O内幕 13.7 其他标准I/O函数 13.8 关键概念 13.9 总结 13.10 复习题 13.11 编程练习 第14章 结构和其他数据形式 14.1 示例问题:创建图书目录 14.2 建立结构声明 14.3 定义结构变量 14.4 结构数组 14.5 嵌套结构 14.6 指向结构的指针 14.7 向函数传递结构信息 14.8 把结构内容保存到文件中 14.9 结构:下一步是什么 14.10 联合简介 14.11 枚举类型 14.12 typedef简介 14.13 奇特的声明 14.14 函数和指针 14.15 关键概念 14.16 总结 14.17 复习题 14.18 编程练习 第15章 位操作 15.1 二进制数、位和字节 15.2 其他基数 15.3 C的位运算符 15.4 位字段 15.5 关键概念 15.6 总结 15.7 复习题 15.8 编程练习 第16章 C预处理器和C库 16.1 翻译程序的第一步 16.2 明显常量:#define 16.3 在#define中使用参数 16.4 宏,还是函数 16.5 文件包含:#include 16.6 其他指令 16.7 内联函数 16.8 C库 16.9 数学库 16.10 通用工具库 16.11 诊断库 16.12 string.h库中的memcpy()和memmove() 16.13 可变参数:stdarg.h 16.14 关键概念 16.15 总结 16.16 复习题 16.17 编程练习 第17章 高级数据表示 17.1 研究数据表示 17.2 从数组到链表 17.3 抽象数据类型(ADT) 17.4 队列ADT 17.5 用队列进行模拟 17.6 链表与数组 17.7 二叉搜索树 17.8 其他说明 17.9 关键概念 17.10 总结 17.11 复习题 17.12 编程练习

2019-03-14

thymeleaf手册+案例应用

一、引用命名空间 &lt;html xmlns:th="http://www.thymeleaf.org"&gt; 在html中引入此命名空间,可避免编辑器出现html验证错误,虽然加不加命名空间对Thymeleaf的功能没有任何影响。 二、输出内容 2.1 Welcome to our grocery store! 说明: 1. th:text 用来将内容输出到所在标签的body中。 2. #{home.welcome} 用来引入数据home对象中的 welcome属性。 3. 可以用th:utext 用来显示“unescaped ” 的html内容。 2.2 Today is: 13 February 2011 说明:${today} 用来引用 today 变量 三、访问对象 ${param.x} 返回名为x 的 request参数。(可能有多个值) ${session.x} 返回名为x的Session参数。 ${application.x} 返回名为 servlet context 的参数。

2018-07-31

python+机器学习+tensfolw学习

机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。 目录 1机器学习算法 2机器学习算法走起来 折叠编辑本段机器学习算法 由于我们所提供的机器学习算法信息,数据中心机器学习算法正在变得越来越智能。怎样使机器学习算法为你所用呢? 机器学习算法是大数据能够给组织带来智能运营的关键组成部分。尽管机器学习算法算法趣味无穷,但机器学习算法技术本身很快就会变得复杂起来。所有人不可能都成为数据科学家,但IT专业人士需要了解我们的机器学习算法是如何学习的。 折叠揭开神秘的机器学习算法 我们越来越多地看到机器学习算法在实用和可实现的目标上的价值,例如针对数据寻找可用的模式然后进行预测的机器学习算法。通常,这些机器学习算法预测模型用于操作流程以优化决策过程,但同时它们也可以提供关键的洞察力和信息来报告战略决策。 机器学习算法的基本前提是算法训练,提供特定的输入数据时预测某一概率区间内的输出值。请记住机器学习算法的技巧是归纳而非推断--与概率相关,并非最终结论。 构建这些机器学习算法的过程被称之为机器学习算法预测建模。一旦掌握了这一机器学习算法模型,有时就可以直接对原始数据机器学习算法进行分析,并在新数据中应用该机器学习算法模型以预测某些重要的信息。模型的输出可以是机器学习算法分类、机器学习算法可能的结果、机器学习算法隐藏的关系、机器学习算法属性或者机器学习算法估计值

2018-07-28

java web、spring boot从入门到精通

Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。 中文名 java web 包 括 web服务器和web客户端 应 用 Servlet,JSP 优 点 上手快速并且相对容易 主要框架 使用Servlet或者Filter拦截请求 目录 1 主要框架 ▪ JSP优点: ▪ JSP缺点: ▪ Spring MVC优点: ▪ Spring MVC缺点: ▪ Stripes优点: ▪ Stripes缺点: ▪ Struts 2优点: ▪ Struts 2缺点: ▪ Tapestry优点: ▪ Tapestry缺点: ▪ Wicket优点: ▪ Wicket缺点: 2 关于Java 主要框架编辑 Java的Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向对象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。 JSP优点: Java EE标准,这意味着有很大的市场需求和更多的工作机会 上手快速并且相对容易 有大量可用的组件库 JSP缺点: 大量的JSP标签 对REST和安全支持不好 没有一个统一的实现。既有SUN的实现,又有Apache的实现——MyFaces。 Spring MVC优点: 对Spring MVC覆盖绑定(overriding binding)、验证(validation)等提供生命周期管理 与许多表示层技术/框架无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF 等 便于测试——归功于IoC Spring MVC缺点: 大量的XML配置文件 太过灵活——没有公共的父控制器 没有内置的Ajax支持 Stripes优点: 不需要书写XML配置文件 良好的学习文档 社区成员很热心 Stripes缺点: 社区比较小 不如其他的项目活跃 ActionBean里面的URL是硬编码的

2018-07-25

sqlyog用于mysql界面优化

今天闲来无事,下载新版的 mysql 8.0.11 安装。 为了方便安装查看,我下载了sqlyog 工具 连接 mysql 配置新连接报错:错误号码 2058,分析是 mysql 密码加密方法变了。 解决方法:windows 下cmd 登录 mysql -u root -p 登录你的 mysql 数据库,然后 执行这条SQL: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #password 是你自己设置的root密码 然后在重新配置SQLyog的连接,则可连接成功了,OK。

2018-07-20

NLP汉语自然语言处理原理与实践.pdf 高清 完整 带书签

内容简介 · · · · · · 本书是一本研究汉语自然语言处理方面的基础性、综合性书籍,涉及NLP的语言理论、算法和工程实践的方方面面,内容繁杂。 本书包括NLP的语言理论部分、算法部分、案例部分,涉及汉语的发展历史、传统的句法理论、认知语言学理论。需要指出的是,本书是迄今为止第一本系统介绍认知语言学和算法设计相结合的中文NLP书籍,并从认知语言学的视角重新认识和分析了NLP的句法和语义相结合的数据结构。这也是本书的创新之处。 本书适用于所有想学习NLP的技术人员,包括各大人工智能实验室、软件学院等专业机构。 作者简介 · · · · · · 郑捷:网站的负责人,研究方向是机器学习与自然语言处理。当前负责的核心产品是高精度自然语言认知系统的设计与研发,研发目标是高精度(识别率为85%~95%)的统一架构的NLP认知系统,已经出版专著《机器学习算法原理与编程实践》,希望能与在NLP这方面有兴趣的读者一起学习交流。 目录 · · · · · · 第1章 中文语言的机器处理 1 1.1 历史回顾 2 1.1.1 从科幻到现实 2 1.1.2 早期的探索 3 1.1.3 规则派还是统计派 3 1.1.4 从机器学习到认知计算 5

2018-07-19

scrapy动态爬虫并存入mysql

有时候,我们天真无邪的使用urllib库或Scrapy下载HTML网页时会发现,我们要提取的网页元素并不在我们下载到的HTML之中,尽管它们在浏览器里看起来唾手可得。 这说明我们想要的元素是在我们的某些操作下通过js事件动态生成的。举个例子,我们在刷QQ空间或者微博评论的时候,一直往下刷,网页越来越长,内容越来越多,就是这个让人又爱又恨的动态加载。 爬取动态页面目前来说有两种方法 分析页面请求(这篇介绍这个) selenium模拟浏览器行为(霸王硬上弓,以后再说) 言归正传,下面介绍一下通过分析页面请求的方法爬取动态加载页面的思路。中心思想就是找到那个发请求的javascript文件所发的请求。 举两个例子,京东评论和上证股票。 后注:本文的两个例子都是get请求,可以显示的在浏览器中查看效果,如果是post请求,需要我们在程序中构造数据,构造方法可以参考我从前的一篇博文Scrapy定向爬虫教程(六)——分析表单并回帖。 京东评论 这是一个比较简单的例子。 首先我们随便找一个热卖的商品,评论比较多。 就这个吧威刚(ADATA) SU800 256G 3D NAND SATA3固态硬盘。 点进去看看这个页面现在的状况 图一 滚动条给的第一印象感觉这页仿佛没多少内容。 键盘F12打开开发者工具,选择Network选项卡,选择JS(3月12日补:除JS选项卡还有可能在XHR选项卡中,当然也可以通过其它抓包工具),如下图 图二 然后,我们来拖动右侧的滚动条,这时就会发现,开发者工具里出现了新的js请求(还挺多的),不过草草翻译一下,很容易就能看出来哪个是取评论的,如下图 图三 好,复制出js请求的目标ur

2018-07-18

phantomjs1.9.8历史版本用于爬虫

需要的添加的jar包及工具:我这里使用maven来构建项目,添加依赖如下:   org.seleniumhq.selenium   selenium-java   3.2.0    PhantomJs工具到官网去下载:http://phantomjs.org/download.html 尽量都使用最新版本,不然会出现版本兼容的情况。 这里有一个已经写好的获取PhantomJSDriver的工具类 public static WebDriver getPhantomJs() {   String osname = System.getProperties().getProperty("os.name");   if (osname.equals("Linux")) {//判断系统的环境win or Linux     System.setProperty("phantomjs.binary.path", "/usr/bin/phantomjs");   } else {     System.setProperty("phantomjs.binary.path", "./phantomjs/win/phantomjs.exe");//设置PhantomJs访问路径   }   DesiredCapabilities desiredCapabilities = DesiredCapabilities.phantomjs();   //设置参数   desiredCapabilities.setCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");   desiredCapabilities.setCapability("phantomjs.page.customHeaders.User-Agent", "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:50.0) Gecko/20100101   Firefox/50.0");   if (Constant.isProxy) {//是否使用代理     org.openqa.selenium.Proxy proxy = new org.openqa.selenium.Proxy();     proxy.setProxyType(org.openqa.selenium.Proxy.ProxyType.MANUAL);     proxy.setAutodetect(false);     String proxyStr = "";     do {       proxyStr = ProxyUtil.getProxy();//自定义函数,返回代理ip及端口     } while (proxyStr.length() == 0);     proxy.setHttpProxy(proxyStr);     desiredCapabilities.setCapability(CapabilityType.PROXY, proxy);   }   return new PhantomJSDriver(desiredCapabilities); } 获取方式     try{     WebDriver webDriver = PhantomJsUtil.getPhantomJs();     webDriver.get(url);     SleepUtil.sleep(Constant.SEC_5);     PhantomJsUtil.screenshot(webDriver);     WebDriverWait wait = new WebDriverWait(webDriver, 10);     wait.until(ExpectedConditions.presenceOfElementLocated(By.id(inputId)));//开始打开网页,等待输入元素出现     Document document = Jsoup.parse(webDriver.getPageSource());     //TODO  剩下页面的获取就按照Jsoup获取方式来做   }finally{     if (webDriver != null) {       webDriver.quit();     }   } python版使用webdriver+PhantomJs爬虫使用,参考http://www.cnblogs.com/kuqs/p/6395284.html

2018-07-18

firefox45中文版2

Mozilla Firefox 45正式发布,本次更新最大改进在于Linux版本整合GTK3,并优化了同步系统,Hello功能已经可以共享当前的标签页,在访问多国文字的域名后缀系统的不兼容问题也已经被彻底解决,标签组功能也在这一版本中被删除。 相关下载 风之影浏览器 19.0.7.0 正式版 风之影浏览器 19.0.7.0 正式版 42MB|2018-07-12 星愿浏览器 4.1.1000.1807 正式版 星愿浏览器 4.1.1000.1807 正式版 69MB|2018-07-10 木头浏览器 2.0 基础版 木头浏览器 2.0 基础版 75MB|2018-07-08 Mozilla Firefox 58(Firefox Quantum) 61.0.1 Mozilla Firefox 58(Firefox Quantum) 61.0.1 37MB|2018-07-06 Opera欧朋高速浏览器 54.0.2949.0 官方正式版 Opera欧朋高速浏览器 54.0.2949.0 官方正式版 45MB|2018-07-03 搜狗高速浏览器 8.0.5.28300 正式版 搜狗高速浏览器 8.0.5.28300 正式版 55MB|2018-07-03 相关文章 业界新闻 | Mozilla Firefox开始支持“Web组件”技术!业界新闻 | Mozilla Firefox 57正式版已经开放下载链接业界新闻 | Mozilla Firefox 56.0.2的正式版本发布了!业界新闻 | 火狐十岁了!Mozilla Firefox诞生十周年业界新闻 | Mozilla Firefox 15将大幅降低内存占用业界新闻 | Mozilla Firefox OS视频/大量截图流出业界新闻 | Mozilla Firefox 14.0.1在今日正式发布软件新品速递 | 3月12日软件速递:Mozilla Firefox发布软件新品速递 | Mozilla Firefox 3.5.5更新 稳定性修复

2018-07-16

firefox45中文版

在2017年上线的Windows 10秋季创作者更新中,微软引入了名为“Continue on PC”的功能,方便用户在手机、PC、平板等设备无缝衔接使用。用户在手机端浏览之后,能够在PC桌面端继续使用。该功能主要依托于微软自家的服务,需通过微软账号来实现该功能。 近日 开发 者为Chrome和Firefox浏览器也带来了全新扩展程序,同时支持 Windows 10的Timeline和Continue on PC功能。开发者Domonic Maas在不懈努力下终于让自己的扩展程序支持Project Rome。允许用户轻松点击Chrome浏览器的标签页至其他设备上。 这项功能允许用户将一台设备上的Chrome浏览器标签页投放到另外一台Windows 10设备上,不过目前仍不支持智能手机端。开发者解释道:“通过统一的 微软 账号能够将当前活动标签页分享到其他的Windows设备上,以便于进行快速浏览。

2018-07-16

firefox46浏览器

Mozilla Firefox 46 正式版已经被上传到FTP服务器,包含全平台全语种 32/64位版本,46版为GNU/Linux平台整合了GTK3,改善了JIT编译器的安全性,并将无加密传输的密码文本框标记为不安全,以提醒用户小 心使用,至于原本有计划在46版本中开始测试的多处理器多进程运行的特性,目前还没有看到出现的迹象(如要体验,需要下载Mozilla Firefox Developer Edition)。 New Improved security of the JavaScript Just In Time (JIT) Compiler Use Content Decryption Module as a fallback to decode unencrypted H.264 and AAC media where available GTK3 integration (GNU/Linux only) Changed WebRTC fixes to improve performance and stability Developer Display dominator trees in Memory tool Allocation and garbage collection pause profiling in the performance panel Launch responsive mode from the Style Editor @media sidebar Developer Information HTML5 Added HKDF support for Web Crypto API Added support for document.elementsFromPoint

2018-07-16

firefox30浏览器

Mozilla Firefox,中文俗称“火狐”(正式缩写为Fx或fx,非正式缩写为MF),是一个自由及开放源代码的网页浏览器,使用Gecko排版引擎,支持多种操作系统,如Windows、Mac OS X及GNU/Linux等。该浏览器提供了两种版本,普通版和ESR(Extended Support Release,延长支持)版,ESR版本是 Mozilla 专门为那些无法或不愿每隔六周就升级一次的企业打造。Firefox ESR 版的升级周期为 42 周,而普通 Firefox 的升级周期为 6 周。 根据2013年8月浏览器统计数据,Firefox在全球网页浏览器市占率76%至81%,用户数在各网页浏览器中排名第三,全球估计有6450万位用户。在印度尼西亚、德国和波兰的占有率最高,分别为97.84%、86.41%和84.31%。 自Firefox 29起,浏览器界面有很大程度改变。 由于该浏览器开放了源代码,因此还有一些第三方编译版供使用。如pcxFirefox,苍月浏览器,tete009等 根据英国防病毒公司Sophos的最新调查数据显示,Firefox连续三年成为互联网用户最受信赖的浏览器

2018-07-16

Docker for windows10

Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。 Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。 一款开源软件能否在商业上成功,很大程度上依赖三件事 - 成功的 user case(用例), 活跃的社区和一个好故事。 dotCloud 自家的 PaaS 产品建立在docker之上,长期维护且有大量的用户,社区也十分活跃,接下来我们看看docker的故事。 环境管理复杂 - 从各种OS到各种中间件到各种app, 一款产品能够成功作为开发者需要关心的东西太多,且难于管理,这个问题几乎在所有现代IT相关行业都需要面对。 云计算时代的到来 - AWS的成功, 引导开发者将应用转移到 cloud 上, 解决了硬件管理的问题,然而中间件相关的问题依然存在 (所以openstack HEAT和 AWS cloudformation 都着力解决这个问题)。开发者思路变化提供了可能性。 虚拟化手段的变化 - cloud 时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需使用的需求以及保证可用性和隔离性。然而无论是KVM还是Xen在 docker 看来,都在浪费资源,因为用户需要的是高效运行环境而非OS, GuestOS既浪费资源又难于管理, 更加轻量级的LXC更加灵活和快速 LXC的移动性 - LXC在 linux 2.6 的 kernel 里就已经存在了,但是其设计之初并非为云计算考虑的,缺少标准化的描述手段和容器的可迁移性,决定其构建出的环境难于迁移和标准化管理(相对于KVM之类image和snapshot的概念)。docker 就在这个问题上做出实质性的革新。这是docker最独特的地方。 VM技术和容器技术对比 VM技术和容器技术对比 面对上述几个问题,docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型。

2018-07-12

算法导论pdf高清带书签

算法导论(原书第3版)一书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。 本书专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。本书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。全书提供了900多个练习题和思考题以及叙述较为详细的实例研究。 《算法导论(原书第3版)》一书内容丰富,对本科生的数据结构课程和研究生的算法课程都是很实用的教材。本书在读者的职业生涯中,也是一本案头的数学参考书或工程实践手册。 在有关算法的书中,有一些叙述非常严谨,但不够全面,另一些涉及了大量的题材,但又缺乏严谨性。《算法导论》将严谨性和全面性融为一体。

2018-05-31

自然语言处理encode—edcode讲解论文

过去半年以来,自然语言处理领域进化出了一件神器。此神器乃是深度神经网络的一种新模式,该模式分为:embed、encode、attend、predict四部分。本文将对这四个部分娓娓道来,并且剖析它在两个实例中的用法。 人们在谈论机器学习带来的提升时,往往只想到了机器在效率和准确率方面带给人们的提升,然而最重要的一点却是机器学习算法的通用性。如果你想写一段程序来识别社交媒体平台上的侮辱性帖子,就把问题泛化为“需要输入一段文本,预测出文本的类别ID”。这种分类与识别侮辱性帖子或是标记电子邮件类别之类的具体任务无关。如果两个问题的输入和输出类型都一致,那我们就应复用同一套模型的代码,两者的区别应该在于送入的训练数据不同,就像我们使用同一个游戏引擎玩不同的游戏。 笔者用spaCy和Keras实现了自然语言推理的可分解注意力模型。代码已经上传到github 假设你有一项强大的技术,可以预测实数稠密向量的类别标签。只要输入输出的格式相同,你就能用这项技术解决所有的问题。与此同时,你有另一项技术,可以用一个向量和一个矩阵预测出另一个向量。那么,现在你手里就握着三类问题的解决方案了,而不是两类。为什么是三类呢?因为如果第三类问题是通过矩阵和一个向量,得到一个类别标签,显然你可以组合利用前两种技术来解决。大多数NLP问题可以退化成输入一条或多条文本的机器学习问题。如果我们能将这些文本转化为向量,我们就可以复用现有的深度学习框架。接下来就是具体的做法。

2018-05-31

最新jquery easyUI中文文档 1.5版本没有之一

属性 所有的属性都定义在jQuery.fn.{plugin}.defaults里面。例如,对话框属性定义在jQuery.fn.dialog.defaults里面。 事件 所有的事件(回调函数)也都定义在jQuery.fn.{plugin}.defaults里面。 方法 调用方法的语法:$('selector').plugin('method', parameter); 解释: selector 是jQery对象选择器。 plugin 是插件的名称。 method 是相应插件现有的方法。 parameter 是参数对象,可以是一个对象、字符串等。 所有方法都定义在jQuery.fn.{plugin}.methods。每个方法都有2个参数:jq和param。第一个参数'jq'是必须的,这是指的jQuery对象。第二个参数'param'是指传入方法的实际参数。例如,为dialog组件扩展一个方法名为'mymove',代码如下: $.extend($.fn.dialog.methods, { mymove: function(jq, newposition){ return jq.each(function(){ $(this).dialog('move', newposition); }); } }); $.extend($.fn.dialog.methods, { mymove: function(jq, newposition){ return jq.each(function(){ $(this).dialog('move', newposition); }); } }); 现在你可以调用'mymove'方法将对话框移动到指定位置: $('#dd').dialog('mymove', { left: 200, top: 100 }); $('#dd').dialog('mymove', { left: 200, top: 100 }); jQuery EasyUI 入门指南

2017-10-14

jquery-easyui-1.5.3

jquery-easyui-1.5.3得软件支持最新手册得所有内容功能

2017-10-07

jQuery_EasyUI中文帮助手册.pdf

最新版本得jQuery_EasyUI中文手册,其中包含以下内容Base 基础 Documentation 文档 Parser 解析器 EasyLoader 加载器 Draggable 可拖拽 Droppable 可释放 Resizable 可调整尺寸 Pagination 分页 SearchBox 搜索框 ProgressBar 进度条 Layout 布局 Panel 面板 Tabs 标签页/选项卡 Accordion 手风琴 Layout 布局 Menu and Button 菜单和按钮 Menu 菜单 LinkButton 链接按钮 MenuButton 菜单按钮 SplitButton 拆分按钮 Form 表单 Form 表单 ValidateBox 验证框 Combo 组合 ComboBox 组合框 ComboTree 组合树 ComboGrid 组合表格 NumberBox 数字框 DateBox 日期框 DateTimeBox 日期时间框 Calendar 日历 Spinner 微调器 NumberSpinner 数值微调器 TimeSpinner 时间微调器 Window 窗口 Window 窗口 Dialog 对话框 Messager 消息框 DataGrid and Tree 数据表格和树 DataGrid 数据表格 PropertyGrid 属性表格 Tree 树 TreeGrid 树形表格

2017-10-07

空空如也

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

TA关注的人

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