def test_max_pool_masked(self): xval = np.random.random((100, 20, 50)).astype("float32") maskid = np.random.randint(1, 18, (100, )) mask = np.ones((xval.shape[:2])) for i in range(mask.shape[0]): mask[i, maskid[i]:] = 0 #xval[:, :, -1] = 100 x = Val(xval) x.mask = Val(mask) pool = GlobalPool1D(mode="max") pred = pool(x) predval = pred.eval() xval = xval - 1e9 * np.tensordot(1 - mask, np.ones( (xval.shape[-1], )), 0) predvalexp = np.max(xval, axis=1) self.assertTrue(np.allclose(predval, predvalexp))
def test_output_mask_strided(self): xval = np.random.random((100, 20, 50)).astype("float32") maskid = np.random.randint(3, 20, (100, )) mask = np.ones((xval.shape[:2])) for i in range(mask.shape[0]): mask[i, maskid[i]:] = 0 conv = Conv1D(indim=50, outdim=40, window=5, stride=4, border_mode="valid") x = Val(xval) x.mask = Val(mask) pred = conv(x) predmask = pred.mask print predmask.eval().shape print predmask.eval()[:5] print mask[:5]
def test_output_shape_masked(self): xval = np.random.random((100, 20, 50)).astype("float32") maskid = np.random.randint(3, 20, (100, )) mask = np.ones((xval.shape[:2])) for i in range(mask.shape[0]): mask[i, maskid[i]:] = 0 conv = Conv1D(indim=50, outdim=40, window=5) x = Val(xval) x.mask = Val(mask) pred = conv(x) predmask = pred.mask predval = pred.eval() predvalmask = (predval != 0.0) * 1 predvalexpmask = np.ones_like(predvalmask) for i in range(predvalexpmask.shape[0]): predvalexpmask[i, min(maskid[i] + 2, predvalexpmask.shape[1]):, :] = 0 self.assertTrue(np.sum(predvalexpmask - predvalmask) == 0) self.assertEqual(predval.shape[:2], xval.shape[:2]) self.assertEqual(predval.shape[2], 40)