
Stacked BLS是BLS的一种变体,需要先了解BLS才能理解Stacked BLS,BLS介绍指路BLS
BLS的相关代码作者也给出了,指路BLS作者提供的代码
在做着提供的BLS及几个变体的代码的网站中,并没有Stacked BLS的代码提供,所以本文在作者提供的BLS代码的基础上,实现Stacked BLS模型。
Stacked BLS模型主要是由若干个BLS块通过残差连接堆叠而成,模型图如下。
这里做了一个简易处理:除第一个BLS块外,其他的BLS块的结构和超参数是相同的。
这里用到的BLS函数即上文中作者公开的BLS函数(其中,更换一下BLS函数的返回值为OutputOfTrain,OutputOfTest即可)
def stacked_BLS(train_x,train_y,test_x, test_y,s,c,N1,N2,N3,N21,N22,N23,n):
u_train=[0,0,0,0,0,0,0,0,0,0,0]
u_test = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
y_label = train_y.argmax(axis=1)
u_train[0],u_test[0]=BLS(train_x,train_y,test_x, test_y,s,c,N1,N2,N3,weight)#第一个BLS块
y_pre_train=u_train[0]
y_pre_test=u_test[0]
predlabel = train_y.argmax(axis=1)
train_one = y_pre_train.argmax(axis=1)
for i in range(n-1):#后面n-1个BLS块
u_train[i+1],u_test[i+1]=BLS(u_train[i],train_y-y_pre_train,u_test[i], test_y-y_pre_test,s,c,N21,N22,N23,weight)
y_pre_train=y_pre_train+u_train[i+1]
y_pre_test =y_pre_test+ u_test[i+1]
train_one = y_pre_train.argmax(axis=1)
trainAcc = show_accuracy(y_pre_train, train_y)
print('Training accurate is', trainAcc * 100, '%')
trainAcc_test = show_accuracy(y_pre_test, test_y)
print('Testing accurate is', trainAcc_test * 100, '%')
return y_pre_test
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)