(N=1)
| 2324 | |
| 2325 | |
| 2326 | def test_WGAN_GP(N=1): |
| 2327 | from numpy_ml.neural_nets.models.wgan_gp import WGAN_GP |
| 2328 | |
| 2329 | np.random.seed(12345) |
| 2330 | |
| 2331 | ss = np.random.randint(0, 1000) |
| 2332 | np.random.seed(ss) |
| 2333 | |
| 2334 | N = np.inf if N is None else N |
| 2335 | |
| 2336 | i = 1 |
| 2337 | while i < N + 1: |
| 2338 | c_updates_per_epoch, n_steps = 1, 1 |
| 2339 | n_ex = np.random.randint(1, 500) |
| 2340 | n_in = np.random.randint(1, 100) |
| 2341 | lambda_ = np.random.randint(0, 20) |
| 2342 | g_hidden = np.random.randint(2, 500) |
| 2343 | X = random_tensor((n_ex, n_in), standardize=True) |
| 2344 | |
| 2345 | # initialize WGAN_GP model |
| 2346 | L1 = WGAN_GP(g_hidden=g_hidden, debug=True) |
| 2347 | |
| 2348 | # forward prop |
| 2349 | batchsize = n_ex |
| 2350 | L1.fit( |
| 2351 | X, |
| 2352 | lambda_=lambda_, |
| 2353 | c_updates_per_epoch=c_updates_per_epoch, |
| 2354 | n_steps=n_steps, |
| 2355 | batchsize=batchsize, |
| 2356 | ) |
| 2357 | |
| 2358 | # backprop |
| 2359 | dv = L1.derived_variables |
| 2360 | params = L1.parameters["components"] |
| 2361 | grads = L1.gradients["components"] |
| 2362 | params["noise"] = dv["noise"] |
| 2363 | params["alpha"] = dv["alpha"] |
| 2364 | params["n_in"] = n_in |
| 2365 | params["g_hidden"] = g_hidden |
| 2366 | params["c_updates_per_epoch"] = c_updates_per_epoch |
| 2367 | params["n_steps"] = n_steps |
| 2368 | |
| 2369 | # get gold standard gradients |
| 2370 | golds = WGAN_GP_tf(X, lambda_=lambda_, batch_size=batchsize, params=params) |
| 2371 | |
| 2372 | params = [ |
| 2373 | (dv["X_real"], "X_real"), |
| 2374 | (params["generator"]["FC1"]["W"], "G_weights_FC1"), |
| 2375 | (params["generator"]["FC2"]["W"], "G_weights_FC2"), |
| 2376 | (params["generator"]["FC3"]["W"], "G_weights_FC3"), |
| 2377 | (params["generator"]["FC4"]["W"], "G_weights_FC4"), |
| 2378 | (dv["G_fwd_X_fake"]["FC1"], "G_fwd_X_fake_FC1"), |
| 2379 | (dv["G_fwd_X_fake"]["FC2"], "G_fwd_X_fake_FC2"), |
| 2380 | (dv["G_fwd_X_fake"]["FC3"], "G_fwd_X_fake_FC3"), |
| 2381 | (dv["G_fwd_X_fake"]["FC4"], "G_fwd_X_fake_FC4"), |
| 2382 | (dv["X_fake"], "X_fake"), |
| 2383 | (dv["X_interp"], "X_interp"), |
nothing calls this directly
no test coverage detected