如何重新定义索引0超出尺寸0的轴0的范围

问题描述

在smo算法中,由于索引0超出了轴0的大小0的范围,因此收到错误。.由于我是python新手,所以我很困惑,请帮助我...

        class SMO():
            def __init__(self,regularization_nn,learning_rate_RBM,learning_rate_nn,n_iter_RBM,batch_size_RBM,batch_size_nn,n_iter_nn):
                self.learning_rate_RBM=0.006
                self.learning_rate_nn=0.1
                self.n_iter_RBM=20
                self.batch_size_RBM=100
                self.batch_size_nn=100
                self.n_iter_nn=5000
                self.PopSize=batch_size_RBM
                self.dim=n_iter_RBM
                self.acc_err=batch_size_nn
                self.lb=learning_rate_RBM
                self.ub=learning_rate_nn
                self.objf=regularization_nn
                self.pos=numpy.zeros((batch_size_RBM,n_iter_RBM))
                self.fun_val = numpy.zeros(batch_size_RBM)
                self.fitness = numpy.zeros(batch_size_RBM)
                self.gpoint = numpy.zeros((batch_size_RBM,2))
                self.prob=numpy.zeros(batch_size_RBM)
                self.LocalLimit=n_iter_RBM*batch_size_RBM;
                self.GlobalLimit=batch_size_RBM;
                self.fit = numpy.zeros(batch_size_RBM)
                self.MinCost=numpy.zeros(n_iter_nn)
                self.Bestpos=numpy.zeros(n_iter_RBM)   

def initialize(self):
        global GlobalMin,GloballeaderPosition,GlobalLimitCount,LocalMin,LocalLimitCount,LocalleaderPosition
        S_max=int(self.PopSize/2)
        LocalMin = numpy.zeros(S_max)
        LocalleaderPosition=numpy.zeros((int(S_max),int(self.dim)))
        LocalLimitCount=numpy.zeros(S_max)
        for i in range(self.PopSize):
            print(i)
            for j in range(self.dim):
                if type(self.ub)==int:
                    self.pos[i,j]=random.random()*(self.ub-self.lb)+self.lb
                else:
                    self.pos[i,j]=random.random()*(self.ub[j]-self.lb[j])+self.lb[j]
        #Calculate objective function for each particle
        for i in range(self.PopSize):
            # Performing the bound checking
            self.pos[i,:]=numpy.clip(self.pos[i,:],self.lb,self.ub)
            self.fun_val[i]=self.objf(self.pos[i,:])
            self.func_eval+=1
            self.fitness[i]=self.Calculatefitness(self.fun_val[i])

        # Initialize Global leader Learning
        GlobalMin=self.fun_val[0]
        GloballeaderPosition=self.pos[0,:]
        GlobalLimitCount=0

        # Initialize Local leader Learning
        for k in range(self.group):
            LocalMin[k]=self.fun_val[int(self.gpoint[k,0])]
            LocalLimitCount[k]=0
            LocalleaderPosition[k,:]=self.pos[int(self.gpoint[k,0]),:]
    # ============================================ X X X ======================================================= #
在此运行中收到

回溯错误

<ipython-input-23-1b18b438af48> in chimp_optimizer(X,Y,X_train,Y_train)
     16     #print(fopt)
     17 
---> 18     x,succ_rate,mean_feval = main(Deep_belief_network,X,n_iter_nn)
     19     return x,mean_feval

<ipython-input-104-ab640501f743> in main(regularization_nn,n_iter_nn,obj_val,mean_feval)
    252 
    253   # =========================== Calling: initialize() =========================== #
--> 254   smo.initialize()
    255 
    256   # ========================== Calling: GlobalLearning() ======================== #

<ipython-input-104-ab640501f743> in initialize(self)
     69 
     70         # Initialize Global leader Learning
---> 71         GlobalMin=self.fun_val[0]
     72         GloballeaderPosition=self.pos[0,:]
     73         GlobalLimitCount=0

IndexError: index 0 is out of bounds for axis 0 with size 0

我以前已经将我的float值转换为int,现在我遇到了麻烦.... asmo算法让我有点困惑...对python来说是新手,所以它处理太多了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)