fit超简单入门

    代码质量完美主义者 Andrew Glover在“追逐代码质量,决心采用Fit”一文中这样
 
写到:
 
    在软件开发的生命周期中, 每个人都对质量负有责任。理想情况下,开发人员在开发
 
周期中,用像 Junit 和 TestNG 这样的测试工具保证早期质量,而质量保证团队用功能
 
性系统测试在周期末端跟进,使用像 Selenium 这样的工具。但是即使拥有优秀的质量保
 
证,有些应用程序在交付的时候仍然被认为是质量低下的。为什么呢? 因为它们并没有做
 
它们应当做的事。
 
     使用Fit,让客户尽早地参与到测试中来,使用Fit,让业务人员和开发人员更流畅地沟
 
通。 使用Fit,让需求一遍一遍地滚出来。
 
    Fit是什么,能做什么呢?下面通过一个超简单的例子,阐述Fit,例子中的实例以java
 
为平台,使用到Word。
 
    (1) 先用word写出下面样子的一个文件,存成d:/java/fit/input.html。
 
input.html文件
First Fit Test For Yfhuang
yfhuang.fit.Division
numerator
denominator
quotient()
1000
10
100
100
2
50
3000
2
1000
 
yfhuang.fit.Division是处理该文件的java类。
 
    (2) Division.java (放在d:/java/fit/yfhuang/fit/Division.java
 
package yfhuang.fit;
import fit.ColumnFixture;
public class Division extends ColumnFixture {
    public float numerator;
    public float denominator;
    public float quotient() {
      return numerator / denominator;
    }
}
 
 
    (3) 去 http://fit.c2.com/wiki.cgi?DownloadNow下载fit for java的版本,然后解压到
 
d:/java/fit。
    (4) 使用javac编译这个java文件生成Division.class文件,注意把d:/java/fit/fit.jar放到classpath中去。
 
    (5)进入命令行模式,然后执行命令
 
        cmd d:/java/fit
 
        javac -classpath fit.jar fit.fileRunner input.html output.html
 
    (6) 查看一下d:/java/fit/output.html文件,发现会是这样的一个样子:
 
First Fit Test For Yfhuang
yfhuang.fit.Division
numerator
denominator
quotient()
1000
10
100
100
2
50
3000
2
1000 expected
1500.0 actual
 
OK,例子到此为止,下面解释一下。
 
input.html文件一般是业务人员写的,表达需求,在这个例子中,业务人员希望写一个除
 
的功能。所以他用这个html文件表示出来,当然行头yfhuang.fit.Division是在开发人员
 
的帮助下加上去的。
 
在执行第5步的时候,其实也就是fit去处理业务人员写的input.html,通过反射,找到
 
开发人员写的Division这样的一个处理器(fit中称为fixture)来处理input.html。得到
 
out.html文件,文件表明业务人员表达的需求有些问题。(如果是除,第三行结果应该
 
是1500)
 
通过这种方式,开发人员可以让业务人员把需求更清晰的表达出来,当然如果通过沟通,
 
业务人员表达的需求是正确的,那么就是开发人员的实现有问题了。:)
 
 
fit是ward cunningham写的,可以与其他测试工具,诸如junit等一起使用,如果你想了
 
了解得更多一点,可以参考下列网站。
 
 
追逐代码质量,决心采用Fit: http://www.ibm.com/developerworks/cn/java/j-cq02286/
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Keras中,我们可以使用fit函数来训练模型,并通过设置validation_data参数来传递验证集。我们可以使用验证集来调整模型的参数,以下是使用Keras fit函数进行参数调整的代码示例: ```python from keras.models import Sequential from keras.layers import Dense from keras.callbacks import EarlyStopping from sklearn.model_selection import GridSearchCV from sklearn.model_selection import train_test_split import numpy as np # 构建模型 def create_model(optimizer='rmsprop', init='glorot_uniform'): model = Sequential() model.add(Dense(12, input_dim=8, kernel_initializer=init, activation='relu')) model.add(Dense(1, kernel_initializer=init, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy']) return model # 导入数据 dataset = np.loadtxt("pima-indians-diabetes.csv", delimiter=",") # 划分数据集 X = dataset[:,0:8] Y = dataset[:,8] # 划分训练集和验证集 X_train, X_val, Y_train, Y_val = train_test_split(X, Y, test_size=0.2, random_state=42) # 构建模型 model = KerasClassifier(build_fn=create_model, verbose=0) # 定义参数 param_grid = { 'batch_size': [10, 20, 40], 'epochs': [10, 50, 100], 'optimizer': ['rmsprop', 'adam'] } # 调参 grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1, cv=3) grid_result = grid.fit(X_train, Y_train, validation_data=(X_val, Y_val), callbacks=[EarlyStopping(monitor='val_loss', patience=5)]) # 输出结果 print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_)) ``` 在这个示例中,我们使用了KerasClassifier将Keras模型转换为Scikit-Learn模型,并使用GridSearchCV函数进行参数调整。我们定义了三个参数:批次大小、迭代次数和优化器,并将它们作为参数传递给GridSearchCV函数。我们还使用train_test_split函数将数据集划分为训练集和验证集。在GridSearchCV函数中,我们使用validation_data参数将验证集传递给模型,并使用EarlyStopping回调函数来避免过拟合。最后,我们输出了最佳得分和最佳参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值