Advertisement
mikolajmki

si_lab09

Dec 1st, 2022
777
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.76 KB | None | 0 0
  1. from keras.datasets import mnist
  2. import numpy as np
  3. import pandas as pd
  4. data = mnist.load_data()
  5. X_train, y_train = data[0][0], data[0][1]
  6. X_test, y_test = data[1][0], data[1][1]
  7. X_train = np.expand_dims(X_train, axis = -1)
  8. X_test = np.expand_dims(X_test, axis = -1)
  9. y_train = pd.get_dummies(pd.Categorical(y_train)).values
  10. y_test = pd.get_dummies(pd.Categorical(y_test)).values
  11. class_cnt = 64
  12.  
  13. from keras.layers import Dense, Conv2D, MaxPooling2D, GlobalAveragePooling2D,Input
  14. from keras.models import Model
  15. import numpy as np
  16. filter_cnt = 32
  17. kernel_size = (3,3)
  18. act_func = 'selu'
  19. layers = [Conv2D(filter_cnt, kernel_size,
  20.  activation = act_func),
  21.  MaxPooling2D(2,2),
  22.  Conv2D(filter_cnt, kernel_size,
  23.  activation = act_func),
  24.  MaxPooling2D(2,2),
  25.  Conv2D(filter_cnt, kernel_size,
  26.  activation = act_func),
  27.  GlobalAveragePooling2D(),
  28.  Dense(class_cnt, activation = 'softmax')]
  29. output_tensor = input_tensor = Input(X_train.shape[1:])
  30. for layer in layers:
  31.  output_tensor = layer(output_tensor)
  32. ANN = Model(inputs = input_tensor, outputs = output_tensor)
  33. ANN.compile(loss = 'categorical_crossentropy',
  34.  metrics = 'accuracy', optimizer = 'adam')
  35.  
  36. from keras.layers import Conv2D, MaxPooling2D
  37. from keras.layers import concatenate
  38. def add_inseption_module(input_tensor):
  39.      act_func = 'relu'
  40.      paths = [
  41.         [Conv2D(filters = 64, kernel_size=(1,1),
  42.         padding='same', activation=act_func)
  43.         ],
  44.         [Conv2D(filters = 96, kernel_size=(1,1),
  45.         padding='same', activation=act_func),
  46.         Conv2D(filters = 128, kernel_size=(3,3),
  47.         padding='same', activation=act_func)
  48.         ],
  49.         [Conv2D(filters = 16, kernel_size=(1,1),
  50.         padding='same', activation=act_func),
  51.         Conv2D(filters = 32, kernel_size=(5,5),
  52.         padding='same', activation=act_func)
  53.         ],
  54.         [MaxPooling2D(pool_size=(3,3),
  55.         strides = 1, padding='same'),
  56.         Conv2D(filters = 32, kernel_size=(1,1),
  57.         padding='same', activation=act_func)
  58.         ]
  59.      ]
  60.      for_concat = []
  61.      for path in paths:
  62.         output_tensor = input_tensor
  63.         for layer in path:
  64.             output_tensor = layer(output_tensor)
  65.         for_concat.append(output_tensor)
  66.         return concatenate(for_concat)
  67. output_tensor = input_tensor = Input(X_train.shape[1:])
  68. insept_module_cnt = 2
  69. for i in range(insept_module_cnt):
  70.  output_tensor = add_inseption_module(output_tensor)
  71. output_tensor = GlobalAveragePooling2D()(output_tensor)
  72. output_tensor = Dense(class_cnt, activation='softmax')(output_tensor)
  73. ANN = Model(inputs = input_tensor, outputs = output_tensor)
  74. ANN.compile(loss = 'categorical_crossentropy', metrics = 'accuracy', optimizer = 'adam')
  75. from keras.utils.vis_utils import plot_model
  76. plot_model(ANN, show_shapes=True)
  77.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement