在机器学习或者深度学习领域,参数和超参数是一个常见的问题,个人根据经验给出了一个很狭隘的区分这两种参数的方法。
参数:就是模型可以根据数据可以自动学习出的变量,应该就是参数。比如,深度学习的权重,偏差等
超参数:就是用来确定模型的一些参数,超参数不同,模型是不同的(这个模型不同的意思就是有微小的区别,比如假设都是CNN模型,如果层数不同,模型不一样,虽然都是CNN模型哈。),超参数一般就是根据经验确定的变量。在深度学习中,超参数有:学习速率,迭代次数,层数,每层神经元的个数等等。毕业论文
通过TestNG实现参数话常用两种方式,一种是借助 @Parameters读取testng.xml中参数,一种是使用@DataProvider注解传参。
此次主要讲解XML传参,语法:在java类中定义参数名@Parameters({ "paraName" });在TestNG.xml中设置参数值<parameter name="paraName" value="paraValue"/>
以下为关键代码部分,柠檬黄色标记部分是具体传参代码
1.传一个参数
testDemo.java
@Parameters({ "first-name" })
@Test
public void testSingleString(String firstName) {//对应parameters只有一个参数
System.out.println("Invoked testString " + firstName);
}
testng.xml
<suite name="Suite" parallel="false">
<parameter name="first-name" value="Cedric"/>
<test name="Simple example">
<classes>
<class name="**.testDemo"/>
</classes>
</test>
</suite>
2.传多个参数
testDemo.java
@Parameters({ "userName", "password" })
@BeforeMethod
public void beforeTest(String userName, String pwd) {
System.out.println("参数userName值为:"+userName);
System.out.println("参数password值为:"+pwd);
}
testng.xml
<suite name="Suite" parallel="false">
<parameter name="userName" value="admin"/>
<parameter name="password" value="123456"/>
<test name="mulParameters">
<classes>
<class name="**.testDemo"/>
</classes>
</test>
</suite>
3.使用默认值
testDemo.java
@Parameters("db")
@Test
public void testNonExistentParameter(@Optional("mysql") String db) {
System.out.println("数据库为:"+db);
}
testng.xml
<!-- 无name=“db”的parameter ,testDemo中直接读取默认值“mysql”-->
<suite name="Suite" parallel="false">
<test name="demo">
<classes>
<class name="**.testDemo"/>
</classes>
</test>
</suite>
打印结果 数据库为:mysql
备注:
只有已使用 @Test, @Before/After or @Factory 注解的方法可以使用@Parameters.
参数有作用域,在 testng.xml中,参数在 <suite> 或 <test>标签下赋值. 如果有同名参数, <test> 标签下参数优先级高. 参数(parameters)和超参数(hyperparameters)是什么意思:http://www.youerw.com/fanwen/lunwen_24638.html