(N=15)
| 145 | |
| 146 | |
| 147 | def test_VAE_loss(N=15): |
| 148 | from numpy_ml.neural_nets.losses import VAELoss |
| 149 | |
| 150 | np.random.seed(12345) |
| 151 | |
| 152 | N = np.inf if N is None else N |
| 153 | eps = np.finfo(float).eps |
| 154 | |
| 155 | i = 1 |
| 156 | while i < N: |
| 157 | n_ex = np.random.randint(1, 10) |
| 158 | t_dim = np.random.randint(2, 10) |
| 159 | t_mean = random_tensor([n_ex, t_dim], standardize=True) |
| 160 | t_log_var = np.log(np.abs(random_tensor([n_ex, t_dim], standardize=True) + eps)) |
| 161 | im_cols, im_rows = np.random.randint(2, 40), np.random.randint(2, 40) |
| 162 | X = np.random.rand(n_ex, im_rows * im_cols) |
| 163 | X_recon = np.random.rand(n_ex, im_rows * im_cols) |
| 164 | |
| 165 | mine = VAELoss() |
| 166 | mine_loss = mine(X, X_recon, t_mean, t_log_var) |
| 167 | dX_recon, dLogVar, dMean = mine.grad(X, X_recon, t_mean, t_log_var) |
| 168 | golds = TorchVAELoss().extract_grads(X, X_recon, t_mean, t_log_var) |
| 169 | |
| 170 | params = [ |
| 171 | (mine_loss, "loss"), |
| 172 | (dX_recon, "dX_recon"), |
| 173 | (dLogVar, "dt_log_var"), |
| 174 | (dMean, "dt_mean"), |
| 175 | ] |
| 176 | print("\nTrial {}".format(i)) |
| 177 | for ix, (mine, label) in enumerate(params): |
| 178 | np.testing.assert_allclose( |
| 179 | mine, |
| 180 | golds[label], |
| 181 | err_msg=err_fmt(params, golds, ix), |
| 182 | rtol=0.1, |
| 183 | atol=1e-2, |
| 184 | ) |
| 185 | print("\tPASSED {}".format(label)) |
| 186 | i += 1 |
| 187 | |
| 188 | |
| 189 | def test_WGAN_GP_loss(N=5): |
nothing calls this directly
no test coverage detected