@@ 63-80 (lines=18) @@ | ||
60 | glimpse_3 = theano.tensor.signal.downsample.max_pool_2d(glimpse_3, (4,4)) |
|
61 | return T.concatenate([glimpse_1, glimpse_2, glimpse_3]) |
|
62 | ||
63 | def _refined_glimpse_sensor(self, x_t, l_p): |
|
64 | """ |
|
65 | Parameters: |
|
66 | x_t - 28x28 image |
|
67 | l_p - 2x1 focus vector |
|
68 | Returns: |
|
69 | 7*14 matrix |
|
70 | """ |
|
71 | # Turn l_p to the left-top point of rectangle |
|
72 | l_p = l_p * 14 + 14 - 4 |
|
73 | l_p = T.cast(T.round(l_p), "int32") |
|
74 | ||
75 | l_p = l_p * (l_p >= 0) |
|
76 | l_p = l_p * (l_p < 21) + (l_p >= 21) * 20 |
|
77 | glimpse_1 = x_t[l_p[0]: l_p[0] + 7][:, l_p[1]: l_p[1] + 7] |
|
78 | # glimpse_2 = theano.tensor.signal.downsample.max_pool_2d(x_t, (4,4)) |
|
79 | # return T.concatenate([glimpse_1, glimpse_2]) |
|
80 | return glimpse_1 |
|
81 | ||
82 | def _multi_gaussian_pdf(self, vec, mean): |
|
83 | norm2d_var = ((1.0 / T.sqrt((2*np.pi)**2 * self.cov_det_var)) * |
@@ 55-70 (lines=16) @@ | ||
52 | first_l = sampled_l_t |
|
53 | return first_l, wf_grad |
|
54 | ||
55 | def _refined_glimpse_sensor(self, x_t, l_p): |
|
56 | """ |
|
57 | Parameters: |
|
58 | x_t - 28x28 image |
|
59 | l_p - 2x1 focus vector |
|
60 | Returns: |
|
61 | 7*14 matrix |
|
62 | """ |
|
63 | # Turn l_p to the left-top point of rectangle |
|
64 | l_p = l_p * 6.67 + 14 - 4 |
|
65 | l_p = T.cast(T.round(l_p), "int32") |
|
66 | ||
67 | l_p = l_p * (l_p >= 0) |
|
68 | l_p = l_p * (l_p < 21) + (l_p >= 21) * 20 |
|
69 | glimpse_1 = x_t[l_p[0]: l_p[0] + 7][:, l_p[1]: l_p[1] + 7] |
|
70 | return glimpse_1 |
|
71 | ||
72 | def _multi_gaussian_pdf(self, vec, mean): |
|
73 | norm2d_var = ((1.0 / T.sqrt((2*np.pi)**2 * self.cov_det_var)) * |