Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.31 KB | None | 0 0
  1.  
  2. #========================================================================================
  3. # Network
  4.  
  5. runID = runID + 1
  6.  
  7. import keras as keras
  8. from keras import losses
  9. from keras.models import Model
  10. from keras.optimizers import SGD
  11. from keras.layers import Input, Conv2D, Activation, Concatenate, Dense, LeakyReLU, BatchNormalization, AlphaDropout, Dropout, MaxPooling2D, Conv2DTranspose, Reshape, Permute, UpSampling2D
  12. from keras.utils.vis_utils import plot_model
  13.  
  14. import tensorflow as tf
  15. from keras.utils import multi_gpu_model
  16.  
  17. initializer = 'he_uniform'
  18.  
  19. input_img = Input(shape=in_shape, name='input_img')
  20.  
  21. # Encoder
  22. encoder = Conv2D(48, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='ENC_CONV0')(input_img)
  23. encoder = LeakyReLU(alpha=0.1)(encoder)
  24. encoder = Conv2D(48, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='ENC_CONV1')(encoder)
  25. encoder = LeakyReLU(alpha=0.1)(encoder)
  26. POOL1 = MaxPooling2D((2, 2), name='POOL1') (encoder)
  27. encoder = Conv2D(48, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='ENC_CONV2')(POOL1)
  28. encoder = LeakyReLU(alpha=0.1)(encoder)
  29. POOL2 = MaxPooling2D((2, 2), name='POOL2') (encoder)
  30. encoder = Conv2D(48, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='ENC_CONV3')(POOL2)
  31. encoder = LeakyReLU(alpha=0.1)(encoder)
  32. POOL3 = MaxPooling2D((2, 2), name='POOL3') (encoder)
  33. encoder = Conv2D(48, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='ENC_CONV4')(POOL3)
  34. encoder = LeakyReLU(alpha=0.1)(encoder)
  35. POOL4 = MaxPooling2D((2, 2), name='POOL4') (encoder)
  36. encoder = Conv2D(48, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='ENC_CONV5')(POOL4)
  37. encoder = LeakyReLU(alpha=0.1)(encoder)
  38. encoder = MaxPooling2D((2, 2), name='POOL5') (encoder)
  39. encoder = Conv2D(48, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='ENC_CONV6')(encoder)
  40. encoder = LeakyReLU(alpha=0.1)(encoder)
  41.  
  42. # Decoder
  43. decoder = UpSampling2D((2, 2), name='UPSAMPLE5')(encoder)
  44. decoder = keras.layers.concatenate([decoder,POOL4], name='CONCAT5')
  45. decoder = Conv2D(96, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV5A')(decoder)
  46. decoder = LeakyReLU(alpha=0.1)(decoder)
  47. decoder = Conv2D(96, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV5B')(decoder)
  48. decoder = LeakyReLU(alpha=0.1)(decoder)
  49. decoder = UpSampling2D((2, 2), name='UPSAMPLE4')(decoder)
  50. decoder = keras.layers.concatenate([decoder,POOL3], name='CONCAT4')
  51. decoder = Conv2D(96, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV4A')(decoder)
  52. decoder = LeakyReLU(alpha=0.1)(decoder)
  53. decoder = Conv2D(96, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV4B')(decoder)
  54. decoder = LeakyReLU(alpha=0.1)(decoder)
  55. decoder = UpSampling2D((2, 2), name='UPSAMPLE3')(decoder)
  56. decoder = keras.layers.concatenate([decoder,POOL2], name='CONCAT3')
  57. decoder = Conv2D(96, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV3A')(decoder)
  58. decoder = LeakyReLU(alpha=0.1)(decoder)
  59. decoder = Conv2D(96, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV3B')(decoder)
  60. decoder = LeakyReLU(alpha=0.1)(decoder)
  61. decoder = UpSampling2D((2, 2), name='UPSAMPLE2')(decoder)
  62. decoder = keras.layers.concatenate([decoder,POOL1], name='CONCAT2')
  63. decoder = Conv2D(96, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV2A')(decoder)
  64. decoder = LeakyReLU(alpha=0.1)(decoder)
  65. decoder = Conv2D(96, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV2B')(decoder)
  66. decoder = LeakyReLU(alpha=0.1)(decoder)
  67. decoder = UpSampling2D((2, 2), name='UPSAMPLE1')(decoder)
  68. decoder = keras.layers.concatenate([decoder,input_img], name='CONCAT1')
  69. decoder = Conv2D(64, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV1A')(decoder)
  70. decoder = LeakyReLU(alpha=0.1)(decoder)
  71. decoder = Conv2D(32, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV1B')(decoder)
  72. decoder = LeakyReLU(alpha=0.1)(decoder)
  73. decoder = Conv2D(1, kernel_size=3, strides=1, padding='same', kernel_initializer=initializer, name='DEC_CONV1C')(decoder)
  74. decoder = LeakyReLU(alpha=0.1)(decoder)
  75.  
  76. with tf.device('/cpu:0'):
  77. model = Model(input_img, decoder)
  78.  
  79. parallel_model = multi_gpu_model(model, gpus=2)
  80.  
  81.  
  82. # Optimizer:
  83. optimizer = keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.99, epsilon=1e-8)
  84.  
  85. # Compile:
  86. parallel_model.compile(loss=losses.mean_squared_logarithmic_error, optimizer=optimizer)
  87. parallel_model.summary()
  88.  
  89. #plot_model(model, to_file='./Graphs/'+str(runID)+'.png', show_shapes=True, show_layer_names=True)
  90.  
  91. # Hyperparameters
  92. batch_size = 128
  93. epochs = 100
  94. validation_split = 0.2
  95.  
  96. runID = runID + 1
  97.  
  98. # Tensorboard
  99. tbCallBack = keras.callbacks.TensorBoard(log_dir='./Graphs/'+str(runID), histogram_freq=0, write_graph=True, write_images=True)
  100.  
  101. # Modify inputs
  102. x_train = x
  103. y_train = y
  104.  
  105. history = parallel_model.fit(x_train, y_train, callbacks=[tbCallBack], epochs=epochs, batch_size=batch_size, validation_split=validation_split)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement