File size: 3,922 Bytes
1ce3c00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import keras 
import tensorflow as tf
from keras.models import Model
#rom keras.models import Input
from keras.layers import Conv2D,Input
from keras.layers import Conv2DTranspose
from keras.layers import LeakyReLU
from keras.layers import Activation
from keras.layers import Concatenate
from keras.layers import Dropout
from keras.layers import BatchNormalization
from matplotlib import pyplot as plt
from keras.initializers import RandomNormal
from keras.layers import concatenate,MaxPooling2D

#model architecture

def Generator(x=256,y=256,z=3):
    inputs=tf.keras.Input(shape=(x,y,z))
    init = RandomNormal(stddev=0.02)
    c1=Conv2D(64,(4,4),strides=(2,2),activation="relu",kernel_initializer=init,padding="same")(inputs)
    c1=LeakyReLU(alpha=0.2)(c1)#(64,64,64)

    c2 = Conv2D(128, (4,4),strides=(2,2), kernel_initializer=init, padding='same')(c1)
    c2=BatchNormalization()(c2,training=True)#(128,32,32)
    c2=LeakyReLU(alpha=0.2)(c2)

    c3 = Conv2D(256 ,(4,4), strides=(2,2) ,kernel_initializer=init, padding='same')(c2)
    c3=BatchNormalization()(c3,training=True)#(256,16,16)
    c3=LeakyReLU(alpha=0.2)(c3)

    c4 = Conv2D(512, (4,4), strides=(2,2), kernel_initializer=init, padding='same')(c3)
    c4=BatchNormalization()(c4,training=True)#(512,8,8)
    c4=LeakyReLU(alpha=0.2)(c4)

    c5 = Conv2D(512, (4,4),strides=(2,2),  kernel_initializer=init, padding='same')(c4)
    c5=BatchNormalization()(c5,training=True)#512,4,4
    c5=LeakyReLU(alpha=0.2)(c5)  

    c6 = Conv2D(512, (4,4), strides=(2,2),kernel_initializer=init, padding='same')(c5)
    c6=BatchNormalization()(c6,training=True)#512,2,2
    c6=LeakyReLU(alpha=0.2)(c6)  

    c7 = Conv2D(512, (4,4), strides=(2,2), kernel_initializer=init, padding='same')(c6)
    c7=BatchNormalization()(c7,training=True)#512,1,1
    c7=LeakyReLU(alpha=0.2)(c7)  

    #b = Conv2D(512, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(c7)
    #b = Activation('relu')(c7)  

    d1 = Conv2DTranspose(512, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(c7)
    d1=BatchNormalization()(d1,training=True)#512*2*2
    d1=Dropout(0.5)(d1,training=True)
    d1=Concatenate()([d1, c6])   
    d1=Activation("relu")(d1)

    d2 =Conv2DTranspose(512, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d1)
    d2=BatchNormalization()(d2,training=True)#512*4*4
    d2=Dropout(0.5)(d2,training=True)
    d2=Concatenate()([d2,c5])  
    d2=Activation("relu")(d2)

    d3 = Conv2DTranspose(512, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d2)
    d3=BatchNormalization()(d3,training=True)#512*8*8
    d3=Dropout(0.5)(d3,training=True)
    d3=Concatenate()([d3, c4])   
    d3=Activation("relu")(d3)

    d4 = Conv2DTranspose(512, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d3)
    d4=BatchNormalization()(d4,training=True)#512*16*16
    #d4=Dropout(0.5)(d4,training=True)
    d4=Concatenate()([d4, c3])   
    d4=Activation("relu")(d4) 

    d5 = Conv2DTranspose(256, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d4)
    d5=BatchNormalization()(d5,training=True)#256*32*32
    #d5=Dropout(0.5)(d5,training=True)
    d5=Concatenate()([d5, c2])   
    d5=Activation("relu")(d5) 

    d6 = Conv2DTranspose(128, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d5)
    d6=BatchNormalization()(d6,training=True)#128*64*64
    #d6=Dropout(0.5)(d6,training=True)
    d6=Concatenate()([d6, c1])   
    d6=Activation("relu")(d6)     

    #d7 = Conv2DTranspose(64, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d6)
    #d7=BatchNormalization()(d7,training=True)
    #d7=Concatenate()([d7, c1])   
    #$d7=Activation("relu")(d7)    

    f = Conv2DTranspose(3, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d6) 
    out_image = Activation('tanh')(f) #3,128,128

    model = Model(inputs, out_image)
    return model