コード例 #1
0
    def build_model(self, input_dim):

        input1 = Input(shape=(input_dim, ))
        input2 = Input((config.img_x, config.img_y, 1))
        input3 = Input((config.img_x, config.img_y, 1))

        # 一维特征深度网络
        x1 = Dense(32, activation='relu')(input1)
        x1 = Dropout(0.15)(x1)
        x1 = Dense(8, activation='relu')(x1)

        ## s/n 矩阵特征卷积网络
        x2 = ResnetBuilder.build_resnet_18(input2, 2)
        #x2 = Conv2D(2, (3, 3), padding='same')(input2) # 62*62*8
        #x2 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x2) # 31*31*8
        #x2 = Conv2D(4, (3, 3), padding='same')(x2) # 29*29*16
        #x2 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x2) # 15*15*16
        #x2 = Conv2D(4, (3, 3), padding='same')(x2) # 13*13*32
        #x2 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x2) # 7*7*32
        #x2 = Conv2D(16, (3, 3), padding='same')(x2) # 5*5*32
        #x2 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x2) # 3*3*32
        #x2 = Flatten()(x2)
        #x2 = Dense(32, activation='relu')(x2)
        #x2 = Dropout(0.15)(x2)
        #x2 = Dense(8, activation='relu')(x2)

        ## s/n 矩阵特征卷积网络
        x3 = ResnetBuilder.build_resnet_18(input3, 2)
        #x3 = Conv2D(2, (3, 3), padding='same')(input3) # 62*62*8
        #x3 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x3) # 31*31*8
        #x3 = Conv2D(4, (3, 3), padding='same')(x3) # 29*29*16
        #x3 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x3) # 15*15*16
        #x3 = Conv2D(4, (3, 3), padding='same')(x3) # 13*13*32
        #x3 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x3) # 7*7*32
        #x3 = Conv2D(16, (3, 3), padding='same')(x3) # 5*5*32
        #x3 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x3) # 3*3*16
        #x3 = Flatten()(x3)
        #x3 = Dense(32, activation='relu')(x3)
        #x3 = Dropout(0.15)(x3)
        #x3 = Dense(8, activation='relu')(x3)

        top_tensor = concatenate([x1, x2], axis=1)
        top_tensor = Dense(8, activation='relu')(top_tensor)
        top_tensor = Dropout(0.15)(top_tensor)
        top_tensor = Dense(2, activation='softmax')(top_tensor)

        #self.model = ResnetBuilder.build_resnet_18((config.img_x,config.img_y,1),2)
        self.model = Model(inputs=[input1, input2, input3], outputs=top_tensor)
        # self.model = Model(inputs=[ input1], outputs=top_tensor)
        sgd = keras.optimizers.SGD(lr=0.001,
                                   momentum=0.9,
                                   decay=0.00001,
                                   nesterov=False)
        adam = keras.optimizers.Adam(lr=0.0001,
                                     beta_1=0.9,
                                     beta_2=0.999,
                                     epsilon=1e-8)
        self.model.compile(loss="categorical_crossentropy",
                           optimizer=adam,
                           metrics=["acc"])
コード例 #2
0
 def _build_model(self, name, optimizer=None):
     from resnet import ResnetBuilder
     """build model from scratch"""
     # input: (channel, row, col) -> (1, episode_days, ticker)
     # output: action probability
     _model = ResnetBuilder.build_resnet_18(input_shape=(1,
                                                         self._episode_days,
                                                         self._feature_num),
                                            num_outputs=2)
     logger.debug('built trade model[{name}]'.format(name=name))
     # ResnetBuilder.check_model(_model, name=name)
     if not optimizer:
         import keras
         optimizer = keras.optimizers.SGD(lr=0.01, momentum=0.9)
     _model.compile(
         optimizer=optimizer,
         loss={
             'policy_header': 'cosine_proximity',
             'value_header': 'mean_squared_error',
         },
         metrics={
             'policy_header': ['mse', 'acc'],
             'value_header': ['mse'],
         },
     )
     logger.debug('compiled trade model[{name}]'.format(name=name))
     return _model
コード例 #3
0
def get_resnet_18():
    from resnet import ResnetBuilder

    model = ResnetBuilder.build_resnet_18(input_shape=(3, 75, 75),
                                          num_outputs=2,
                                          filters=8,
                                          weight_decay=0.)

    return model
コード例 #4
0
def my_assessor_model(mouth_nn='cnn', mouth_features_dim=512, lstm_units_1=32, dense_fc_1=128, dense_fc_2=64,
                      conv_f_1=32, conv_f_2=64, conv_f_3=128, dropout_p=0.2):

    mouth_input_shape = (MOUTH_H, MOUTH_W, MOUTH_CHANNELS)
    my_input_mouth_images = Input(shape=(TIME_STEPS, *mouth_input_shape))
    my_input_head_poses = Input(shape=(TIME_STEPS, 3))
    my_input_n_of_frames = Input(shape=(1,))
    my_input_lipreader_dense = Input(shape=(1024,))
    my_input_lipreader_softmax = Input(shape=(500,))

    if mouth_nn == 'cnn':
        mouth_feature_model = my_timedistributed_cnn_model((TIME_STEPS, *mouth_input_shape), conv_f_1, conv_f_2, conv_f_3, mouth_features_dim)
    elif mouth_nn == 'resnet18':
        mouth_feature_model = ResnetBuilder.build_resnet_18((TIME_STEPS, *mouth_input_shape), mouth_features_dim, time_distributed=True)
    elif mouth_nn == 'resnet34':
        mouth_feature_model = ResnetBuilder.build_resnet_34((TIME_STEPS, *mouth_input_shape), mouth_features_dim, time_distributed=True)
    elif mouth_nn == 'resnet50':
        mouth_feature_model = ResnetBuilder.build_resnet_50((TIME_STEPS, *mouth_input_shape), mouth_features_dim, time_distributed=True)
    elif mouth_nn == 'resnet101':
        mouth_feature_model = ResnetBuilder.build_resnet_101((TIME_STEPS, *mouth_input_shape), mouth_features_dim, time_distributed=True)
    elif mouth_nn == 'resnet152':
        mouth_feature_model = ResnetBuilder.build_resnet_152((TIME_STEPS, *mouth_input_shape), mouth_features_dim, time_distributed=True)
    elif mouth_nn == 'flatten':
        mouth_feature_model = Reshape((TIME_STEPS, -1), input_shape=(TIME_STEPS, *mouth_input_shape))

    cnn_features = mouth_feature_model(my_input_mouth_images)

    lstm_input = Concatenate()([cnn_features, my_input_head_poses])

    lstm_output = LSTM(lstm_units_1, activation='tanh', kernel_regularizer=l2(1.e-4), return_sequences=False)(lstm_input)

    concatenated_features = Concatenate()([lstm_output, my_input_n_of_frames, my_input_lipreader_dense, my_input_lipreader_softmax])

    fc1 = Dense(dense_fc_1, activation='relu', kernel_regularizer=l2(1.e-4))(concatenated_features)

    bn1 = BatchNormalization()(fc1)

    dp1 = Dropout(dropout_p)(bn1)

    fc2 = Dense(dense_fc_2, activation='relu', kernel_regularizer=l2(1.e-4))(dp1)

    bn2 = BatchNormalization()(fc2)

    dp2 = Dropout(dropout_p)(bn2)

    assessor_output = Dense(1, activation='sigmoid')(dp2)

    assessor = Model(inputs=[my_input_mouth_images, my_input_head_poses, my_input_n_of_frames, my_input_lipreader_dense, my_input_lipreader_softmax],
                     outputs=assessor_output)

    assessor.summary()

    return assessor
コード例 #5
0
def get_model(model, ishape, nb_classes):
    "Return proper ResNet model"
    if model.endswith('18'):
        model = ResnetBuilder.build_resnet_18(ishape, nb_classes)
    elif model.endswith('34'):
        model = ResnetBuilder.build_resnet_34(ishape, nb_classes)
    elif model.endswith('50'):
        model = ResnetBuilder.build_resnet_50(ishape, nb_classes)
    elif model.endswith('101'):
        model = ResnetBuilder.build_resnet_101(ishape, nb_classes)
    elif model.endswith('152'):
        model = ResnetBuilder.build_resnet_152(ishape, nb_classes)
    else:
        return NotImplemented()
    return model
コード例 #6
0
ファイル: model.py プロジェクト: ftyuuu/RS_classification
 def build(self):
     
     if self.model_name == "resnet":
         original_resnet = self.kwargs.setdefault("original_resnet", False);
         if original_resnet:
             print("Warning: you are using original resnet");
         self.model = ResnetBuilder.build_resnet_18(self.input_shape, self.classes, original_resnet=original_resnet);
     
     if self.model_name == "unet":
         class_mode = self.kwargs.setdefault("class_mode", "categorical");
         self.model = UnetBuilder.build(self.input_shape, [64, 128, 256, 512, 1024], self.classes, class_mode=class_mode);
     
     self.model.summary();
     if self.load_weights is not None:
         print("Loading weights: ", self.load_weights);
         self.model.load_weights(self.load_weights);
コード例 #7
0
ファイル: network.py プロジェクト: jefequien/miniplaces
    def build_resnet(self, model_name, lr):
        input_shape = (128, 128, 3)
        num_outputs = 100
        model = None
        if model_name == "resnet18":
            model = ResnetBuilder.build_resnet_18(input_shape, num_outputs)
        elif model_name == "resnet34":
            model = ResnetBuilder.build_resnet_34(input_shape, num_outputs)
        elif model_name == "resnet50":
            model = ResnetBuilder.build_resnet_50(input_shape, num_outputs)
        elif model_name == "resnet50_keras":
            inp = Input((224, 224, 3))
            model = ResNet50(input_tensor=inp, weights=None, classes=100)
        else:
            raise

        # opt = SGD(lr=lr, momentum=0.9, nesterov=True)
        opt = Adam()
        model.compile(optimizer=opt,
                      loss="categorical_crossentropy",
                      metrics=['accuracy'])
        return model
コード例 #8
0
    def model_confirm(self, choosed_model):
        if choosed_model == 'AlexNet':
            model = alexnet(self.config)
        elif choosed_model == 'VGG16':
            model = vgg16(self.config)
        elif choosed_model == 'VGG19':
            model = vgg19(self.config)
        elif choosed_model == 'InceptionV3':
            model = inception_v3(self.config)
        elif choosed_model == 'InceptionV4':
            model = inception_v4(self.config)
        elif choosed_model == 'InceptionV4_ResNetV1':
            model = inception_resnet_v1(self.config)
        elif choosed_model == 'InceptionV4_ResNetV2':
            model = inception_resnet_v2(self.config)
        elif choosed_model == 'ResNet18':
            model = ResnetBuilder.build_resnet_18(self.config)
        elif choosed_model == 'ResNet34':
            model = ResnetBuilder.build_resnet_34(self.config)
        elif choosed_model == 'ResNet50':
            model = ResnetBuilder.build_resnet_50(self.config)
        elif choosed_model == 'ResNet101':
            model = ResnetBuilder.build_resnet_101(self.config)
        elif choosed_model == 'ResNet152':
            model = ResnetBuilder.build_resnet_152(self.config)
        elif choosed_model == 'DenseNet121':
            model = densenet121(self.config)
        elif choosed_model == 'DenseNet169':
            model = densenet169(self.config)
        elif choosed_model == 'DenseNet201':
            model = densenet201(self.config)
        elif choosed_model == 'DenseNet264':
            model = densenet264(self.config)
        else:
            model = -1

        return model
コード例 #9
0
def test_resnet18():
    model = ResnetBuilder.build_resnet_18((3, 224, 224), 100)
    _test_model_compile(model)
コード例 #10
0
    def build_resnet_18(self, shape, num_classes):
        self.model = ResnetBuilder.build_resnet_18(shape, num_classes)

        print('[+] ResNet-18 model built')
        return self.model
コード例 #11
0
def test_resnet18():
    model = ResnetBuilder.build_resnet_18((3, 224, 224), 100)
    _test_model_compile(model)
コード例 #12
0
    
    with np.load(os.path.join(arguments["data_path"], "test.npz")) as data:
        test_imgs = data["imgs"]
        test_labels = data["labels"].astype(int)

    X_train, Y_train = np.reshape(train_imgs, (len(train_imgs), 28, 28, 1)), train_labels
    X_test, Y_test = np.reshape(test_imgs, (len(test_imgs), 28, 28, 1)), test_labels
    
    nb_classes = len(np.unique(np.hstack([train_labels, test_labels])))
    print("Number of classes: {}".format(nb_classes), flush=True)
    
    # Create the model
    sess = K.get_session()
    graph = sess.graph  # get Tensorflow graph

    model = ResnetBuilder.build_resnet_18((1, 28, 28), nb_classes)
    model.compile(loss='sparse_categorical_crossentropy',
              optimizer=Adam(lr=arguments["learning_rate"]),
              metrics=['accuracy'])

    # Train the model 
    # history = model.fit(
    #     X_train, Y_train, 
    #     epochs=arguments["epochs"], 
    #     batch_size=arguments["batch_size"], 
    #     validation_data=(X_test, Y_test))
    # accuracy = history.history["val_acc"][-1]

    print(model.outputs)
    import sys; sys.exit()
    
コード例 #13
0
def ResCapsNet(input_shape, n_class, routings):
    # K.set_image_dim_ordering('th')

    x = Input(input_shape, name='input')

    # Part1
    conv1 = Conv2D(64, (3, 3), padding='same', name='conv1')(x)
    bn1 = BatchNormalization(name='bn1')(conv1)
    relu1 = ReLU()(bn1)
    pool1 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool1')(relu1)
    drop1 = Dropout(0.3, name='dropout1')(pool1)

    conv2 = Conv2D(128, (3, 3), padding='same', name='conv2')(drop1)
    bn2 = BatchNormalization(name='bn2')(conv2)
    relu2 = ReLU()(bn2)
    pool2 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool2')(relu2)
    drop2 = Dropout(0.3, name='dropout2')(pool2)

    conv3 = Conv2D(128, (3, 3), padding='same', name='conv3')(drop2)
    bn3 = BatchNormalization(name='bn3')(conv3)
    relu3 = ReLU()(bn3)
    pool3 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool3')(relu3)
    drop3 = Dropout(0.3, name='dropout3')(pool3)

    conv4 = Conv2D(128, (3, 3), padding='same', name='conv4')(drop3)
    bn4 = BatchNormalization(name='bn4')(conv4)
    relu4 = ReLU()(bn4)
    pool4 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool4')(relu4)
    drop4 = Dropout(0.3, name='dropout4')(pool4)

    conv5 = Conv2D(128, (3, 3), padding='same', name='conv5')(drop4)
    bn5 = BatchNormalization(name='bn5')(conv5)
    relu5 = ReLU()(bn5)
    pool5 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool5')(relu5)
    drop5 = Dropout(0.3, name='dropout5')(pool5)

    conv6 = Conv2D(128, (3, 3), padding='same', name='conv6')(drop5)
    bn6 = BatchNormalization(name='bn6')(conv6)
    relu6 = ReLU()(bn6)
    pool6 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool6')(relu6)
    drop6 = Dropout(0.3, name='dropout6')(pool6)

    conv7 = Conv2D(128, (3, 3), padding='same', name='conv7')(drop6)
    bn7 = BatchNormalization(name='bn7')(conv7)
    relu7 = ReLU()(bn7)
    pool7 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool7')(relu7)
    drop7 = Dropout(0.3, name='dropout7')(pool7)

    # Part2-branch-a
    primarycaps = PrimaryCap(drop7,
                             dim_capsule=8,
                             n_channels=32,
                             kernel_size=3,
                             strides=2,
                             padding='same',
                             name='primarycaps')
    digitcaps = CapsuleLayer(num_capsule=n_class,
                             dim_capsule=16,
                             routings=routings,
                             name='digitcaps')(primarycaps)
    out_caps = Length(name='capsnet')(digitcaps)
    # fc1 = Dense(n_class, activation='sigmoid', name='fc1')(out_caps)

    # Part2-branch-b
    res = ResnetBuilder.build_resnet_18(drop7, n_class)

    # Part3
    add = Add(name='add')([out_caps, res])

    train_model = models.Model(x, add, name='ResCapsNet')

    return train_model
コード例 #14
0
def test_resnet18():
    for ordering in DIM_ORDERING:
        K.set_image_dim_ordering(ordering)
        model = ResnetBuilder.build_resnet_18((3, 224, 224), 100)
        model.compile(loss="categorical_crossentropy", optimizer="sgd")
        assert True, "Failed to build with '{}' dim ordering".format(ordering)
コード例 #15
0
ファイル: Model.py プロジェクト: gusdlf93/Code
def Resnet18(input_shape, target_class):
    model = ResnetBuilder.build_resnet_18(input_shape, target_class)
    return model
コード例 #16
0
ファイル: visiual_cifar.py プロジェクト: Olwn/DeepMiner
X_train = X_train[:batch_size*(X_train.shape[0]/batch_size)]
Y_train = Y_train[:batch_size*(X_train.shape[0]/batch_size)]
X_test = X_test[:batch_size*(X_test.shape[0]/batch_size)]
Y_test = Y_test[:batch_size*(X_test.shape[0]/batch_size)]

# subtract mean and normalize
mean = [125.3, 123.0, 113.9]
std = [63.0,  62.1,  66.7]
mean_image = np.mean(X_train, axis=0)
X_train -= np.reshape(mean, [1, 1, 1, 3])
X_test -= np.reshape(mean, [1, 1, 1, 3])
X_train /= np.reshape(std, [1, 1, 1, 3])
X_test /= np.reshape(std, [1, 1, 1, 3])

# build res-18 network
res_18_model = ResnetBuilder.build_resnet_18(input_shape, nb_classes, par)
if par.weights: res_18_model.load_weights(par.weights, by_name=True)
res_18_extractor = Model(inputs=res_18_model.input, outputs=res_18_model.get_layer('flatten_1').output)

# build res-50-imagenet network
vgg_model = VGG16(weights='imagenet', include_top=False, input_shape=(32, 32, 3), pooling='avg')
# res_model = ResNet50(weights='imagenet', include_top=False, input_shape=(32, 32, 3))
for l in vgg_model.layers: print l.name
vgg_extractor = Model(inputs=vgg_model.input, outputs=vgg_model.get_layer('global_average_pooling2d_1').output)
# res_extractor = Model(inputs=res_model.input, outputs=res_model.get_layer('avg_pool').output)

model = vgg_extractor
# model = res_18_extractor
features = model.predict(X_test, batch_size=batch_size)
print features.shape
np.save('features.npy', features)
コード例 #17
0
import os
import keras.backend.tensorflow_backend as KTF
from resnet import ResnetBuilder
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras import backend as K
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.utils.np_utils import to_categorical
from keras.models import Model
from keras.layers import Conv2D, MaxPooling2D, AveragePooling2D
from keras.layers import Input, Activation, Dense, Flatten
from keras.layers.merge import add
from keras.layers.normalization import BatchNormalization
from keras.regularizers import l2
from keras import backend as K
from keras.utils import plot_model
from keras import regularizers
import tensorflow as tf
from keras import layers
from keras.layers import Input,Add,Dense,Activation,ZeroPadding2D, \
    BatchNormalization,Flatten,Conv2D,AveragePooling2D,MaxPooling2D,GlobalMaxPooling2D
from resnet import ResnetBuilder
import keras.backend as K

model = ResnetBuilder.build_resnet_18((1, 224, 224), 20)
from keras.utils import plot_model
plot_model(model, to_file='model.png', show_shapes=1)
コード例 #18
0
import pytest
from keras import backend as K
from keras.preprocessing import image
from resnet import ResnetBuilder
import numpy as np
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

model = ResnetBuilder.build_resnet_18((3, 224, 224), 100)
K.set_image_dim_ordering('tf')
model.compile(loss="categorical_crossentropy", optimizer="sgd")
# _test_model_compile(model)

# load an image
img_dir = 'images'
img_name = 'stanford.jpg'
img_path = os.path.join(img_dir, img_name)
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)

np.shape(x)

y_hat = model.predict(x)
np.shape(y_hat)
# model.summary()

import pandas as pd

pd.read_csv('resnet18_cifar10.csv')
コード例 #19
0
ファイル: train.py プロジェクト: Tom-Bayz/others
    "Trouser",
    "Pullover",
    "Dress",
    "Coat",
    "Sandal",
    "Shirt",
    "Sneaker",
    "Bag",
    "Ankle boot",
]

input_shape = (28, 28, 1)  # モデルの入力サイズ
num_classes = 10  # クラス数

# ResNet18 モデルを作成する。
model = ResnetBuilder.build_resnet_18(input_shape, num_classes)

# モデルをコンパイルする。
model.compile(optimizer="adam",
              loss="sparse_categorical_crossentropy",
              metrics=["accuracy"])

# 学習する。
model.fit(train_X, train_labels, epochs=5)

# テストデータに対する性能を確認する。
test_loss, test_acc = model.evaluate(test_X, test_labels)

print(f"test loss: {test_loss:.2f}, test accuracy: {test_acc:.2%}")
# test loss: 0.36, test accuracy: 86.93%