咖啡因神经网络的Scipy最小化可提供与结果相同的初始条件

时间:2018-09-24 06:39:32

标签: python scipy caffe minimize

我正在将一组阈值应用于caffe神经网络的权重并获得精度,但是此精度比没有阈值的常规模型要低。

我尝试定义的函数将阈值作为参数,然后将其应用到神经网络并返回精度的倒数。

然后我将scipt.optimization.minimize与方法'SLSQP'一起使用来调整此阈值,以使其具有最大的准确性。

import numpy as np
import caffe
from scipy.optimize import minimize
from kernel_apprx import *
import time



def objective(ths):
    #return ths[0]**2+ths[1]**2
    net=caffe.Net('cifar10_quick_customised_opt.prototxt','cifar10_quick_iter_4000.caffemodel',caffe.TEST)
    k_aprox(net,"conv1","conv1_cus",ths[0],ths[1])
    net.forward()
    acc=net.blobs["accuracy"].data*100
    print "################## report #################\n\tthresholds: %s\n\taccuracy: %.16f%%"%(ths,acc)
    return 1/float(acc)





con={'type':'ineq','fun':con1}
constr=[con]


th0=[0.01,0.98]
b1=(0.0001,1.0)


bnds=(b1,b1)
tic=time.time()
sol=minimize(objective,th0,method='SLSQP',bounds=bnds,options={'disp': True ,'eps' : 1e-4,'ftol': 1e-10})

“目标”是包含神经网络的功能。 但是,当我运行它时,它将运行大约3次迭代,并给出与结果相同的初始条件,无论我将初始条件设置为“优化成功终止。”。在上面的示例中,它返回[0.2,0.98] < / p>

请帮助。

谢谢。

0 个答案:

没有答案