def make_img(self, x, l, s, num_lm, random=0): if random == 0: lm = Variable(xp.clip(l.data, 0, 1)) sm = Variable(xp.clip(s.data, 0.1, 1)) else: eps = xp.random.normal(0, 1, size=l.data.shape).astype(xp.float32) epss = xp.random.normal(0, 1, size=s.data.shape).astype(xp.float32) sm = xp.clip((s.data + xp.sqrt(self.var) * epss), 0.1, 1).astype(xp.float32) lm = xp.clip(l.data + eps * xp.sqrt(self.vars), 0, 1) sm = Variable(sm) lm = Variable(lm.astype(xp.float32)) sm = Variable(xp.log10(sm.data) + 1) if self.use_gpu: xm = make_sampled_image.generate_xm_rgb_gpu(lm.data, sm.data, x, num_lm, g_size=self.gsize) else: xm = make_sampled_image.generate_xm_rgb(lm.data, sm.data, x, num_lm, g_size=self.gsize) return xm, lm, sm
def s1_determin(self, x, t, l1, s1): self.reset() num_lm = x.data.shape[0] s1 = xp.log10(s1 + 0.001) + 1 self.first_forward(x, num_lm) xm, lm, sm = self.make_img(x, Variable(l1), Variable(s1), num_lm, random=0) l1, s1, y, b = self.recurrent_forward(xm, lm, sm) accuracy = y.data * t.data return xp.sum(accuracy)
def s2_determin(self, x, t, l_list, s_list): self.reset() num_lm = x.data.shape[0] s_list = xp.log10(s_list + 0.001) + 1 self.first_forward(x, num_lm) xm, lm, sm = self.make_img(x, Variable(l_list[0]), Variable(s_list[0]), num_lm, random=0) self.recurrent_forward(xm, lm, sm) xm, lm, sm = self.make_img(x, Variable(l_list[1]), Variable(s_list[1]), num_lm, random=0) l1, s1, y, b = self.recurrent_forward(xm, lm, sm) accuracy = y.data * t.data class_l = xp.argmax(y.data, axis=1) return xp.sum(accuracy), class_l
def make_img(self, x, l, num_lm, random=0): s = xp.log10(xp.ones((1, 1)) * self.gsize / self.img_size) + 1 sm = xp.repeat(s, num_lm, axis=0) if random == 0: lm = Variable(xp.clip(l.data, 0, 1)) else: eps = xp.random.normal(0, 1, size=l.data.shape).astype(xp.float32) lm = xp.clip(l.data + eps * xp.sqrt(self.vars), 0, 1) lm = Variable(lm.astype(xp.float32)) if self.use_gpu: xm = make_sampled_image.generate_xm_rgb_gpu(lm.data, sm, x, num_lm, g_size=self.gsize) else: xm = make_sampled_image.generate_xm_rgb(lm.data, sm, x, num_lm, g_size=self.gsize) return xm, lm