精华内容
下载资源
问答
  • Java实战之Spring Boot入门到精通

    千人学习 2019-12-24 15:22:48
    包括如何基于Spring Boot2.0搭建一企业级的模块项目、整合Spring MVC和Mybatis实现项目中功能模块的CRUD,校验器Validator、Lombok、动态配置参数、开发环境切换、全局异常处理、定时任务、线程、热加载、发送...
  • 模型参数优化(一):遗传算法

    万次阅读 2019-06-25 15:57:39
    参数是指算法中的未知数,有的需要人为指定,比如神经网络算法中的学习...常用的参数优化方法主要包括交叉验证、网格搜索、遗传算法、粒子群优化、模拟退火,本节介绍遗传算法。 遗传算法实质:选定一批最佳参数,...

           参数是指算法中的未知数,有的需要人为指定,比如神经网络算法中的学习效率,有的是从数据中拟合而来,比如线性回归中的系数,如此等等。在使用选定算法进行建模时,设定或得到的参数很可能不是最优或接近最优的,这时需要对参数进行优化以得到更优的预测模型。常用的参数优化方法主要包括交叉验证、网格搜索、遗传算法、粒子群优化、模拟退火,本节介绍遗传算法。

          遗传算法实质:选定一批最佳参数,使得目标函数最优。

    1.基本概念

            遗传算法是模拟自然界遗传选择与淘汰的生物进化计算模型。达尔文的自然选择学说认为,遗传和变异是决定生物进化的内在因素。遗传是指父代与子代之间,在性状上的相似现象,而变异是指父代与子代之间以及子代的个体之间,在性状上或多或少地存在的差异现象,变异能够改变生物的性状以适应新的环境变化。而生存斗争是生物进化的外在因素,由于弱肉强食的生存斗争不断地进行,其结果是适者生存,具有适应性变异的个体被保留下来,不具有适应性变异的个体被淘汰。更进一步,孟德尔提出了遗传学的两个基本规律:分离律和自由组合律,认为生物是通过基因突变与基因的不同组合和自然选择的长期作用而进化的。

           由于生物进化与某些问题的最优求解过程存在共通性,即都是在产生或寻找最优的个体(或者问题的解),这就产生了基于自然选择、基因重组、基因突变等遗传行为来模拟生物进化机制的算法,通常叫作遗传算法,它最终发展成为一种随机全局搜索和优化的算法。

           遗传算法研究的对象是种群,即很多个体的集合,对应于求解的问题,这里的个体代表一个解,种群代表这些解的集合,当然,开始的时候,也许所有的解不是最优的,经过将这些解进行编码、选择、交叉、变异之后,逐代进化,从子代中可以找到求解问题的全局最优解。

    • 编码:将表现型的解转化为基因型,便于进行遗传操作;
    • 解码:即是从基因型转化为表现型,以直观判断个体的表现以,从而决定是否选择进入下一代或直接得到最优解。
    • 选择的标准:优化准则。
    • 交叉:也就是基因重组,即两个个体,互相交换 因型的对应片段。
    • 变异:指的是基因突变,是指个体基因型中某个基因的改变。

          种群的每代个体经过了这几个关键的步骤之后,种群得以进化,在最终的子代中找到问题的最优解。这就是使用遗传算法求解最优化问题的大致过程。

    2、名词概念

          染色体(个体):在参数寻优问题中一个染色体代表一个参数,染色体的十进制数值,用于获取待寻优参数实际输入到模型中的值。

          基因:每一个染色体都对应多个基因,基因是二进制数,基因的取值长度是染色体的长度。遗传算法的交叉、变异操作都是对染色体的基因进行的。

          种群:初始化的染色体可能的取值数

          适应度函数:表征每一组染色体(每一组参数)对应的模型评价指标(本博文的python实例中,采用3-flod 交叉检验的平均值作为适应度函数值)。

          假设对于两个参数的寻优,我们设定染色体长度为20,种群数为200,就是说初始化两个染色体,每个染色体初始化200个可能的值,每一个染色体的十进制数值用20位二进制数表示。、

    3. 遗传算法实现过程

    第一步:编码。变量x是遗传算法的表现型形式,从表现型到基因型的映射称为编码,通常采用二进制编码形式,串的长度取决于求解的精度。

    • 染色体长度:如参数batch取值范围为[10,100],区间长度为90,将其分成90份。因为:

                                                                       64=2^{6}< 90< 2^{7}=128

                         所以二进制串的长度是7,即染色体长度是7。

    • 解码:二进制对应的十进制数

                                                 

    (1)首先将二进制转为十进制:比如一个二进制为10101,转化为十进制就是1*2^{4}+0*2^{3}+1*2^{2}+0*2^{1}+1*2^{0}=21(2)把21放到上面的解码公式就得到了最终的batch:min=10,max=100

    第二步:产生父代个体,构建初始种群。

    第三步:选择个体。根据适应度函数选择再生个体,被选出的概率正比于染色体的适应性,适应性分数愈高,被选中的可能性也就愈大。常用的方法就是采用所谓的轮盘赌选择法

    第四部:交叉。

    第五步:变异。

    即:

           第一步:(产生初始种群:优化参数的候选者)根据种群规模,随机产生初始种群,每个个体表示染色体的基因型,如LSTM超参数batch_size、epochs等优化,初始种群为batch_size、epochs的候选值
           第二步:(计算适应度:目标函数)计算每个个体的适应度,并判断是否满足优化准则,若满足,则输出最佳个体及其代表的最优解,并结束算法;若不满足,则转入下一步。适应度,即因变量f,如LSTM的loss
           第三步:(选择)依据适应度选择再生个体,适应度高的个体被选中的概率高,反之,适应度低的个体被选中的概率低,甚至可能被淘汰。
           第四步:(交叉)根据一定的交叉概率和交叉方法生成子代个体。
           第五步:(变异)根据一定的变异概率和变异方法,生成子代个体。
           第六步:(循环计算适应度)由交叉和变异产生新一代种群,返回到第二步。

     遗传算法中的优化准则,一般根据问题的不同有不同的确定方式。通常采取如下之一作为判断条件:

    1. 种群中个体的最大适应度超过了设定值。(随着代数的增大,最大适应度向变大的方向移动;适应度值越大,表示解的质量越好)
    2. 种群中个体的平均适应度超过了设定值。
    3. 世代数超过了设定值。
    4. 种群中个体的最大适应度除以平均适应度超过了设定值。 

    4、遗传算法单参数/多参数寻优

           多参数寻优和单一参数寻优的基本思路是相同的,不过在种群初始化时,每次需要初始化m个染色体,并且在选择、交叉、变异操作时,m个染色体是分别进行的。

          步骤一:种群、染色体、基因初始化。
          步骤二:计算种群中每一组染色体对应的适应度函数值。
          步骤三:对种群中的染色体进行选择、交叉、变异操作,产生新的种群。
          步骤四:判断是否满足终止条件?如果不满足,跳转到步骤二;如果满足,输出最优参数。
          步骤五:结束。

    5. 代码实现 

    5.1 python实现

         参考:遗传算法(GA)的新手入门必备,python3案例

                    python遗传算法(详解)

                    遗传算法多参数寻优

    4.2 R实现

          R语言预测实战:6.3.5

    展开全文
  • 深度学习之参数优化方法

    千次阅读 2018-01-03 20:37:50
    优化问题:给定目标函数f(x),我们需要找到一组参数x,使得f(x)的值最小 1.Vanilla update x += - learning_rate * dx 对于训练数据集,我们首先将其分成nbatch,每batch包含m样本。我们每次更新都利用一...

    优化问题:给定目标函数f(x),我们需要找到一组参数x,使得f(x)的值最小

    1.Vanilla update

    tensorflow实现

    optimizer = tf.train.GradientDescentOptimizer(learning_rate=self.learning_rate)

    直接进行优化

    train_op = optimizer.minimize(loss)

    x += - learning_rate * dx

    对于训练数据集,我们首先将其分成nbatch,每个batch包含m个样本。我们每次更新都利用一个batch的数据,而非整个训练集。即:

    好处在于:

    当训练数据太多时,利用整个数据集更新往往时间上不显示。batch的方法可以减少机器的压力,并且可以更快地收敛

    当训练集有很多冗余时(类似的样本出现多次),batch方法收敛更快。以一个极端情况为例,若训练集前一半和后一半梯度相同。那么如果前一半作为一个batch,后一半作为另一个batch,那么在一次遍历训练集时,batch的方法向最优解前进两个step,而整体的方法只前进一个step


    2.Momentum update动量更新

    tensorflow实现

    optimizer = tf.train.MomentumOptimizer(lr, 0.9)

    直接进行优化

    train_op = optimizer.minimize(loss)

    v = mu * v - learning_rate * dx # integrate velocity

    x += v # integrate position

    SGD方法的一个缺点是,其更新方向完全依赖于当前的batch,因而其更新十分不稳定。解决这一问题的一个简单的做法便是引入momentum。

    momentum即动量,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力: 



    其中一般的,v初始为0,mu是优化参数,一般初始化参数为0.9,当使用交叉验证的时候,参数mu一般设置成[0.5,0.9,0.95,0.99],在开始训练的时候,梯度下降较快,可以设置mu为0.5,在一段时间后逐渐变慢了,mu可以设置为0.9、0.99。也正是因为有了“惯性”,这个比SGD会稳定一些。


    3.Nesterov Momentum

    x_ahead = x + mu * v 
    v = mu * v - learning_rate * dx_ahead
    x += v


    这是Momentum update的改进版,之前我们采用v = mu * v - learning_rate * dx方法计算增量,其中的dx还是当前的x,但是我们已经知道了,下一刻的惯性将会带我们去的位置,所以现在我们要用加了mu*v之后的x,来更新位置(在更新后的位置而不是在原点求解梯度),下面的图很形象: 



    4.Adagrad

    tensorflow实现

    optimizer = tf.train.AdagradientOptimizer(learning_rate=self.learning_rate)

    直接进行优化

    train_op = optimizer.minimize(loss)

    cache += dx**2
    x += - learning_rate * dx / (np.sqrt(cache) + eps)

    上面提到的方法对于所有参数都使用了同一个更新速率。但是同一个更新速率不一定适合所有参数。比如有的参数可能已经到了仅需要微调的阶段,但又有些参数由于对应样本少等原因,还需要较大幅度的调动。Adagrad就是针对这一问题提出的,自适应地为各个参数分配不同学习率的算法。


    其中 gt  同样是当前的梯度,连加和开根号都是元素级别的运算。 eta 是初始学习率,由于之后会自动调整学习率,所以初始值就没有之前的算法那样重要了。 eps是一个平滑的过程,取值通常在(10^-4~10^-8 之间)
    其含义是,对于每个参数,随着其更新的总距离增多,其学习速率也随之变慢。
    Adagrad中chche累加的原因是在后期作为惩罚项,这样的话学习率越来越小,符合在最后接近收敛的时候,步长越来越小的要求。

    前期gt较小的时候,chche累加 regularizer较大,能够放大梯度
    后期gt较大的时候,chche累加regularizer较小,能够约束梯度
    适合处理稀疏梯度


     

    5.RMSprop

    tensorflow实现

    optimizer = tf.train.RMSPropOptimizer(0.001, 0.9)

    直接进行优化

    train_op = optimizer.minimize(loss)

    cache= decay_rate*cache+ (1- decay_rate)* dx**2
    x+=- learning_rate* dx/ (np.sqrt(cache)+ eps)

    decay_rate是一个超参数,常用的值是[0.9,0.99,0.999]。其中x+=和Adagrad中是一样的,但是cache变量是不同的。
    因此,RMSProp仍然是基于梯度的大小来对每个权重的学习率进行修改,这同样效果不错。
    但是和Adagrad不同,其更新不会让学习率单调变小。

    6.Adam

    tensorflow函数:

    class tf.train.AdamOptimizer

    __init__(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False, name='Adam')

    直接进行优化

    train_op = optimizer.minimize(loss)

    m = beta1*m + (1-beta1)dx
    v = beta2*v + (1-beta2)
    v = beta2*v + (1-beta2)(dx**2)
    x += - learning_rate * m / (np.sqrt(v) + eps)

    有点像RMSProp+momentum


    参考来自:
    http://blog.csdn.net/bea_tree/article/details/51523733#411-vanilla-update
    http://blog.csdn.net/luo123n/article/details/48239963









    展开全文
  • 参数优化多尺度排列熵算法

    千次阅读 热门讨论 2021-01-28 17:27:25
    本文通过对尺度排列熵算法的参数时间序列长度 N、嵌入维数 m、延迟时间 t 和尺度因子 s 进行研究,得出对其参数优化的必要性。进而在综合考虑参数影响的 基础上,以尺度排列熵的偏度构造目标函数,提出了基于...

    目录

    一、多尺度排列熵原理

    1.1 排列熵(PE)

    1.2 多尺度排列熵(MPE)

    1.3 参数对MPE的影响

    二、参数优化方法

    2.1 遗传算法(GA)

    2.2 粒子群优化算法(PSO)

    2.3 多作用力粒子群优化算法(MFPSO)

    三、多尺度排列熵参数优化

    3.1 适应度函数的确定

    3.2 参数优化过程

    四、MATLAB源代码

    参考文献


    一、多尺度排列熵原理

    1.1 排列熵(PE)

    排列熵算法原理及MATLAB代码见地址:排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现

    排列熵只能检测时间序列在单一尺度上的复杂性和随机性。复杂系统的输出时间序列在多重尺度上包含特征信息,为研究时间序列的多尺度复杂性变化,排列熵分析不再满足。

    1.2 多尺度排列熵(MPE)

    对长度为 N 的时间序列X=\left \{ x_{i},i=1,2,...,N \right \}进行粗粒化处理得到粗粒化序列y_{j}^{(s)},其表达式为:

    其中,s 为尺度因子,s=1,2,...[N/s] 表示对 N/s 取整,当 s=1 时,粗粒化序列即为原始序列。

    对每个粗粒化序列y_{j}^{(s)},计算其排列熵即可得到多尺度排列熵。多尺度排列熵的计算流程如图1所示,具体步骤如下:

    (1)将时间序列粗粒化处理;

    (2)对每个粗粒化序列相空间重构; 

    (3)重构分量按升序排列,计算每一种符号序列出现的概率;

    (4)根据式(1-1)计算每个粗粒化序列的排列熵,并进行归一化处理,进而得到多尺度排列熵值。

    图1 多尺度排列熵计算流程

    1.3 参数对MPE的影响

    在粗粒化环节中,尺度因子的选择尤为重要,若尺度因子 s 取值过小,则不能最大限度的提取信号的特征信息;若 s 取值过大,将有可能造成信号之间的复杂度差异被抹除。同时,在多尺度排列熵的计算过程中,若嵌入维数 m 取值太小,算法的突变检测性能降低;若嵌入维数 m 取值太大,将无法反应时间序列的细微变化。而且,时间序列长度 N 与延迟时间 t 对多尺度排列熵算法也有着不同的影响。

    计算不同长度信号在不同嵌入维数m下的MPE值,如图 2(a)~2(d)所示。

    图2(a) 嵌入维数m=3
    图2(b) 嵌入维数m=4

     

    图2(c) 嵌入维数m=5
    图2(d) 嵌入维数m=6

     

    信号长度N=1024,嵌入维数m=6,尺度因子s=12,如图 3 所示为计算信号在不同延迟时间 t 值下的MPE值。

    图3 不同延迟时间 t 下的 MPE

     信号长度N=1024,嵌入维数m=6,延迟时间t=2,如图 4 所示为计算信号在不同尺度因子s下的MPE值。

    图4 不同尺度因子 s 下的 MPE

     

    二、参数优化方法

    2.1 遗传算法(GA)

    遗传算法的原理及MATLAB代码见地址:详解遗传算法(含MATLAB代码)

    遗传算法的流程如图5所示。

    图5 GA 算法流程图

    2.2 粒子群优化算法(PSO)

    粒子群优化算法的原理及MATLAB代码见地址:PSO-LSSVM算法及其MATLAB代码

    粒子群优化算法的流程如图6所示。

    图6 PSO 算法流程图

    2.3 多作用力粒子群优化算法(MFPSO)

    多作用力粒子群优化(Multi  Force  Particle  Swarm  Optimization,MFPSO)算法是对PSO 算法的改进,是一种阶段性搜索算法。该算法通过增加粒子间的引力、斥力等作用力构造规则,形成前期、中期和后期三个搜索阶段,使算法的搜索能力与收敛速度得到提高。

    三、多尺度排列熵参数优化

    3.1 适应度函数的确定

    为分析一组数据的总体趋势,通过求其均值,可以观察数据的集中趋势。但仅凭均值并不能够完全表征一组数据的总体概况,此时可以求取数据的偏度。偏度绝对值越大,表明均值的效能越有问题,偏度绝对值越小,则均值越可信赖。为此,本文选用多尺度排列熵偏度的平方函数作为目标函数,求其最小值。

    偏度表征的是概率密度为非正态分布的随机序列偏离正态分布的程度,是统计数据分布非对称程度的数字特征。其中,偏度为零,表示对称分布;偏度大于零,表示不对称部分的分布更趋向正值;偏度小于零,表示不对称部分的分布更趋向负值。

    将时间序列X=\left \{ x_{i},i=1,2,...,N \right \}所有尺度下的排列熵组成序列H_{p}(X)=\left \{ H_{p}(1),H_{p}(2),...,H_{p}(s) \right \},通过式(3-1)计算其偏度Ske:

    其中,H_{p}^{m}(X) 为序列 H_{p}(X)的均值;H_{p}^{d}(X)为 序列H_{p}(X)的标准差;E(\cdot )为求序列的期望。

    目标函数为:

    3.2 参数优化过程

    多尺度排列熵的参数优化流程如图8所示,具体过程如下: 

    (1)载入原始信号,设置各个优化算法的参数,初始化多尺度排列熵算法的参数;

    (2)由式(3-17)及式(3-18)求适应度函数,分别利用GA、PSO和MFPSO对 MPE 的参数进行优化,得到 3 组优化参数;

    (3)对 3 组优化参数进行对比分析,进而确定 MPE 的最优参数。

    图8 MPE 参数优化流程图

    四、MATLAB源代码

    遗传算法(GA)、粒子群优化算法(PSO)对多尺度排列熵算法(MPE)的参数进行寻优,得到最优参数,代码地址如下:参数优化多尺度排列熵

    参考文献

    [1]张运东. 基于 FVMD 多尺度排列熵和 GK 模糊聚类的故障诊断方法[D]. 秦皇岛:燕山大学, 32-45.

    [2]陈东宁, 张瑞星, 姚成玉, 等. 求解液压阀块加工车间调度的多作用力微粒群算法[J]. 中国机械工程, 2015, 26(3): 369-378.

    多尺度排列熵算法的提出者:Aziz  W, Arif  M. Multiscale  permutation entropy of physiological  times  series[C]//Proceeding  of IEEE International Multi-topic Conference, INMIC, 2005: 1-6.

    展开全文
  • 在前面有一篇文章,我...这看起来没有什么问题,那么如果一个项目真的需要很多个参数化变量去构建,那么我们直接这样写肯定不行,本篇就来讨论如下如何优化这个问题。 1.问题场景 之前的场景是这样,相关文章ht...

           在前面有一篇文章,我介绍seleinum自动化,如何通过pipeline方式去串联,其中使用了两个变量,一个浏览器类型一个是测试服务器地址。这两个变量,我是在让用户在构建的之前,需要勾选或者填写的。这看起来没有什么问题,那么如果一个项目真的需要很多个参数化变量去构建,那么我们直接这样写肯定不行,本篇就来讨论如下如何优化这个问题。

     

    1.问题场景

    之前的场景是这样,相关文章https://blog.csdn.net/u011541946/article/details/85549417

    这里有三个变量就有三个文本框或者其他前端元素,需要让用户去选择或者输入条件值,才能进行构建。那么真实的项目,可能远远不止3个变量,如果有十个或者十几个呢。那么是不是也需要一个很长篇幅的构建页面。这种我在想项目中也遇到过,可以实现构建需求,但是不美观,也不友好,很多参数都暴露出来。

     

    2.解决方案

    假如有十来个可变的参数,其中有几个是可以提取出来,没必要暴露出来,那么我们就可以把其他参数放入到一个json文件。这个json文件,可以存放在linux服务器上。原则上,每一个有权限去构建这个job的人,需要去linux服务器上创建自己的名称的文件夹,这个文件夹下然后放一个json文件。

    我pipeline脚本中,初始化的stage需要读取这个json文件,然后拿到每一个变量的值,赋值给pipeline中的变量,这些变量都是全局变量,任何stage中都可以用到这些全局变量。

    这么说,可能不是很明白,没关系,接下来,我一步一步图形和代码来讲明白我的思路。

     

    3.准备一个json文件

    重点在于,拿到项目的全部可能需要的参数,如何去做一个json文件。这个文件的路径在服务器哪里没有关系,可以是本地,也可以是远程共享服务地址,这种共享,运维人员很容易提供这种路径。

    假如说我们ProjectA需要用到一下几个参数,这里我就不去勉强举例十个或者十个以上的参数在json文件里。随便来几个,能表示这个意思就行。例如,用户名称name, 年龄age,手机phoneNumber, 家庭地址addr, 邮箱地址:xxx@xxx.com, 性别gender, 是否已婚,默认是否。

    好了就上面这七个参数,六个可以是字符串变量,是否已婚是布尔型变量。我们可以写成一个扁平的json格式,只有一层,没有json嵌套。

    {
    
       "NAME" : "Lucy",
    
       "AGE" : "18",
    
       "PHONE_NUMBER" : "13912345678",
    
       "ADDRESS" : "Haidian Beijing",
    
       "EMAIL" : "lucy@demo.com",
    
       "GENDER" : "male",
    
       "IS_MARRY" : false
    
    }

    例如在Jenkins虚拟机里的目录下/tmp/Anthony/test.json写入上面的内容,保存,这个路径下面会用到。

     

    4.修改job成参数化构建

    由于我们上面有一个参数是需要提供json文件的路径,所以,我们这里在UI勾选参数化构建,并添加一个字符串参数叫INPUT_JSON.

    保存之后,立即构建菜单变成参数化构建。

     

    5.写debug代码

    上面json文件我们做好了,接下来,我们来写stage.groovy中代码,先来读取json文件,然后打印里面属性NAME的值。如果能打印出一个,那么其他变量也能打印出来。

    相关代码如下

    import hudson.model.*;
    
    
    pipeline{
    
       agent any
       stages{
          stage("Hello Pipeline") {
             steps {
                 script {
                    println "Hello Pipeline!"
                    println env.JOB_NAME
                    println env.BUILD_NUMBER
                }
             }
          }
    
          stage("Init paramters in json") {
             steps {
                 script {
    
                    println "read josn input file"
                    json_file = INPUT_JSON? INPUT_JSON.trim() : ""
                    prop = readJSON file : json_file
                    name = prop.NAME? prop.NAME.trim() : ""
                    println "Name:" + name
                }
             }
          }
       }
    
    }

     

    6.测试和调试

    在参数化构建,填入之前准备json文件路径:/tmp/anthony/test.json

    点击构建,观察控制台日志。

    如果提示报错,没有readJSON方法,说明你jenkins环境没有安装插件:Utility Steps, 去插件管理中搜索并安装这个。

     

    7.打印全部参数的值

    代码调整如下

    import hudson.model.*;
    
    
    pipeline{ 
    	
    	agent any
    	stages{
    		stage("Hello Pipeline") {
    			steps {
    			    script {
    					println "Hello Pipeline!"
    					println env.JOB_NAME
    					println env.BUILD_NUMBER
    				}
    			}
    		}
    		
    		stage("Init paramters in json") {
    			steps {
    			    script {
    					println "read josn input file"
    					json_file = INPUT_JSON? INPUT_JSON.trim() : ""
    					prop = readJSON file : json_file
    					name = prop.NAME? prop.NAME.trim() : ""
    					println "Name:" + name
    					age = prop.AGE? prop.AGE.trim() : ""
    					println "Age:" + age
    					phone = prop.PHONE_NUMBER? prop.PHONE_NUMBER.trim() : ""
    					println "Phone:" + phone
    					address = prop.ADDRESS? prop.ADDRESS.trim() : ""
    					println "Address:" + address
    					email = prop.EMAIL? prop.EMAIL.trim() : ""
    					println "Email:" + email
    					gender = prop.GENDER? prop.GENDER.trim() : ""
    					println "Gender:" + gender
    					is_marry = prop.IS_MARRY? prop.IS_MARRY.trim() : false
    					println "is_marry:" + is_marry
    				}
    			}
    		}
    	}
    
    }
    
    

    测试通过的完整日志

    Started by user root
    Obtained src/Jenkinsfile/projectA-stages.groovy from git https://github.com/Anthonyliu86/pipeline-skills-demo.git
    Running in Durability level: MAX_SURVIVABILITY
    [Pipeline] Start of Pipeline
    [Pipeline] node
    Running on Jenkins in /var/lib/jenkins/workspace/ProjectA-pipeline-demo
    [Pipeline] {
    [Pipeline] stage
    [Pipeline] { (Declarative: Checkout SCM)
    [Pipeline] checkout
    using credential 03214975-2168-4795-981a-ddd935f62a76
     > git rev-parse --is-inside-work-tree # timeout=10
    Fetching changes from the remote Git repository
     > git config remote.origin.url https://github.com/Anthonyliu86/pipeline-skills-demo.git # timeout=10
    Fetching upstream changes from https://github.com/Anthonyliu86/pipeline-skills-demo.git
     > git --version # timeout=10
    using GIT_ASKPASS to set credentials 
     > git fetch --tags --progress https://github.com/Anthonyliu86/pipeline-skills-demo.git +refs/heads/*:refs/remotes/origin/*
     > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
     > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
    Checking out Revision 1c1c552166f9854ee1e16c402de034fbc8517134 (refs/remotes/origin/master)
     > git config core.sparsecheckout # timeout=10
     > git checkout -f 1c1c552166f9854ee1e16c402de034fbc8517134
    Commit message: "fix"
     > git rev-list --no-walk 5b08f84e9f15c2d159aecd136a3a2b072431f3b7 # timeout=10
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] withEnv
    [Pipeline] {
    [Pipeline] stage
    [Pipeline] { (Hello Pipeline)
    [Pipeline] script
    [Pipeline] {
    [Pipeline] echo
    Hello Pipeline!
    [Pipeline] echo
    ProjectA-pipeline-demo
    [Pipeline] echo
    9
    [Pipeline] }
    [Pipeline] // script
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (Init paramters in json)
    [Pipeline] script
    [Pipeline] {
    [Pipeline] echo
    read josn input file
    [Pipeline] readJSON
    [Pipeline] echo
    Name:Lucy
    [Pipeline] echo
    Age:18
    [Pipeline] echo
    Phone:13912345678
    [Pipeline] echo
    Address:Haidian Beijing
    [Pipeline] echo
    Email:lucy@demo.com
    [Pipeline] echo
    Gender:male
    [Pipeline] echo
    is_marry:false
    [Pipeline] }
    [Pipeline] // script
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] }
    [Pipeline] // withEnv
    [Pipeline] }
    [Pipeline] // node
    [Pipeline] End of Pipeline
    Finished: SUCCESS

    上面多个参数,用JSON方法来处理介绍到这里。其中引出了一些新的代码,例如上面的三元运算符以及局部变量和全局变量的概念,readJSON方法在前面博客完整学习pipeline工具插件的时候介绍过了。这篇,我们有了参数,拿到了多个参数,下面文章,我们详细来介绍下三元运算符在groovvy中的运用和全局变量和局部变量的以及使用map来传参的学习。

    展开全文
  • mysql 参数优化配置

    千次阅读 2018-04-19 10:56:51
    网站访问量大 怎样优化mysql数据库MySQL优化的一些建议,单机MySQL的优化我分为三部分,一是服务器物理硬件的优化,二是 MySQL安装时的编译优化,三是自身配置文件my.cnf的优化;如果单机的优化也解决不了你的...
  • 算法工程师戏谑自己是调参工程师,因为他们需要在繁杂的算法参数中找到最优的组合,往往在调参的过程中痛苦而漫长的度过一天。如果有一种方式可以帮助工程师找到最优的参数组合,那一定大有裨益,贝叶斯超参优化...
  • Python量化交易学习笔记(24)——策略多参数优化

    千次阅读 热门讨论 2020-04-26 11:21:14
    笔记(13)中介绍了在策略中对单个参数进行优化的实现方法,本文将介绍对策略中的多个参数进行优化的方案。 以笔记(14)中介绍的均线交叉策略为例,实现不同长期、短期均线参数组合的优化测试,回测股票为000001...
  • 常见的10大超参数优化

    千次阅读 2018-08-29 22:31:20
    Skopt ...是一参数优化库,包括随机搜索、贝叶斯搜索、决策森林和梯度提升树。这库包含一些理论成熟且可靠的优化方法,但是这些模型在小型搜索空间和良好的初始估计下效果最好。 Hyperopt ...
  • 卷积神经网络CNN参数优化

    千次阅读 2019-07-01 18:36:59
    二、卷积神经网络CNN参数优化 1、learning_rate学习速率 2、batch_size批数据大小 3、训练样本要均衡 4、丢弃率 5、网络架构 一、训练神经网络模型 1、神经网络训练流程 变量初始化:通过满足正态分布的...
  • MySQL数据库:参数优化

    千次阅读 2021-03-08 01:31:33
    数据库属于 IO 密集型的应用程序,其...本文先从 MySQL 数据库IO相关缓存参数的角度来介绍可以通过哪些参数进行IO优化: 一、参数说明: 1、query_cache_size / query_cache_type (global): Query cache 主要.
  • CXF动态调用webservice ...参数涵盖多个普通形参、JavaBean、以及List集合的形式调用 会介绍调用的几个小技巧,结合fastjson和缓存知识完全掌控整个调用流程。 1.知识点汇总 常用的CXF调用WebSer...
  • 神经网络同时优化模型的参数/加载两模型的参数 以Adam为例 一、传参和优化 1、传入/优化模型的参数: opt= torch.optim.Adam(model_1.parameters) 2、同时传入/优化模型的参数: opt = torch.optim....
  • 机器学习模型的超参数优化

    千次阅读 2020-05-04 08:26:40
    机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数。超参数与一般模型参数不同,超参数是在训练前提前设置的。举例来说,随机森林算法中树的数量就是一超参数,而神经网络中的...
  • vn.py源码解读(十、参数优化

    千次阅读 2019-04-18 21:24:57
    任何一个策略,在初步回测之后,都会有一个参数寻优的过程。这个过程vnpy给大家实现了。其实这个是最简单了,说白了就是换参数跑几次回测嘛。但是,说的直白点,vnpy的参数寻优在代码上来讲是不够高效的,原因很...
  • OpenCV中的SVM参数优化

    万次阅读 多人点赞 2014-08-19 10:31:18
    SVM(支持向量机)是机器学习算法里用得最多的算法。... 网上讲opencv中SVM使用的文章有很,但讲SVM参数优化的文章却很少。所以在这里不重点讲怎么使用SVM,而是谈谈怎样通过opencv自带的库优化SVM中的参数。
  • 使用TensorBoard进行超参数优化

    千次阅读 2020-07-04 09:08:07
    在本文中,我们将介绍超参数优化,然后使用TensorBoard显示超参数优化的结果。 深度神经网络的超参数是什么? 深度学习神经网络的目标是找到节点的权重,这将帮助我们理解图像、文本或语音中的数据模式。 要做到这...
  • 从零开始学习机器学习视频教程

    万人学习 2017-12-04 22:38:30
    本门课程将系统入门机器学习,课程内容不光是对算法的学习,还包括诸如算法的评价,方法的选择,模型的优化参数的调整,数据的整理,等等一系列工作。让大家对机器学习算法有全面的了解,并应用到你的实际项目中...
  • Hive 优化-参数设置

    千次阅读 2018-12-14 15:38:27
    hive.exec.reducers.max 这个参数控制最大的reducer的数量, 如果 input / bytes per reduce > max 则会启动这个参数所指定的reduce个数。 这个并不会影响mapre.reduce.tasks参数的设置。默认的max是999。  (3)...
  • 能够一次写入多个事务,减少IO,提高性能 commit_siblings 5 设置触发commit_delay的并发事务数,根据并发事务多少来配置 是 减少IO,提高性能 PostgreSQL配置参数修改的方式 1....
  • java中多个参数传递

    千次阅读 2014-01-22 14:58:40
    public class arg { public static void main(String[] args){ fun(1); System.out.print("\n"); fun(1,2,3); System.out.print("\n"); fun(1,2,3,4);... public static void fun(int ......
  • 参数优化:网格搜索法

    千次阅读 2020-06-07 21:20:15
    其中,网格搜索法在小批量的超参数优化时被经常使用,该项目是一个多分类(26类别)问题。   使用Jupyter Notebook完成,代码和数据文件。 2.机器学习案例 2.1导入相关库 from sklearn import svm # 支持向量...
  • automl-超参数优化(HPO)-综述

    千次阅读 多人点赞 2020-03-14 19:30:01
    参数优化方法分类: 超参数优化方法分类 超参数优化的难题 当面对大模型、大数据集、复杂的机器学习时,功能函数的评估非常昂贵 配置空间非常复杂且是高维的 我们通常不能得到关于超参数的损失函数的梯度。此外...
  • 【寻优算法】量子粒子群算法(QPSO) 参数寻优的python实现一、粒子群算法的缺点二、量子粒子群算法三、QPSO...1、需要设定的参数(惯性因子www,局部学习因子c1{c_1}c1​和全局学习因子c2{c_2}c2​)太,不利于...
  • centos 7 内核参数优化

    千次阅读 2019-04-11 11:12:42
    2017年12月20日 18:50:18延瓒@Yankerp阅读数:947更 所属专栏:Linux入门到熟练 版权声明:本文为博主原创文章,未经博主允许不得...fs.file-max = 999999:这个参数表示进程(比如一个worker进程)可以同时打...
  • 神经网络的参数优化方法

    万次阅读 多人点赞 2018-10-23 14:05:42
    著名: 本文是从 Michael Nielsen的电子书Neural Network and Deep Learning的深度学习那一章的卷积神经网络的参数优化方法的一些总结和摘录,并不是我自己的结论和做实验所得到的结果。我想Michael的实验结果更有...
  • 卷积神经网络(CNN)的参数优化方法

    万次阅读 多人点赞 2016-07-22 10:11:00
    著名: 本文是从 Michael Nielsen的电子书Neural Network and Deep Learning的深度学习那一章的卷积神经网络的参数优化方法的一些总结和摘录,并不是我自己的结论和做实验所得到的结果。我想Michael的实验结果更有...
  • SVM使用与参数优化

    千次阅读 2017-07-12 11:19:40
    python机器学习库 scikit-learn对Python语言有所了解的科研人员可能都知道SciPy——一开源的基于Python的科学计算工具包。基于SciPy,目前开发者们针对不同的应用领域已经发展出了为数众多的分支版本,它们被统一...
  • 参数优化:搜索超参数空间以便获得最好交叉验证分数 sklearn.model_selection.GridSearchCV 通过参数网格上的交叉验证网格搜索对估算器的指定参数值进行详尽搜索。 常用参数列表 参数名称 参数类型 ...
  • WEKA中的参数优化问题

    千次阅读 2016-12-05 11:31:14
    主要对WEKA中的参数优化分类器CVParameter和GridSearch用法进行了说明。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 956,856
精华内容 382,742
关键字:

多个参数如何优化