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
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
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
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)
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)
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
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
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
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
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