def __init__(self, x, g, recs=(8,4,2), transient=0, phi=transfer.tanh,
#iwInitFunc=pinit.lecun, rwInitFunc=pinit.lecun,
hwInitFunc=pinit.esp, vwInitFunc=pinit.lecun, optimFunc=optim.scg,
**kwargs):
x = util.segmat(x)
g = util.segmat(g)
self.dtype = np.result_type(x.dtype, g.dtype)
Regression.__init__(self, x.shape[2], g.shape[2])
optim.Optable.__init__(self)
self.transient = transient
self.phi = phi
self.nRecHiddens = list(recs)
self.nRecLayers = len(self.nRecHiddens)
self.layerDims = [(self.nIn+self.nRecHiddens[0]+1, self.nRecHiddens[0])]
for l in xrange(1, self.nRecLayers):
self.layerDims.append((self.nRecHiddens[l-1]+self.nRecHiddens[l]+1, self.nRecHiddens[l]))
self.layerDims.append((self.nRecHiddens[-1]+1, self.nOut))
views = util.packedViews(self.layerDims, dtype=self.dtype)
self.pw = views[0]
self.hws = views[1:-1]
self.vw = views[-1]
self.iws = []
self.rws = []
nIn = self.nIn
for l in xrange(self.nRecLayers):
iw = self.hws[l][:(nIn+1)]
rw = self.hws[l][(nIn+1):]
self.iws.append(iw)
self.rws.append(rw)
#self.iws[l][...] = iwInitFunc(iw.shape).astype(self.dtype, copy=False)
#self.rws[l][...] = rwInitFunc(rw.shape).astype(self.dtype, copy=False)
nIn = self.nRecHiddens[l]
self.hws[l][...] = hwInitFunc(self.hws[l].shape).astype(self.dtype, copy=False)
self.vw[...] = vwInitFunc(self.vw.shape).astype(self.dtype, copy=False)
# train the network
if optimFunc is not None:
self.train(x, g, optimFunc, **kwargs)
评论列表
文章目录