def supervised_update(self):
# array backend
xp = cuda.cupy if self.gpu >= 0 else numpy
# read data
data = self.train_data_queues[0].get()
vx = tuple([chainer.Variable(xp.asarray(data[k]))
for k in data.keys() if 'data' in k])
vt = tuple([chainer.Variable(xp.asarray(data[k]))
for k in data.keys() if 'target' in k])
# forward and update
self.optimizer.update(self.optimizer.target, vx, vt)
# get result
res = {'loss': float(self.optimizer.target.loss.data)}
if self.optimizer.target.accuracy is not None:
res['accuracy'] = float(self.optimizer.target.accuracy.data)
return res
评论列表
文章目录