lamda

Lamda演变历史

自闭症网瘾萝莉.ら 提交于 2020-04-06 11:11:00
.NetFramework 1.0 1.1时代 以前学习委托,大部分流程都是在这里声明委托,实例化的时候不得不声明一个方法,在写一个方法不得不传进入,这个方法与声明的委托参数返回值吻合,然后把这个方法传递进去。 namespace LamdaHistory { public static class NetFramework1 { public delegate void NoReturnNoPara();//声明委托 public delegate void NoReturnWithPara(int x, string y);//声明委托 public static void Show() { NoReturnNoPara method = new NoReturnNoPara(DoNothing); method.Invoke(); NoReturnWithPara method2 = new NoReturnWithPara(Study); method2.Invoke(123, "董小姐"); } private static void DoNothing() { Console.WriteLine("This is DoNothing"); } private static void Study(int id, string name) { Console

<强化学习> on policy VS off policy

ⅰ亾dé卋堺 提交于 2020-02-20 13:38:11
默认价值函数为Q(s,a),策略迭代更新为pai <—— epsilon-greedy(Q) policy是agent的属性,决定了agent面对某状态s时会选择哪个行为a value是agent的感觉,代表着agent对某个(s,a)的感觉,感觉它好感觉它不好 强化学习迭代过程中, policy-evaluation是获取agent按照当前policy会产生的所有感觉,即获取Qpai ; policy-improvement是根据感觉Q生成一个更好的policy on policy和off policy是policy_evaluation过程中区分的两种方式 Q(s,a) <——r + lamda * Q(s',a') on policy是我做了这个行为a之后,后继的所有收获都以我的策略我的眼光来估定;td_target = r + lamda * Q(s',a') ,(s',a')产自我的policy off policy是我做了这个行为a之后,后继以别人的眼光别人的策略来固定; td_target = r + lamda*Q(s',a') , (s',a')产自别人的policy 来源: https://www.cnblogs.com/dynmi/p/12334734.html

利用lamda表达式实现接口方法

一世执手 提交于 2020-02-13 16:55:17
利用lamda表达式实现接口方法 更多干货见博主个人网站:https://blog.zhenglin.work 若想直接使用 接口中方法,在jdk8之前的做法有:1,编写一个类实现这个接口的(抽象)方法;2,或者直接在创建对象时 采用匿名类。 接口: package com . zhengling . work ; public interface DecoratorF { void m1 ( ) ; } 里面有个方法m1;如果想调用m1方法,必须先实现这个接口的m1方法。用匿名内部类来实现: DecoratorF df = new DecoratorF ( ) { @Override public void m1 ( ) { System . out . println ( "内部匿名类实现m1方法" ) ; } } ; df . m1 ( ) ; 这样就可以直接调用m1方法;或者搞一个内部类来实现这个接口: static class B implements DecoratorF { @Override public void m1 ( ) { System . out . println ( "静态内部类实现接口的m1方法" ) ; } //定义为静态内部类 方便在main方法中调用 } 然后用多态的特点 调用m1方法: DecoratorF def = new B ( )

Spark应用程序--词频统计--命令行分析学习

断了今生、忘了曾经 提交于 2020-02-11 09:13:49
词频统计: textFile包含了多行文本内容 : textFile.flatMap(line => line.split(” “)) 会遍历 textFile中的每行文本内容,当遍历到其中一行文本内容时,会把文本内容赋值给变量line,并执行Lamda表达式line => line.split(” “)。 line => line.split(” “) 是一个 Lamda表达式,左边表示输入参数,右边表示函数里面执行的处理逻辑,这里执行line.split(” “),也就是针对line中的一行文本内容,采用空格作为分隔符进行单词切分,从一行文本切分得到很多个单词构成的单词集合。这样,对于textFile中的每行文本,都会使用Lamda表达式得到一个单词集合,最终,多行文本,就得到多个单词集合。 textFile.flatMap() 操作就把这多个单词集合 “拍扁”得到一个大的单词集合。 然后,针对这个大的单词集合,执行 map()操作 : map(word => (word, 1)) 这个 map操作会遍历这个集合中的每个单词,当遍历到其中一个单词时,就把当前这个单词赋值给变量word,并执行Lamda表达式word => (word, 1),这个Lamda表达式的含义是,word作为函数的输入参数,然后,执行函数处理逻辑,这里会执行(word, 1),也就是针对输入的word

c# Linq及Lamda表达式应用经验之 GroupBy 分组

自作多情 提交于 2020-02-10 08:05:39
//******* 对集合按Name属于进行分组GroupBy查询 ******** //结果中包括的字段: //1、分组的关键字:Name = g.Key //2、每个分组的数量:count = g.Count() //3、每个分组的年龄总和:ageC = g.Sum(item => item.Age) //4、每个分组的收入总和:moneyC = g.Sum(item => item.Money) //写法1:lamda 表达式写法(推荐) var ls = persons1.GroupBy(a => a.Name).Select(g => (new { name = g.Key, count = g.Count(), ageC = g.Sum(item => item.Age), moneyC = g.Sum(item => item.Money) })); //写法2:类SQL语言写法 最终编译器会把它转化为lamda表达式 var ls2 = from ps in persons1 group ps by ps.Name into g select new { name = g.Key, count = g.Count(), ageC = g.Sum(item => item.Age), moneyC = g.Sum(item => item.Money) }; List

机器学习基石笔记-Lecture 14 Regularization

余生长醉 提交于 2020-02-09 06:26:25
正则化的思想,引入的方式:想改善高阶假设空间overfitting的状况,从高阶退回低阶,即限制w的某些维度使之为零。 通过放宽限制和使用软约束(softer constraint),问题改写成: 那如何求解右边的有约束最优化问题呢? 首先把Ein写成矩阵形式 如果没有约束,最优解就是linear regression的解,有约束后,w只能在红色的圆圈里面。 本来w应该沿着负梯度的方向移动,但是它不能移出圆圈,就是不能在 红线(normal)方向上移动。 因此将负梯度方法沿着normal做分解,w只能沿着绿色的箭头移动。什么时候w不能再移动了呢(就是不能再下降了),就是负梯度与normal平行的时候。那么这个时候的w就是问题的解。 最后问题演化成求w,使得 如果lamda已知,那么w可求得 另外来看,求解 可以等价于求解最小化问题 后面加上的这项就叫做正则项。 正则化和VC理论的联系 这里通过对最小化Ein的等价问题 Eaug 的求解,来保证VC bound. Eaug的正则项可以看成是单个h的复杂度的惩罚 在有约束的假设空间H(C)中,w被限制了,这个空间的vc维要低于原始空间。 常用的正则项:L2和L1 L1正则的最优求解思路和L2是一样的,最优解会出现在角上,这样w在一些维度上为0,起到了特征选择的作用。 关于lamda的选择,和噪音大小有关。噪音大的话lamda也要大一些

Lamda表达式学习笔记二

北战南征 提交于 2020-02-07 21:51:31
Lamda表达式学习笔记二 lamda表达式----方法引用 上一篇讲到Lamda体就是对函数式接口方法的实现 ,在方法体中我们可能会引用其他方法实现逻辑,所以在lamda体中我们可以直接引用器方法 I 对象::实例方法名 /** * 对象::实例方法名 */ @Test public void test6() { Consumer<String> consumer = (x) -> System.out.println(x); consumer.accept("->"); Consumer<String> consumer1 = System.out::println; consumer1.accept("::"); } 结果: II 类名::静态方法名 /** * 类名::静态方法名 */ @Test public void test7() { Comparator<Integer> comparator = (x, y) -> Integer.compare(x, y); Comparator<Integer> comparator1 = Integer::compare; } III 类名::实例方法名 /** * 类名::实例方法名 */ public void test8() { BiFunction<String, String, Boolean>

隐马尔可夫模型深入理解——转载

蹲街弑〆低调 提交于 2020-01-31 10:28:58
隐马尔可夫模型(Hidden Markov model, HMM)是一种结构最简单的动态贝叶斯网的生成模型,它也是一种著名的有向图模型。它是典型的自然语言中处理标注问题的统计机器学模型,本文将重点介绍这种经典的机器学习模型。 转载链接: https://mp.weixin.qq.com/s?src=11&timestamp=1580378766&ver=2128&signature=id557IJtuCw7XYAqKzyjaqPMD2B88eVFQXaFhx2lZw3QnWFB NQjXJF8fcOVsomhyf5qL 81QZO0SbN8mwLWNn2sayM-0r s8uj7Q64aI7RtpULW d1L-je4qHKpiS55&new=1 “ 摇骰子问题 ” —— 经典 1. 引言 假设有三个不同的骰子(6面、4面、8面),每次先从三个骰子里面选择一个,每个骰子选中的概率为1/3,如下图所示,重复上述过程,得到一串数值[1,6,3,5,2,7]。这些 可观测变量组成可观测状态链 。同时,在隐马尔可夫模型中还有一条由 隐变量组成的隐含状态链 ,在本例中即 骰子的序列 。比如得到这串数字骰子的序列可能为[D6, D8, D8, D6, D4, D8]。 隐马尔可夫型示意图如下所示: 图中,箭头表示变量之间的依赖关系。图中各箭头的说明如下: 在任意时刻, 观测变量 (骰子)

Python不调包实现逻辑回归和自动求导

大兔子大兔子 提交于 2020-01-30 08:13:26
导言 逻辑回归是机器学习中最基础也最常用的模型 一句话介绍LR: 逻辑回归假设 数据服从伯努利分布 ,通过 极大化似然函数 的方法,运用 梯度下降 来求解参数,来达到将数据 二分类 的目的。 LR具体的推导可以参考李航老师的统计学习方法 为什么LR损失函数不选MSE,而采用极大似然估计(即交叉熵损失) 参考: https://www.cnblogs.com/smartwhite/p/9109815.html 对于线性回归,我们会选择MSE, 因为其J(θ)是凸函数 但是对于logistic回归,由于进行了sigmoid非线性映射就是 非凸函数 ,所以可能在寻优的时候 容易陷入局部最优 所以 考虑把sigmoid作log ,对其求二阶导,结果大于0,说明其是凸函数,在用梯度下降法寻优时,可以保证找到全局最小。 TensorFlow实现 使用mnist数据集验证模型的有效性 import tensorflow as tf import os from tensorflow . examples . tutorials . mnist import input_data os . environ [ 'CUDA_VISIBLE_DEVICES' ] = '0' lr = 0.001 n_epoch = 25 batch_size = 64 def LR ( ) : x = tf .

【c++11】 lamda表达式

荒凉一梦 提交于 2020-01-23 03:44:46
1.标准样式 [](CString itUrl)->bool { } 例子: 不带参数: auto fun_helloworld = []()->void{ std::cout << "hello world" << std::endl; }; fun_helloworld(); 带一个参数: auto fun_helloworld = [](std::string aa)->void{ std::cout << aa << std::endl; }; fun_helloworld("hello world"); 2.[]中几个值介绍 auto findUrlFun = [=](CString itUrl)->bool { auto itUrlOrigin = GetOriginImageFileUrl(itUrl.GetBuffer()); return itUrlOrigin.CompareNoCase(urlOrigin) == 0 ? true : false; }; (1)[],什么都不传 for (int i=0; i<10; ++i) { auto fun_helloworld = [](std::string aa)->void { std::cout << aa << std::endl; }; fun_helloworld("haha"); } (2)[