堆栈宽度学习Stacked BLS的简单python代码实现

堆栈宽度学习Stacked BLS的简单python代码实现,第1张

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/792423.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-05
下一篇2022-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存