Files
Stomach_Cancer_Pytorch/experiments/topic_model.py

298 lines
11 KiB
Python

from convolution_model_tools.convolution_2D_tools import model_2D_tool
from dense_model_tools.dense_tools import model_Dense_Layer
from all_models_tools.all_model_tools import add_optimizers_function, add_Activative, add_dropout, call_back
from keras.activations import softmax, sigmoid
from keras.applications import VGG19, ResNet50, NASNetLarge, DenseNet201, Xception
from keras.applications.efficientnet_v2 import EfficientNetV2L
from keras.layers import BatchNormalization, Flatten, GlobalAveragePooling2D, MaxPooling2D, Dense, Conv2D, Dropout, TimeDistributed, LSTM, Input
from keras import regularizers
def one_layer_cnn_model():
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
img_Input = tools.add_2D_input()
x = tools.add_Convolution2D(img_Input, 32)
x = add_Activative(x)
x = tools.add_MaxPooling(x)
x = tools.add_Convolution2D(x, 64)
x = add_Activative(x)
x = tools.add_MaxPooling(x)
flatter = tools.add_flatten(x)
dense = dense_tool.add_dense(64, flatter)
dense = add_Activative(dense)
dense = dense_tool.add_dense(32, dense)
dense = add_Activative(dense)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return img_Input, dense
def find_example_cnn_model():
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
img_Input = tools.add_2D_input()
x = tools.add_Convolution2D(img_Input, 16)
x = add_Activative(x)
x = add_dropout(x, 0.25)
x = tools.add_Convolution2D(x, 32)
x = add_Activative(x)
x = add_dropout(x, 0.25)
x = tools.add_MaxPooling(x)
x = tools.add_Convolution2D(x, 64)
x = add_Activative(x)
x = add_dropout(x, 0.25)
x = tools.add_MaxPooling(x)
x = tools.add_Convolution2D(x, 128)
x = add_Activative(x)
x = add_dropout(x, 0.25)
x = tools.add_MaxPooling(x)
flatter = tools.add_flatten(x)
dense = dense_tool.add_dense(64, flatter)
dense = add_Activative(dense)
dense = add_dropout(dense, 0.25)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, sigmoid)
return img_Input, dense
def change_example_cnn_model():
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
img_Input = tools.add_2D_input()
x = tools.add_Convolution2D(img_Input, 16)
x = add_Activative(x)
x = tools.add_batchnomlization(x)
x = tools.add_Convolution2D(x, 32)
x = add_Activative(x)
x = tools.add_batchnomlization(x)
x = tools.add_MaxPooling(x)
x = tools.add_Convolution2D(x, 64)
x = add_Activative(x)
x = tools.add_batchnomlization(x)
x = tools.add_MaxPooling(x)
x = tools.add_Convolution2D(x, 128)
x = add_Activative(x)
x = tools.add_batchnomlization(x)
x = tools.add_MaxPooling(x)
flatter = tools.add_flatten(x)
dense = dense_tool.add_dense(64, flatter)
dense = add_Activative(dense)
dense = add_dropout(dense, 0.3)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return img_Input, dense
def two_convolution_cnn_model():
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
img_Input = tools.add_2D_input()
x = tools.add_two_floors_convolution2D(img_Input, 32)
x = tools.add_MaxPooling(x)
x = tools.add_two_floors_convolution2D(x, 64)
x = tools.add_MaxPooling(x)
flatter = tools.add_flatten(x)
dense = dense_tool.add_dense(64, flatter)
dense = add_Activative(dense)
dense = dense_tool.add_dense(32, dense)
dense = add_Activative(dense)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return img_Input, dense
def VGG19_model():
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
vgg19 = VGG19(include_top = False, weights = "imagenet", input_shape = (120, 120, 3))
flatten = tools.add_flatten(vgg19.output)
dense = dense_tool.add_dense(64, flatten)
dense = add_Activative(dense)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return vgg19, dense
def Resnet50_model():
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
vgg19 = ResNet50(include_top = False, weights = "imagenet", input_shape = (120, 120, 3))
flatten = tools.add_flatten(vgg19.output)
dense = dense_tool.add_dense(64, flatten)
dense = add_Activative(dense)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return vgg19, dense
def DenseNet201_model():
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
Densenet201 = DenseNet201(include_top = False, weights = "imagenet", input_shape = (120, 120, 3))
flatten = tools.add_flatten(Densenet201.output)
dense = dense_tool.add_dense(64, flatten)
dense = add_Activative(dense)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return Densenet201, dense
def Xception_model():
xception = Xception(include_top = False, weights = "imagenet", input_shape = (120, 120, 3))
flatten = Flatten()(xception.output)
dense = Dense(units = 64, activation = "relu")(flatten)
dense = Dense(units = 7, activation = "softmax")(dense)
return xception, dense
def cnn_LSTM():
head = Input(shape = (150, 150, 3))
inputs = Conv2D(filters = 64, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(head)
inputs = Conv2D(filters = 64, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = MaxPooling2D(strides = 2, pool_size = (2, 2))(inputs)
inputs = Dropout(0.25)(inputs)
inputs = Conv2D(filters = 128, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = Conv2D(filters = 128, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = MaxPooling2D(strides = 2, pool_size = (2, 2))(inputs)
inputs = Dropout(0.25)(inputs)
inputs = Conv2D(filters = 256, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = Conv2D(filters = 256, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = MaxPooling2D(strides = 2, pool_size = (2, 2))(inputs)
inputs = Dropout(0.25)(inputs)
inputs = Conv2D(filters = 512, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = Conv2D(filters = 512, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = Conv2D(filters = 512, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = MaxPooling2D(strides = 2, pool_size = (2, 2))(inputs)
inputs = Dropout(0.25)(inputs)
inputs = Conv2D(filters = 512, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = Conv2D(filters = 512, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = Conv2D(filters = 512, strides = 1, kernel_size = (3, 3), padding = "same", activation = "relu")(inputs)
inputs = MaxPooling2D(strides = 2, pool_size = (2, 2))(inputs)
inputs = Dropout(0.25)(inputs)
inputs = TimeDistributed(Flatten())(inputs)
inputs = LSTM(units = 49)(inputs)
inputs = Dense(units = 64)(inputs)
output = Dense(units = 7, activation = "softmax")(inputs)
return head, output
def add_regularizers_L1(): # 比較正規化
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
Resnet50 = ResNet50(include_top = False, weights = "imagenet", input_shape = (120, 120, 3))
flatten = tools.add_flatten(Resnet50.output)
dense = dense_tool.add_regularizer_dense(64, flatten, regularizers.L1())
dense = add_Activative(dense)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return Resnet50, dense
def add_regularizers_L2(): # 比較正規化
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
Resnet50 = ResNet50(include_top = False, weights = "imagenet", input_shape = (120, 120, 3))
flatten = tools.add_flatten(Resnet50.output)
dense = dense_tool.add_regularizer_dense(64, flatten, regularizers.L2())
dense = add_Activative(dense)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return Resnet50, dense
def add_regularizers_L1L2(): # 比較正規化
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
Resnet50 = ResNet50(include_top = False, weights = "imagenet", input_shape = (120, 120, 3))
flatten = tools.add_flatten(Resnet50.output)
dense = dense_tool.add_regularizer_dense(64, flatten, regularizers.L1L2())
dense = add_Activative(dense)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return Resnet50, dense
def add_layers1_L2(Dense_layers): # 比較正規化
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
layers = 32
Densenet201 = DenseNet201(include_top = False, weights = "imagenet", input_shape = (120, 120, 3))
flatten = tools.add_flatten(Densenet201.output)
for layer in range(Dense_layers):
dense = dense_tool.add_regularizer_kernel_dense(unit = layers, input_data = flatten, regularizer = regularizers.L2())
dense = add_Activative(dense)
layers *= 2
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return Densenet201, dense
def add_layers_another_L2(Dense_layers, layers): # 比較正規化
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
Densenet201 = DenseNet201(include_top = False, weights = "imagenet", input_shape = (120, 120, 3))
flatten = tools.add_flatten(Densenet201.output)
for layer in range(Dense_layers):
dense = dense_tool.add_regularizer_dense(unit = layers, input_data = flatten, regularizer = regularizers.L2())
dense = add_Activative(dense)
layers /= 2
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return Densenet201, dense
def add_bias_regularizers(): # 比較正規化
tools = model_2D_tool()
dense_tool = model_Dense_Layer()
Resnet50 = ResNet50(include_top = False, weights = "imagenet", input_shape = (120, 120, 3))
flatten = tools.add_flatten(Resnet50.output)
dense = dense_tool.add_regularizer_bias_dense(64, flatten, regularizers.L2())
dense = add_Activative(dense)
dense = dense_tool.add_dense(7, dense)
dense = add_Activative(dense, softmax)
return Resnet50, dense