| 39 | return G |
| 40 | |
| 41 | def get_D(input_shape): |
| 42 | w_init = tf.random_normal_initializer(stddev=0.02) |
| 43 | gamma_init = tf.random_normal_initializer(1., 0.02) |
| 44 | df_dim = 64 |
| 45 | lrelu = lambda x: tl.act.lrelu(x, 0.2) |
| 46 | |
| 47 | nin = Input(input_shape) |
| 48 | n = Conv2d(df_dim, (4, 4), (2, 2), act=lrelu, padding='SAME', W_init=w_init)(nin) |
| 49 | |
| 50 | n = Conv2d(df_dim * 2, (4, 4), (2, 2), padding='SAME', W_init=w_init, b_init=None)(n) |
| 51 | n = BatchNorm(act=lrelu, gamma_init=gamma_init)(n) |
| 52 | n = Conv2d(df_dim * 4, (4, 4), (2, 2), padding='SAME', W_init=w_init, b_init=None)(n) |
| 53 | n = BatchNorm(act=lrelu, gamma_init=gamma_init)(n) |
| 54 | n = Conv2d(df_dim * 8, (4, 4), (2, 2), padding='SAME', W_init=w_init, b_init=None)(n) |
| 55 | n = BatchNorm(act=lrelu, gamma_init=gamma_init)(n) |
| 56 | n = Conv2d(df_dim * 16, (4, 4), (2, 2), padding='SAME', W_init=w_init, b_init=None)(n) |
| 57 | n = BatchNorm(act=lrelu, gamma_init=gamma_init)(n) |
| 58 | n = Conv2d(df_dim * 32, (4, 4), (2, 2), padding='SAME', W_init=w_init, b_init=None)(n) |
| 59 | n = BatchNorm(act=lrelu, gamma_init=gamma_init)(n) |
| 60 | n = Conv2d(df_dim * 16, (1, 1), (1, 1), padding='SAME', W_init=w_init, b_init=None)(n) |
| 61 | n = BatchNorm(act=lrelu, gamma_init=gamma_init)(n) |
| 62 | n = Conv2d(df_dim * 8, (1, 1), (1, 1), padding='SAME', W_init=w_init, b_init=None)(n) |
| 63 | nn = BatchNorm(gamma_init=gamma_init)(n) |
| 64 | |
| 65 | n = Conv2d(df_dim * 2, (1, 1), (1, 1), padding='SAME', W_init=w_init, b_init=None)(nn) |
| 66 | n = BatchNorm(act=lrelu, gamma_init=gamma_init)(n) |
| 67 | n = Conv2d(df_dim * 2, (3, 3), (1, 1), padding='SAME', W_init=w_init, b_init=None)(n) |
| 68 | n = BatchNorm(act=lrelu, gamma_init=gamma_init)(n) |
| 69 | n = Conv2d(df_dim * 8, (3, 3), (1, 1), padding='SAME', W_init=w_init, b_init=None)(n) |
| 70 | n = BatchNorm(gamma_init=gamma_init)(n) |
| 71 | n = Elementwise(combine_fn=tf.add, act=lrelu)([n, nn]) |
| 72 | |
| 73 | n = Flatten()(n) |
| 74 | no = Dense(n_units=1, W_init=w_init)(n) |
| 75 | D = Model(inputs=nin, outputs=no, name="discriminator") |
| 76 | return D |
| 77 | |
| 78 | # def get_G2(input_shape): |
| 79 | # w_init = tf.random_normal_initializer(stddev=0.02) |