def use_model(self, x, t): self.reset() num_lm = x.shape[0] n_step = self.n_step s_list = xp.empty((n_step, num_lm, 1)) l_list = xp.empty((n_step, num_lm, 2)) x_list = xp.empty((n_step, num_lm, 3, self.gsize, self.gsize)) l, s, b1 = self.first_forward(x, num_lm) for i in range(n_step): if i + 1 == n_step: xm, lm, sm = self.make_img(x, l, s, num_lm, random=0) l1, s1, y, b = self.recurrent_forward(xm, lm, sm) s_list[i] = sm.data l_list[i] = lm.data x_list[i] = xm.data accuracy = y.data * t s_list = xp.power(10, s_list - 1) return xp.sum(accuracy, axis=1), l_list, s_list, x_list else: xm, lm, sm = self.make_img(x, l, s, num_lm, random=0) l1, s1, y, b = self.recurrent_forward(xm, lm, sm) l = l1 s = s1 s_list[i] = sm.data l_list[i] = lm.data x_list[i] = xm.data return
def generate_xm_in_gpu(lm, sm, img, num_lm, g_size, img_size=112): xm = xp.empty((num_lm, g_size * g_size)).astype(xp.float32) img_buf = img.reshape((num_lm, img_size * img_size)) zm = xp.power(10, sm - 1) for k in range(num_lm): xr = xp.linspace((lm[k][0] - zm[k] / 2), (lm[k][0] + zm[k] / 2), g_size) xr *= img_size xr = xp.clip(xr, 0, img_size - 1).astype(np.int32) yr = xp.linspace((lm[k][1] - zm[k] / 2), (lm[k][1] + zm[k] / 2), g_size) yr *= img_size yr = xp.clip(yr, 0, img_size - 1).astype(np.int32) xr = img_size * np.repeat(xr, g_size) + xp.tile(yr, g_size) xm[k] = img_buf[k][xr] return xm.reshape(num_lm, 1, g_size, g_size).astype(xp.float32)
def use_model(self, x, t): self.reset() num_lm = x.shape[0] n_step = self.n_step s_list = xp.ones((n_step, num_lm, 1)) * (self.gsize / self.img_size) l_list = xp.empty((n_step, num_lm, 2)) l, b1 = self.first_forward(x, num_lm) for i in range(n_step): if i + 1 == n_step: xm, lm = self.make_img(x, l, num_lm, random=0) l1, y, b = self.recurrent_forward(xm, lm) l_list[i] = l1.data accuracy = y.data * t return xp.sum(accuracy, axis=1), l_list, s_list else: xm, lm = self.make_img(x, l, num_lm, random=0) l1, y, b = self.recurrent_forward(xm, lm) l = l1 l_list[i] = l.data return