问题描述
在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 (将#修改为@)