Esempio n. 1
0
def reoptimizeW(optState,example):
	assert(example.params.splParams.splMode == 'CCCP')
	marginsNew = []
	margins = optState.margins
	FNewtranspose = numpy.asmatrix(numpy.zeros(optState.F.T.shape))
	Ftranspose = optState.F.T
	latents = optState.latents
	for iteration in range(len(margins)):
		ybar, hbar = latents[iteration][example.id]
		contributedMargin = CommonApp.delta(ybar, example.trueY)
		contributedConstraintGiven = CommonApp.padCanonicalPsi(example.psis()[example.h,:].T, example.trueY, example.params)
		contributedConstraintHBar = CommonApp.padCanonicalPsi(example.psis()[hbar,:].T, ybar, example.params)
		FNewtranspose[iteration,:] = (Ftranspose[iteration,:] - (contributedConstraintGiven - contributedConstraintHBar).T)
		marginsNew.append(margins[iteration]-contributedMargin)

	FNew = FNewtranspose.T
	FTF = FNew.T*FNew

	wNew, objective, gap = SSVM.solveDualQPV2(FTF, FNew,marginsNew,example.params, optState.env,optState.task)


	return wNew