Пример #1
0
def SentimentNet(word_to_idx):
    """Construct a RNN model for sentiment analysis

    # Arguments:
        word_to_idx: A dictionary giving the vocabulary. It contains V entries,
            and maps each string to a unique integer in the range [0, V).
    # Returns
        model: the constructed model
    """
    vocab_size = len(word_to_idx)

    model = Model()
    model.add(
        FCLayer(vocab_size,
                200,
                name='embedding',
                initializer=Gaussian(std=0.01)))
    model.add(
        BidirectionalRNN(in_features=200,
                         units=50,
                         initializer=Gaussian(std=0.01)))
    model.add(FCLayer(100, 32, name='fclayer1',
                      initializer=Gaussian(std=0.01)))
    model.add(TemporalPooling())  # defined in layers.py
    model.add(FCLayer(32, 2, name='fclayer2', initializer=Gaussian(std=0.01)))

    return model
Пример #2
0
def MyModel_SentimentNet(word_to_idx):
    
    vocab_size = len(word_to_idx)

    model = Model()
    model.add(Linear2D(vocab_size, 200, name='embedding', initializer=Gaussian(std=0.01)))
    model.add(BiRNN(in_features=200, units=50, initializer=Gaussian(std=0.01)))
    model.add(Linear2D(100, 50, name='linear1', initializer=Gaussian(std=0.01)))
    model.add(TemporalPooling()) # defined in layers.py
    model.add(Linear2D(50, 2, name='linear2', initializer=Gaussian(std=0.01)))

#    model.add(Linear2D(vocab_size, 200, name='embedding', initializer=Gaussian(std=0.01)))
#    model.add(GRU(in_features=200, units=50, initializer=Gaussian(std=0.01)))

#    model.add(Linear2D(50, 50, name='embedding', initializer=Gaussian(std=0.01)))
#    model.add(GRU(in_features=200, units=50, initializer=Gaussian(std=0.01)))
#    model.add(TemporalPooling())
#    model.add(Linear(200,2,initializer=Gaussian(std=0.01)))
    return model
Пример #3
0
def load_model(config, n_classes=2):
    model = Model()
    X = model.add(input([config.SEQUENCE_LEN], dtype='int32', name="input"))

    if config.is_use_embedding():
        embedding = model.add(
            embeddings(X,
                       config.WORD_COUNT,
                       config.EMBEDDING_DIM,
                       weights=config.EMBEDDING_MATRIX,
                       input_length=config.SEQUENCE_LEN,
                       frozen=config.is_embedding_trainable()))
    else:
        embedding = model.add(
            embeddings(X,
                       config.WORD_COUNT,
                       config.EMBEDDING_DIM,
                       input_length=config.SEQUENCE_LEN,
                       frozen=config.is_embedding_trainable()))

    dropout_1 = model.add(dropout(embedding, config.DROPOUT_LIST[0]))

    conv_list = []
    for k_size, n_C, k_pool in zip(config.FILTER_SIZE_LIST,
                                   config.FILTERS_PER_LAYER,
                                   config.POOL_SIZE_LIST):
        c = conv1d(dropout_1, k_size, n_C, nonlin='relu')
        p = maxpool(c, k_pool)
        conv_list.append(flatten(p))

    if len(conv_list) > 1:
        conv_out = model.add(concat(conv_list))
    else:
        conv_out = model.add(conv_list[0])

    dense_1 = model.add(dense(conv_out, 150, nonlin='relu'))
    dropout_2 = model.add(dropout(dense_1, config.DROPOUT_LIST[1]))
    out = model.add(dense(dropout_2, n_classes, nonlin='softmax'))
    model.compile(optimizer='rmsprop',
                  loss='softmax_entropy',
                  learning_rate=config.LEARNING_RATE,
                  ckpt_file=config.CKPT_PATH,
                  device=config.DEVICE)

    return model
Пример #4
0
def main():
    args = parse_args()

    # dataset
    X_train, y_train, X_val, y_val, X_test, y_test = load_dataset(flatten=True)

    # model layer dimensions
    input_dim = X_train.shape[1]
    num_classes = 10

    # create model
    model = Model()
    model.add(Dense(input_dim, 100), activation='relu')
    model.add(Dense(100, 200), activation='relu')
    model.add(Dense(200, 200), activation='relu')
    model.add(Dense(200, num_classes))

    # train model
    model.fit(X_train,
              y_train,
              val_data=(X_val, y_val),
              verbose=True,
              epochs=args.epochs,
              batch_size=args.batch_size,
              lr=args.lr)

    # evaluate model
    model.eval(X_test, y_test, verbose=True)
Пример #5
0
from nn.layer import FC, Softmax, ReLU, Dropout
from nn.optimizer import Adam, SGD
from nn.loss import cross_entropy
from nn.metrix import accuracy


(X_train, y_train), (X_test, y_test) = load_mnist()
X_train = X_train.reshape((X_train.shape[0], -1)) / 255
X_test = X_test.reshape((X_test.shape[0], -1)) / 255

transformer = MakeOneHot()
y_train = transformer.fit_transform(y_train)
y_test = transformer.transform(y_test)

model = Model()
model.add(FC(500, input_shape=784))
model.add(ReLU())
model.add(Dropout(0.5))
model.add(FC(150))
model.add(ReLU())
model.add(Dropout(0.5))
model.add(FC(50))
model.add(ReLU())
model.add(Dropout(0.5))
model.add(FC(10))
model.add(Softmax())

model.compile(Adam(eta=0.01), cross_entropy, accuracy)

model.fit(X_train, y_train, max_iter=10, batch_size=2000)
Пример #6
0
def MNISTNet():
    conv1_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 0,
        'stride': 1,
        'in_channel': 1,
        'out_channel': 6
    }
    conv2_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 0,
        'stride': 1,
        'in_channel': 6,
        'out_channel': 16
    }
    pool1_params = {
        'pool_type': 'max',
        'pool_height': 2,
        'pool_width': 2,
        'stride': 2,
        'pad': 0
    }
    pool2_params = {
        'pool_type': 'max',
        'pool_height': 3,
        'pool_width': 3,
        'stride': 2,
        'pad': 0
    }
    model = Model()
    model.add(
        Conv2D(conv1_params, name='conv1', initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu1'))
    model.add(Pool2D(pool1_params, name='pooling1'))
    model.add(
        Conv2D(conv2_params, name='conv2', initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu2'))
    model.add(Pool2D(pool2_params, name='pooling2'))
    # model.add(Dropout(ratio=0.25, name='dropout1'))
    model.add(Flatten(name='flatten'))
    model.add(Linear(400, 256, name='fclayer1',
                     initializer=Gaussian(std=0.01)))
    model.add(ReLU(name='relu3'))
    # model.add(Dropout(ratio=0.5))
    model.add(Linear(256, 10, name='fclayer2', initializer=Gaussian(std=0.01)))
    return model
Пример #7
0
def MyFashMNIST_CNN():
    conv1_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 2,
        'stride': 1,
        'in_channel': 1,
        'out_channel': 32
    }
    conv2_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 2,
        'stride': 1,
        'in_channel': 32,
        'out_channel': 64
    }
    conv3_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 2,
        'stride': 1,
        'in_channel': 64,
        'out_channel': 64
    }
    pool1_params = {
        'pool_type': 'max',
        'pool_height': 2,
        'pool_width': 2,
        'stride': 2,
        'pad': 2
    }
    pool2_params = {
        'pool_type': 'max',
        'pool_height': 3,
        'pool_width': 3,
        'stride': 2,
        'pad': 2
    }
    model = Model()
    model.add(
        Conv2D(conv1_params, name='conv1', initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu1'))
    #model.add(Pool2D(pool1_params, name='pooling1'))
    model.add(
        Conv2D(conv2_params, name='conv2', initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu2'))
    model.add(Pool2D(pool1_params, name='pooling1'))
    model.add(Dropout(rate=0.25, name='dropout1'))

    model.add(
        Conv2D(conv3_params, name='conv3', initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu2'))
    model.add(Pool2D(pool1_params, name='pooling2'))
    model.add(Dropout(rate=0.25, name='dropout2'))

    model.add(Flatten(name='flatten'))
    model.add(
        Linear(4096, 1024, name='fclayer1', initializer=Gaussian(std=0.01)))
    model.add(ReLU(name='relu3'))
    model.add(Dropout(rate=0.5))
    model.add(
        Linear(1024, 256, name='fclayer2', initializer=Gaussian(std=0.01)))
    model.add(Dropout(rate=0.5))
    model.add(Linear(256, 10, name='fclayer3', initializer=Gaussian(std=0.01)))
    return model
Пример #8
0
def FashionMNIST_CNN():
    conv1_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 0,
        'stride': 1,
        'in_channel': 1,
        'out_channel': 32
    }
    conv2_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 0,
        'stride': 1,
        'in_channel': 32,
        'out_channel': 64
    }
    pool1_params = {
        'pool_type': 'max',
        'pool_height': 2,
        'pool_width': 2,
        'stride': 2,
        'pad': 0
    }

    model = Model()
    model.add(
        Conv2D(conv1_params, name='conv1', initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu1'))
    model.add(
        Conv2D(conv2_params, name='conv2', initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu2'))
    model.add(Pool2D(pool1_params, name='pooling1'))
    model.add(Dropout(rate=0.25))
    model.add(Flatten(name='flatten'))
    model.add(
        Linear(9216, 128, name='fclayer1', initializer=Gaussian(std=0.01)))
    model.add(ReLU(name='relu3'))
    model.add(Dropout(rate=0.25))
    model.add(Linear(128, 10, name='fclayer2', initializer=Gaussian(std=0.01)))

    return model
Пример #9
0
def MyModel_FashionMNIST():
    conv1_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 2,
        'stride': 1,
        'in_channel': 1,
        'out_channel': 6
    }
    conv2_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 2,
        'stride': 1,
        'in_channel': 6,
        'out_channel': 16
    }
    conv3_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 2,
        'stride': 1,
        'in_channel': 16,
        'out_channel': 16
    }
    pool1_params = {
        'pool_type': 'max',
        'pool_height': 2,
        'pool_width': 2,
        'stride': 2,
        'pad': 0
    }
    pool2_params = {
        'pool_type': 'max',
        'pool_height': 2,
        'pool_width': 2,
        'stride': 2,
        'pad': 0
    }
    model = Model()
    model.add(
        Conv2D(conv1_params, name='conv1', initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu1'))
    #    model.add(Pool2D(pool1_params, name='pooling1'))
    model.add(
        Conv2D(conv2_params, name='conv2', initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu2'))
    model.add(Pool2D(pool2_params, name='pooling2'))
    #    model.add(Conv2D(conv3_params, name='conv3',
    #                          initializer=Gaussian(std=0.001)))
    #    model.add(ReLU(name='relu1'))
    #    model.add(Pool2D(pool1_params, name='pooling1'))
    model.add(Flatten(name='flatten'))
    model.add(
        Linear(
            3136,
            100,
            name='fclayer1',  #10816
            initializer=Gaussian(std=0.01)))
    model.add(ReLU(name='relu3'))
    model.add(Linear(100, 10, name='fclayer2', initializer=Gaussian(std=0.01)))
    return model
Пример #10
0
def MyFashionModel_CNN():
    conv1_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 2, #same
        'stride': 1,
        'in_channel': 1,
        'out_channel': 32
    }
    conv2_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 2, #same
        'stride': 1,
        'in_channel': 32,
        'out_channel': 32
    }
    conv3_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 2, #same
        'stride': 1,
        'in_channel': 32,
        'out_channel': 64
    }
    conv4_params = {
        'kernel_h': 3,
        'kernel_w': 3,
        'pad': 2, #same
        'stride': 1,
        'in_channel': 64,
        'out_channel': 128
    }
    pool1_params = {
        'pool_type': 'max',
        'pool_height': 2,
        'pool_width': 2,
        'stride': 2,
        'pad': 0
    }


    model = Model()
    model.add(Conv2D(conv1_params, name='conv1',initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu1'))
    # model.add(Dropout(rate=0.25, name='dropout1'))

    model.add(Conv2D(conv2_params, name='conv2',
                          initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu2'))
    model.add(Dropout(rate=0.25, name='dropout2'))

    model.add(Conv2D(conv3_params, name='conv3',
                          initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu3'))

    model.add(Pool2D(pool1_params, name='pooling1'))
    model.add(Dropout(rate=0.25, name='dropout3'))

    model.add(Conv2D(conv4_params, name='conv4',initializer=Gaussian(std=0.001)))
    model.add(ReLU(name='relu4'))
    model.add(Dropout(rate=0.25, name='dropout4'))

    model.add(Flatten(name='flatten'))
    model.add(Linear(25088, 512, name='fclayer1', #512
                      initializer=Gaussian(std=0.01)))
    model.add(ReLU(name='relu5'))
    model.add(Dropout(rate=0.5, name='dropout5'))

    model.add(Linear(512, 256, name='fclayer1', #128
                      initializer=Gaussian(std=0.01)))
    model.add(ReLU(name='relu5'))
    model.add(Dropout(rate=0.5, name='dropout5'))

    model.add(Linear(256, 10, name='fclayer2',
                      initializer=Gaussian(std=0.01)))
    return model