Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from keras.datasets import mnist
- import numpy as np
- import pandas as pd
- data = mnist.load_data()
- X_train, y_train = data[0][0], data[0][1]
- X_test, y_test = data[1][0], data[1][1]
- X_train = np.expand_dims(X_train, axis = -1)
- X_test = np.expand_dims(X_test, axis = -1)
- y_train = pd.get_dummies(pd.Categorical(y_train)).values
- y_test = pd.get_dummies(pd.Categorical(y_test)).values
- class_cnt = 64
- from keras.layers import Dense, Conv2D, MaxPooling2D, GlobalAveragePooling2D,Input
- from keras.models import Model
- import numpy as np
- filter_cnt = 32
- kernel_size = (3,3)
- act_func = 'selu'
- layers = [Conv2D(filter_cnt, kernel_size,
- activation = act_func),
- MaxPooling2D(2,2),
- Conv2D(filter_cnt, kernel_size,
- activation = act_func),
- MaxPooling2D(2,2),
- Conv2D(filter_cnt, kernel_size,
- activation = act_func),
- GlobalAveragePooling2D(),
- Dense(class_cnt, activation = 'softmax')]
- output_tensor = input_tensor = Input(X_train.shape[1:])
- for layer in layers:
- output_tensor = layer(output_tensor)
- ANN = Model(inputs = input_tensor, outputs = output_tensor)
- ANN.compile(loss = 'categorical_crossentropy',
- metrics = 'accuracy', optimizer = 'adam')
- from keras.layers import Conv2D, MaxPooling2D
- from keras.layers import concatenate
- def add_inseption_module(input_tensor):
- act_func = 'relu'
- paths = [
- [Conv2D(filters = 64, kernel_size=(1,1),
- padding='same', activation=act_func)
- ],
- [Conv2D(filters = 96, kernel_size=(1,1),
- padding='same', activation=act_func),
- Conv2D(filters = 128, kernel_size=(3,3),
- padding='same', activation=act_func)
- ],
- [Conv2D(filters = 16, kernel_size=(1,1),
- padding='same', activation=act_func),
- Conv2D(filters = 32, kernel_size=(5,5),
- padding='same', activation=act_func)
- ],
- [MaxPooling2D(pool_size=(3,3),
- strides = 1, padding='same'),
- Conv2D(filters = 32, kernel_size=(1,1),
- padding='same', activation=act_func)
- ]
- ]
- for_concat = []
- for path in paths:
- output_tensor = input_tensor
- for layer in path:
- output_tensor = layer(output_tensor)
- for_concat.append(output_tensor)
- return concatenate(for_concat)
- output_tensor = input_tensor = Input(X_train.shape[1:])
- insept_module_cnt = 2
- for i in range(insept_module_cnt):
- output_tensor = add_inseption_module(output_tensor)
- output_tensor = GlobalAveragePooling2D()(output_tensor)
- output_tensor = Dense(class_cnt, activation='softmax')(output_tensor)
- ANN = Model(inputs = input_tensor, outputs = output_tensor)
- ANN.compile(loss = 'categorical_crossentropy', metrics = 'accuracy', optimizer = 'adam')
- from keras.utils.vis_utils import plot_model
- plot_model(ANN, show_shapes=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement