我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用keras.optimizers.Adadelta()。
def fit(self, train_X, val_X, nb_epoch=50, batch_size=100): print 'Training variational autoencoder' optimizer = Adadelta(lr=2.) self.vae.compile(optimizer=optimizer, loss=self.vae_loss) self.vae.fit(train_X[0], train_X[1], shuffle=True, epochs=nb_epoch, batch_size=batch_size, validation_data=(val_X[0], val_X[1]), callbacks=[ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=3, min_lr=0.01), EarlyStopping(monitor='val_loss', min_delta=1e-5, patience=5, verbose=1, mode='auto'), CustomModelCheckpoint(self.encoder, self.save_model, monitor='val_loss', save_best_only=True, mode='auto') ] ) return self
def rcnn(input_shape, n_classes): """ Input size should be [batch, 1d, ch] = (XXX, 3000, 1) """ model = Sequential(name='RCNN test') model.add(Conv1D (kernel_size = (200), filters = 20, batch_input_shape=input_shape, activation='elu')) model.add(MaxPooling1D(pool_size = (20), strides=(10))) model.add(Conv1D (kernel_size = (20), filters = 200, activation='elu')) model.add(MaxPooling1D(pool_size = (10), strides=(3))) model.add(Conv1D (kernel_size = (20), filters = 200, activation='elu')) model.add(MaxPooling1D(pool_size = (10), strides=(3))) model.add(Dense (512, activation='elu')) model.add(Dense (512, activation='elu')) model.add(Reshape((1,model.output_shape[1]))) model.add(LSTM(256, stateful=True, return_sequences=False)) model.add(Dropout(0.3)) model.add(Dense(n_classes, activation = 'sigmoid')) model.compile(loss='categorical_crossentropy', optimizer=Adadelta()) return model
def rnn_old(input_shape, n_classes): """ Input size should be [batch, 1d, 2d, ch] = (None, 1, 15000, 1) """ model = Sequential(name='Simple 1D CNN') model.add(keras.layers.LSTM(50, stateful=True, batch_input_shape=input_shape, return_sequences=False)) model.add(Dense(n_classes, activation='sigmoid')) print(model.output_shape) model.compile(loss='categorical_crossentropy', optimizer=Adadelta(), metrics=[keras.metrics.categorical_accuracy]) return model #%% old models
def getOptimizer(optim, exp_decay, grad_norm_clip, lr = 0.001): """Function for setting up optimizer, combines several presets from published well performing models on SQuAD.""" optimizers = { 'Adam': Adam(lr=lr, decay=exp_decay, clipnorm=grad_norm_clip), 'Adamax': Adamax(lr=lr, decay=exp_decay, clipnorm=grad_norm_clip), 'Adadelta': Adadelta(lr=1.0, rho=0.95, epsilon=1e-06, decay=exp_decay, clipnorm=grad_norm_clip) } try: optimizer = optimizers[optim] except KeyError as e: raise ValueError('problems with defining optimizer: {}'.format(e.args[0])) del (optimizers) return optimizer # ------------------------------------------------------------------------------ # Data/model utilities. # ------------------------------------------------------------------------------
def fit(self, train_X, val_X, nb_epoch=50, batch_size=100, feature_weights=None): print 'Training autoencoder' optimizer = Adadelta(lr=1.5) # optimizer = Adam() # optimizer = Adagrad() if feature_weights is None: self.autoencoder.compile(optimizer=optimizer, loss='binary_crossentropy') # kld, binary_crossentropy, mse else: print 'Using weighted loss' self.autoencoder.compile(optimizer=optimizer, loss=weighted_binary_crossentropy(feature_weights)) # kld, binary_crossentropy, mse self.autoencoder.fit(train_X[0], train_X[1], nb_epoch=nb_epoch, batch_size=batch_size, shuffle=True, validation_data=(val_X[0], val_X[1]), callbacks=[ ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=3, min_lr=0.01), EarlyStopping(monitor='val_loss', min_delta=1e-5, patience=5, verbose=1, mode='auto'), # ModelCheckpoint(self.model_save_path, monitor='val_loss', save_best_only=True, verbose=0), ] ) return self
def fit(self, train_X, val_X, nb_epoch=50, batch_size=100, contractive=None): optimizer = Adadelta(lr=2.) # optimizer = Adam() # optimizer = Adagrad() if contractive: print 'Using contractive loss, lambda: %s' % contractive self.autoencoder.compile(optimizer=optimizer, loss=contractive_loss(self, contractive)) else: print 'Using binary crossentropy' self.autoencoder.compile(optimizer=optimizer, loss='binary_crossentropy') # kld, binary_crossentropy, mse self.autoencoder.fit(train_X[0], train_X[1], epochs=nb_epoch, batch_size=batch_size, shuffle=True, validation_data=(val_X[0], val_X[1]), callbacks=[ ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=3, min_lr=0.01), EarlyStopping(monitor='val_loss', min_delta=1e-5, patience=5, verbose=1, mode='auto'), CustomModelCheckpoint(self.encoder, self.save_model, monitor='val_loss', save_best_only=True, mode='auto') ] ) return self
def get_optimizer(self): if self.opt == 'sgd': return k_opt.SGD(lr=self.learning_rate, momentum=self.momentum) if self.opt == 'rmsprop': return k_opt.RMSprop(lr=self.learning_rate) if self.opt == 'adagrad': return k_opt.Adagrad(lr=self.learning_rate) if self.opt == 'adadelta': return k_opt.Adadelta(lr=self.learning_rate) if self.opt == 'adam': return k_opt.Adam(lr=self.learning_rate) raise Exception('Invalid optimization function - %s' % self.opt)
def __init__(self): filters1 = [16, 32, 64] # filters1 = [4, 8, 16, 32, 64, 128, 256] filters2 = [16, 32, 64] # filters2 = [4, 8, 16, 32, 64, 128, 256] losses1 = [losses.MSE, losses.MAE, losses.hinge, losses.categorical_crossentropy] # losses1 = [losses.MSE, losses.MAE, losses.hinge, losses.categorical_crossentropy] optimizers1 = [optimizers.Adam()] # optimizers1 = [optimizers.Adadelta(), optimizers.Adagrad(), optimizers.Adam(), optimizers.Adamax(), optimizers.SGD(), optimizers.RMSprop()] units1 = [16, 32, 64] # units1 = [4, 8, 16, 32, 64, 128, 256] kernel_sizes1 = [(3, 3)] # kernel_sizes = [(3, 3), (5, 5)] dropouts1 = [0.25] # dropouts1 = [0.25, 0.5, 0.75] dropouts2 = [0.5] # dropouts2 = [0.25, 0.5, 0.75] pool_sizes1 = [(2, 2)] # pool_sizes1 = [(2, 2)] # create standard experiments structure self.experiments = {"filters1": filters1, "filters2": filters2, "losses1": losses1, "units1": units1, "optimizers1": optimizers1, "kernel_sizes1": kernel_sizes1, "dropouts1": dropouts1, "dropouts2": dropouts2, "pool_sizes1": pool_sizes1}
def get_optimizer(name='Adadelta'): if name == 'SGD': return optimizers.SGD(clipnorm=1.) if name == 'RMSprop': return optimizers.RMSprop(clipnorm=1.) if name == 'Adagrad': return optimizers.Adagrad(clipnorm=1.) if name == 'Adadelta': return optimizers.Adadelta(clipnorm=1.) if name == 'Adam': return optimizers.Adam(clipnorm=1.) if name == 'Adamax': return optimizers.Adamax(clipnorm=1.) if name == 'Nadam': return optimizers.Nadam(clipnorm=1.) return optimizers.Adam(clipnorm=1.)
def get_model(): inputs = Input((IMAGE_H, IMAGE_W, INPUT_CHANNELS)) base = models.get_fcn_vgg16_32s(inputs, NUMBER_OF_CLASSES) #base = models.get_fcn_vgg16_16s(inputs, NUMBER_OF_CLASSES) #base = models.get_fcn_vgg16_8s(inputs, NUMBER_OF_CLASSES) #base = models.get_unet(inputs, NUMBER_OF_CLASSES) #base = models.get_segnet_vgg16(inputs, NUMBER_OF_CLASSES) # softmax reshape= Reshape((-1,NUMBER_OF_CLASSES))(base) act = Activation('softmax')(reshape) model = Model(inputs=inputs, outputs=act) model.compile(optimizer=Adadelta(), loss='categorical_crossentropy') #print(model.summary()) #sys.exit() return model
def get_model(): inputs = Input((IMAGE_H, IMAGE_W, INPUT_CHANNELS)) base = models.get_fcn_vgg16_32s(inputs, NUMBER_OF_CLASSES) #base = models.get_fcn_vgg16_16s(inputs, NUMBER_OF_CLASSES) #base = models.get_fcn_vgg16_8s(inputs, NUMBER_OF_CLASSES) #base = models.get_unet(inputs, NUMBER_OF_CLASSES) #base = models.get_segnet_vgg16(inputs, NUMBER_OF_CLASSES) # sigmoid reshape= Reshape((-1,NUMBER_OF_CLASSES))(base) act = Activation('sigmoid')(reshape) model = Model(inputs=inputs, outputs=act) model.compile(optimizer=Adadelta(), loss='binary_crossentropy') #print(model.summary()) #sys.exit() return model
def get_optimizer(args): clipvalue = 0 clipnorm = 10 if args.algorithm == 'rmsprop': optimizer = opt.RMSprop(lr=0.001, rho=0.9, epsilon=1e-06, clipnorm=clipnorm, clipvalue=clipvalue) elif args.algorithm == 'sgd': optimizer = opt.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False, clipnorm=clipnorm, clipvalue=clipvalue) elif args.algorithm == 'adagrad': optimizer = opt.Adagrad(lr=0.01, epsilon=1e-06, clipnorm=clipnorm, clipvalue=clipvalue) elif args.algorithm == 'adadelta': optimizer = opt.Adadelta(lr=1.0, rho=0.95, epsilon=1e-06, clipnorm=clipnorm, clipvalue=clipvalue) elif args.algorithm == 'adam': optimizer = opt.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, clipnorm=clipnorm, clipvalue=clipvalue) elif args.algorithm == 'adamax': optimizer = opt.Adamax(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, clipnorm=clipnorm, clipvalue=clipvalue) return optimizer
def setOptimizer(self, **kwargs): """ Sets a new optimizer for the Translation_Model. :param **kwargs: """ # compile differently depending if our model is 'Sequential' or 'Graph' if self.verbose > 0: logging.info("Preparing optimizer and compiling.") if self.params['OPTIMIZER'].lower() == 'adam': optimizer = Adam(lr=self.params['LR'], clipnorm=self.params['CLIP_C']) elif self.params['OPTIMIZER'].lower() == 'rmsprop': optimizer = RMSprop(lr=self.params['LR'], clipnorm=self.params['CLIP_C']) elif self.params['OPTIMIZER'].lower() == 'nadam': optimizer = Nadam(lr=self.params['LR'], clipnorm=self.params['CLIP_C']) elif self.params['OPTIMIZER'].lower() == 'adadelta': optimizer = Adadelta(lr=self.params['LR'], clipnorm=self.params['CLIP_C']) elif self.params['OPTIMIZER'].lower() == 'sgd': optimizer = SGD(lr=self.params['LR'], clipnorm=self.params['CLIP_C']) else: logging.info('\tWARNING: The modification of the LR is not implemented for the chosen optimizer.') optimizer = eval(self.params['OPTIMIZER']) self.model.compile(optimizer=optimizer, loss=self.params['LOSS'], sample_weight_mode='temporal' if self.params['SAMPLE_WEIGHTS'] else None)
def cnn1d(input_shape, n_classes ): """ Input size should be [batch, 1d, 2d, ch] = (None, 3000, 1) """ model = Sequential(name='1D CNN') model.add(Conv1D (kernel_size = (50), filters = 150, strides=5, input_shape=input_shape, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) print(model.output_shape) model.add(Conv1D (kernel_size = (8), filters = 200, strides=2, input_shape=input_shape, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) print(model.output_shape) model.add(MaxPooling1D(pool_size = (10), strides=(2))) print(model.output_shape) model.add(Conv1D (kernel_size = (8), filters = 400, strides=2, input_shape=input_shape, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) print(model.output_shape) model.add(Flatten()) model.add(Dense (700, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense (700, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense(n_classes, activation = 'softmax')) model.compile(loss='categorical_crossentropy', optimizer=Adadelta(), metrics=[keras.metrics.categorical_accuracy]) return model
def cnn1(input_shape, n_classes): """ Input size should be [batch, 1d, 2d, ch] = (None, 3000, 3) """ model = Sequential(name='no_MP_small_filters') model.add(Conv1D (kernel_size = (10), filters = 64, strides=2, input_shape=input_shape, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Conv1D (kernel_size = (10), filters = 64, strides=2, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Conv1D (kernel_size = (10), filters = 128, strides=2, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Conv1D (kernel_size = (10), filters = 128, strides=2, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Conv1D (kernel_size = (10), filters = 150, strides=2, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Flatten()) model.add(Dense (1024, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense (1024, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense(n_classes, activation = 'softmax')) model.compile(loss='categorical_crossentropy', optimizer=Adadelta()) return model
def cnn2(input_shape, n_classes): """ Input size should be [batch, 1d, 2d, ch] = (None, 3000, 3) """ model = Sequential(name='MP_small_filters') model.add(Conv1D (kernel_size = (10), filters = 64, strides=2, input_shape=input_shape, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(MaxPooling1D()) model.add(Conv1D (kernel_size = (10), filters = 64, strides=2, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(MaxPooling1D()) model.add(Conv1D (kernel_size = (10), filters = 128, strides=2, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(MaxPooling1D()) model.add(Flatten()) model.add(Dense (500, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense (500, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense(n_classes, activation = 'softmax')) model.compile(loss='categorical_crossentropy', optimizer=Adadelta()) return model
def cnn4(input_shape, n_classes): """ Input size should be [batch, 1d, 2d, ch] = (None, 3000, 3) """ model = Sequential(name='large_kernel') model.add(Conv1D (kernel_size = (100), filters = 128, strides=10, input_shape=input_shape, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Conv1D (kernel_size = (100), filters = 128, strides=1, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Conv1D (kernel_size = (100), filters = 128, strides=2, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Flatten()) model.add(Dense (768, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense (768, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense(n_classes, activation = 'softmax')) model.compile(loss='categorical_crossentropy', optimizer=Adadelta()) return model
def cnn5(input_shape, n_classes): """ Input size should be [batch, 1d, 2d, ch] = (None, 3000, 3) """ model = Sequential(name='very_large_kernel') model.add(Conv1D (kernel_size = (200), filters = 128, strides=3, input_shape=input_shape, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Conv1D (kernel_size = (200), filters = 128, strides=2, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Conv1D (kernel_size = (200), filters = 128, strides=1, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Conv1D (kernel_size = (10), filters = 128, strides=2, kernel_initializer='he_normal', activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.2)) model.add(Flatten()) model.add(Dense (768, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense (768, activation='elu')) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense(n_classes, activation = 'softmax')) model.compile(loss='categorical_crossentropy', optimizer=Adadelta()) return model
def test_adadelta(): _test_optimizer(Adadelta(), target=0.83) _test_optimizer(Adadelta(decay=1e-3), target=0.83)
def get_learning_rate(self): if hasattr(self.model, 'optimizer'): config = self.model.optimizer.get_config() from keras.optimizers import Adadelta, Adam, Adamax, Adagrad, RMSprop, SGD if isinstance(self.model.optimizer, Adadelta) or isinstance(self.model.optimizer, Adam) \ or isinstance(self.model.optimizer, Adamax) or isinstance(self.model.optimizer, Adagrad)\ or isinstance(self.model.optimizer, RMSprop) or isinstance(self.model.optimizer, SGD): return config['lr'] * (1. / (1. + config['decay'] * float(K.get_value(self.model.optimizer.iterations)))) elif 'lr' in config: return config['lr']
def on_batch_end(self, batch, logs={}): if np.isnan(logs.get('loss')): #Model contain NaN print('NaN detected, reloading model') self.model.compile(optimizer=Adadelta(), loss={'output': SP_pixelwise_loss, 'output_2': layout_loss_hard}, loss_weights={'output': 1.,'output_2':0.1}) self.model.load_weights(output_name)
def make_deep_learning_model(hidden_layers=None, num_cols=None, optimizer='Adadelta', dropout_rate=0.2, weight_constraint=0, feature_learning=False, kernel_initializer='normal', activation='elu'): if feature_learning == True and hidden_layers is None: hidden_layers = [1, 0.75, 0.25] if hidden_layers is None: hidden_layers = [1, 0.75, 0.25] # The hidden_layers passed to us is simply describing a shape. it does not know the num_cols we are dealing with, it is simply values of 0.5, 1, and 2, which need to be multiplied by the num_cols scaled_layers = [] for layer in hidden_layers: scaled_layers.append(min(int(num_cols * layer), 10)) # If we're training this model for feature_learning, our penultimate layer (our final hidden layer before the "output" layer) will always have 10 neurons, meaning that we always output 10 features from our feature_learning model if feature_learning == True: scaled_layers.append(10) model = Sequential() model.add(Dense(scaled_layers[0], input_dim=num_cols, kernel_initializer=kernel_initializer, kernel_regularizer=regularizers.l2(0.01))) model.add(get_activation_layer(activation)) for layer_size in scaled_layers[1:-1]: model.add(Dense(layer_size, kernel_initializer=kernel_initializer, kernel_regularizer=regularizers.l2(0.01))) model.add(get_activation_layer(activation)) # There are times we will want the output from our penultimate layer, not the final layer, so give it a name that makes the penultimate layer easy to find model.add(Dense(scaled_layers[-1], kernel_initializer=kernel_initializer, name='penultimate_layer', kernel_regularizer=regularizers.l2(0.01))) model.add(get_activation_layer(activation)) # For regressors, we want an output layer with a single node model.add(Dense(1, kernel_initializer=kernel_initializer)) # The final step is to compile the model model.compile(loss='mean_squared_error', optimizer=get_optimizer(optimizer), metrics=['mean_absolute_error', 'mean_absolute_percentage_error']) return model
def make_deep_learning_classifier(hidden_layers=None, num_cols=None, optimizer='Adadelta', dropout_rate=0.2, weight_constraint=0, final_activation='sigmoid', feature_learning=False, activation='elu', kernel_initializer='normal'): if feature_learning == True and hidden_layers is None: hidden_layers = [1, 0.75, 0.25] if hidden_layers is None: hidden_layers = [1, 0.75, 0.25] # The hidden_layers passed to us is simply describing a shape. it does not know the num_cols we are dealing with, it is simply values of 0.5, 1, and 2, which need to be multiplied by the num_cols scaled_layers = [] for layer in hidden_layers: scaled_layers.append(min(int(num_cols * layer), 10)) # If we're training this model for feature_learning, our penultimate layer (our final hidden layer before the "output" layer) will always have 10 neurons, meaning that we always output 10 features from our feature_learning model if feature_learning == True: scaled_layers.append(10) model = Sequential() # There are times we will want the output from our penultimate layer, not the final layer, so give it a name that makes the penultimate layer easy to find model.add(Dense(scaled_layers[0], input_dim=num_cols, kernel_initializer=kernel_initializer, kernel_regularizer=regularizers.l2(0.01))) model.add(get_activation_layer(activation)) for layer_size in scaled_layers[1:-1]: model.add(Dense(layer_size, kernel_initializer=kernel_initializer, kernel_regularizer=regularizers.l2(0.01))) model.add(get_activation_layer(activation)) model.add(Dense(scaled_layers[-1], kernel_initializer=kernel_initializer, name='penultimate_layer', kernel_regularizer=regularizers.l2(0.01))) model.add(get_activation_layer(activation)) model.add(Dense(1, kernel_initializer=kernel_initializer, activation=final_activation)) model.compile(loss='binary_crossentropy', optimizer=get_optimizer(optimizer), metrics=['accuracy', 'poisson']) return model
def _param_selector(args): '''Method to select parameters for models defined in Convolutional Neural Networks for Sentence Classification paper by Yoon Kim''' filtersize_list = [3, 4, 5] number_of_filters_per_filtersize = [100, 100, 100] pool_length_list = [2, 2, 2] dropout_list = [0.5, 0.5] optimizer = Adadelta(clipvalue=3) use_embeddings = True embeddings_trainable = False if (args.model_name.lower() == 'cnn-rand'): use_embeddings = False embeddings_trainable = True elif (args.model_name.lower() == 'cnn-static'): pass elif (args.model_name.lower() == 'cnn-non-static'): embeddings_trainable = True else: filtersize_list = [3, 4, 5] number_of_filters_per_filtersize = [150, 150, 150] pool_length_list = [2, 2, 2] dropout_list = [0.25, 0.5] optimizer = RMSprop(lr=args.learning_rate, decay=args.decay_rate, clipvalue=args.grad_clip) use_embeddings = True embeddings_trainable = True return (filtersize_list, number_of_filters_per_filtersize, pool_length_list, dropout_list, optimizer, use_embeddings, embeddings_trainable)
def get_optimizer(config_data): options = config_data['optimizer'] name = options['name'] if name == 'adadelta': return optimizers.Adadelta(lr=options['lr'], rho=options['rho'], epsilon=options['epsilon']) else: return optimizers.SGD()
def compile(self, optimizer='sgd'): optimizer_dicc = {'sgd': optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True), 'rmsprop': optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0), 'adagrad': optimizers.Adagrad(lr=0.01, epsilon=1e-08, decay=0.0), 'adadelta': optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-08, decay=0.0), 'adam': optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)} self.model.compile(optimizer=optimizer_dicc[optimizer], loss='categorical_crossentropy', metrics=['accuracy']) return self.model
def compile(self, optimizer='sgd'): optimizer_dicc = {'sgd': optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True), 'rmsprop': optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0), 'adagrad': optimizers.Adagrad(lr=0.01, epsilon=1e-08, decay=0.0), 'adadelta': optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-08, decay=0.0), 'adam': optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)} model.compile(optimizer=optimizer_dicc[optimizer], loss='categorical_crossentropy', metrics=['accuracy']) return model
def test_adadelta(self): print('test Adadelta') self.assertTrue(_test_optimizer(Adadelta()))
def __construct_neural_network(self): model = Sequential() model.add(Dense(400, activation='relu', input_shape=(len(self.dictionary.keys()),))) model.add(Dropout(0.5)) model.add(Dense(100, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(len(self.all_topics), activation='softmax')) model.compile(loss=categorical_crossentropy, optimizer=Adadelta(), metrics=['accuracy']) return model
def _construct(self, inputShape): init = 'glorot_normal' activation = 'relu' loss = 'mse' print "loss", loss layers = [self.prms["h1"], self.prms["h2"]] dropout = [self.prms["dropout1"], self.prms["dropout2"]] optimizer = Adadelta(lr=self.prms["adadelta_lr"], rho=(1.0 - self.prms["adadelta_rho_m"]), epsilon=self.prms["adadelta_eps"]) decay = self.prms["decay"] model = Sequential() for i in range(len(layers)): if i == 0: print ("Input shape: " + str(inputShape)) print ("Adding Layer " + str(i) + ": " + str(layers[i])) model.add(Dense(layers[i], input_dim=inputShape, init=init, W_regularizer=l2(decay))) else: print ("Adding Layer " + str(i) + ": " + str(layers[i])) model.add(Dense(layers[i], init=init, W_regularizer=l2(decay))) print ("Adding " + activation + " layer") model.add(Activation(activation)) model.add(BatchNormalization()) if len(dropout) > i: print ("Adding " + str(dropout[i]) + " dropout") model.add(Dropout(dropout[i])) model.add(Dense(1, init=init)) # End in a single output node for regression style output # ADAM=Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8) model.compile(loss=loss, optimizer=optimizer) self.model = model
def build_model(): main_input = Input(shape=(maxlen, ), dtype='int32', name='main_input') embedding = Embedding(max_features, embedding_dims, weights=[np.matrix(W)], input_length=maxlen, name='embedding')(main_input) embedding = Dropout(0.50)(embedding) conv4 = Convolution1D(nb_filter=nb_filter, filter_length=4, border_mode='valid', activation='relu', subsample_length=1, name='conv4')(embedding) maxConv4 = MaxPooling1D(pool_length=2, name='maxConv4')(conv4) conv5 = Convolution1D(nb_filter=nb_filter, filter_length=5, border_mode='valid', activation='relu', subsample_length=1, name='conv5')(embedding) maxConv5 = MaxPooling1D(pool_length=2, name='maxConv5')(conv5) x = merge([maxConv4, maxConv5], mode='concat') x = Dropout(0.15)(x) x = RNN(rnn_output_size)(x) x = Dense(hidden_dims, activation='relu', init='he_normal', W_constraint = maxnorm(3), b_constraint=maxnorm(3), name='mlp')(x) x = Dropout(0.10, name='drop')(x) output = Dense(1, init='he_normal', activation='sigmoid', name='output')(x) model = Model(input=main_input, output=output) model.compile(loss={'output':'binary_crossentropy'}, optimizer=Adadelta(lr=0.95, epsilon=1e-06), metrics=["accuracy"]) return model
def build_model(): main_input = Input(shape=(maxlen, ), dtype='int32', name='main_input') embedding = Embedding(max_features, embedding_dims, weights=[np.matrix(W)], input_length=maxlen, name='embedding')(main_input) embedding = Dropout(0.50)(embedding) conv4 = Conv1D(filters=nb_filter, kernel_size=4, padding='valid', activation='relu', strides=1, name='conv4')(embedding) maxConv4 = MaxPooling1D(pool_size=2, name='maxConv4')(conv4) conv5 = Conv1D(filters=nb_filter, kernel_size=5, padding='valid', activation='relu', strides=1, name='conv5')(embedding) maxConv5 = MaxPooling1D(pool_size=2, name='maxConv5')(conv5) # x = merge([maxConv4, maxConv5], mode='concat') x = keras.layers.concatenate([maxConv4, maxConv5]) x = Dropout(0.15)(x) x = RNN(rnn_output_size)(x) x = Dense(hidden_dims, activation='relu', kernel_initializer='he_normal', kernel_constraint = maxnorm(3), bias_constraint=maxnorm(3), name='mlp')(x) x = Dropout(0.10, name='drop')(x) output = Dense(1, kernel_initializer='he_normal', activation='sigmoid', name='output')(x) model = Model(inputs=main_input, outputs=output) model.compile(loss='binary_crossentropy', # optimizer=Adadelta(lr=0.95, epsilon=1e-06), # optimizer=Adadelta(lr=1.0, rho=0.95, epsilon=1e-08, decay=0.0), # optimizer=Adagrad(lr=0.01, epsilon=1e-08, decay=1e-4), metrics=["accuracy"]) return model
def build_model(): print('Build model...%d of %d' % (i + 1, folds)) main_input = Input(shape=(maxlen, ), dtype='int32', name='main_input') embedding = Embedding(max_features, embedding_dims, weights=[np.matrix(W)], input_length=maxlen, name='embedding')(main_input) embedding = Dropout(0.50)(embedding) conv4 = Convolution1D(nb_filter=nb_filter, filter_length=4, border_mode='valid', activation='relu', subsample_length=1, name='conv4')(embedding) maxConv4 = MaxPooling1D(pool_length=2, name='maxConv4')(conv4) conv5 = Convolution1D(nb_filter=nb_filter, filter_length=5, border_mode='valid', activation='relu', subsample_length=1, name='conv5')(embedding) maxConv5 = MaxPooling1D(pool_length=2, name='maxConv5')(conv5) x = merge([maxConv4, maxConv5], mode='concat') x = Dropout(0.15)(x) x = RNN(rnn_output_size)(x) x = Dense(hidden_dims, activation='relu', init='he_normal', W_constraint = maxnorm(3), b_constraint=maxnorm(3), name='mlp')(x) x = Dropout(0.10, name='drop')(x) output = Dense(1, init='he_normal', activation='sigmoid', name='output')(x) model = Model(input=main_input, output=output) model.compile(loss={'output':'binary_crossentropy'}, optimizer=Adadelta(lr=0.95, epsilon=1e-06), metrics=["accuracy"]) return model
def build_model(): main_input = Input(shape=(maxlen, ), dtype='int32', name='main_input') embedding = Embedding(max_features, embedding_dims, weights=[np.matrix(W)], input_length=maxlen, name='embedding')(main_input) embedding = Dropout(0.50)(embedding) conv4 = Convolution1D(nb_filter=nb_filter, filter_length=4, border_mode='valid', activation='relu', subsample_length=1, name='conv4')(embedding) maxConv4 = MaxPooling1D(pool_length=2, name='maxConv4')(conv4) conv5 = Convolution1D(nb_filter=nb_filter, filter_length=5, border_mode='valid', activation='relu', subsample_length=1, name='conv5')(embedding) maxConv5 = MaxPooling1D(pool_length=2, name='maxConv5')(conv5) x = merge([maxConv4, maxConv5], mode='concat') x = Dropout(0.15)(x) x = RNN(rnn_output_size)(x) x = Dense(hidden_dims, activation='relu', init='he_normal', W_constraint = maxnorm(3), b_constraint=maxnorm(3), name='mlp')(x) x = Dropout(0.10, name='drop')(x) output = Dense(nb_classes, init='he_normal', activation='softmax', name='output')(x) model = Model(input=main_input, output=output) model.compile(loss={'output':'categorical_crossentropy'}, optimizer=Adadelta(lr=0.95, epsilon=1e-06), metrics=["accuracy"]) return model
def main(): # read pre-trained embeddings embeddings = load_embeddings(embedding_path, 'word2vec') test_accus = [] # Collect test accuracy for each fold for i in xrange(n_folds): fold = i + 1 logging.info('Fold {} of {}...'.format(fold, n_folds)) # read data train_data, train_labels, test_data, test_labels, seq_len, vocab_size = load_data_MR_fasttext(data_path, fold=fold) # update train directory according to fold number train_dir = base_train_dir + '/' + str(fold) # create train directory if not exist if not os.path.exists(train_dir): os.makedirs(train_dir) # create log file handler file_handler = logging.FileHandler(pjoin(train_dir, "log.txt")) logging.getLogger().addHandler(file_handler) # check whether the model has been trained, if not, create a new one if os.path.exists(train_dir + '/model.json'): # load json and create model json_file = open(train_dir + '/model.json', 'r') loaded_model_json = json_file.read() json_file.close() model = model_from_json(loaded_model_json) # load weights into new model model.load_weights(train_dir + "/model.h5") model.compile(loss={'output':'binary_crossentropy'}, optimizer=Adadelta(lr=base_lr, epsilon=1e-6, decay=decay_rate), metrics=["accuracy"]) print("Loaded model from disk!") else: model = setup_model(embeddings, seq_len, vocab_size) print("Created a new model!") # train the model test_accu = train(model, train_data, train_labels, test_data, test_labels, embeddings, train_dir) # log test accuracy result logging.info("\nTest Accuracy for fold {}: {}".format(fold, test_accu)) test_accus.append(test_accu) # write log of test accuracy for all folds test_accu_log = open(base_train_dir + "/final_test_accuracy.txt", 'w') test_accu_log.write('\n'.join(['Fold {} Test Accuracy: {}'.format(fold, test_accu) for fold, test_accu in enumerate(test_accus)])) test_accu_log.write('\nAvg test acc: {}'.format(np.mean(test_accus)))
def main(): # read pre-trained embeddings embeddings = load_embeddings(embedding_path, 'word2vec') test_accus = [] # Collect test accuracy for each fold for i in xrange(n_folds): fold = i + 1 logging.info('Fold {} of {}...'.format(fold, n_folds)) # read data train_data, train_labels, test_data, test_labels, seq_len, vocab_size = load_data_MR(data_path, fold=fold) # update train directory according to fold number train_dir = base_train_dir + '/' + str(fold) # create train directory if not exist if not os.path.exists(train_dir): os.makedirs(train_dir) # create log file handler file_handler = logging.FileHandler(pjoin(train_dir, "log.txt")) logging.getLogger().addHandler(file_handler) # check whether the model has been trained, if not, create a new one if os.path.exists(train_dir + '/model.json'): # load json and create model json_file = open(train_dir + '/model.json', 'r') loaded_model_json = json_file.read() json_file.close() model = model_from_json(loaded_model_json) # load weights into new model model.load_weights(train_dir + "/model.h5") model.compile(loss={'output':'binary_crossentropy'}, optimizer=Adadelta(lr=base_lr, epsilon=1e-6, decay=decay_rate), metrics=["accuracy"]) print("Loaded model from disk!") else: model = setup_model(embeddings, seq_len, vocab_size) print("Created a new model!") # train the model test_accu = train(model, train_data, train_labels, test_data, test_labels, embeddings, train_dir) # log test accuracy result logging.info("\nTest Accuracy for fold {}: {}".format(fold, test_accu)) test_accus.append(test_accu) # write log of test accuracy for all folds test_accu_log = open(base_train_dir + "/final_test_accuracy.txt", 'w') test_accu_log.write('\n'.join(['Fold {} Test Accuracy: {}'.format(fold, test_accu) for fold, test_accu in enumerate(test_accus)])) test_accu_log.write('\nAvg test acc: {}'.format(np.mean(test_accus)))
def LSTM_model2(X_train,Y_train,X_val,Y_val,X_test,Y_test,test_label): print('Loading embedding successful!') print('len(X_train):'+str(len(X_train))) print('len(X_val):'+str(len(X_val))) print('len(X_test):'+str(len(X_test))) print('len(Y_train):'+str(len(Y_train))) print('len(Y_val):')+str(len(Y_val)) print('len(Y_test):'+str(len(Y_test))) # print(test_label) print('X_train shape:',X_train.shape) print('X_val shape:',X_val.shape) print('X_test shape:',X_test.shape) print('Build model...') model=Sequential() # ??lstm # model.add(LSTM(lstm_output_dim,return_sequences=True,\ # input_shape=(maxlen,embedding_dim))) # model.add(LSTM(lstm_output_dim,return_sequences=True)) # model.add(LSTM(lstm_output_dim)) model.add(LSTM(lstm_output_dim,input_shape=(maxlen,embedding_dim))) model.add(Dense(hidden_dim)) model.add(Activation('relu')) model.add(Dropout(0.5)) # model.add(Dense(hidden_dim)) # model.add(Activation('relu')) # model.add(Dropout(0.5)) model.add(Dense(nb_classes)) model.add(Activation('softmax')) # optmr=Adadelta(lr=0.9,rho=0.90,epsilon=1e-08) model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy']) plot(model,to_file='model.png') checkpointer=ModelCheckpoint(filepath='best_model.hdf5',monitor='val_acc',verbose=1,\ save_best_only=True,mode='max') # history=LossHistory() hist=model.fit(X_train,Y_train, batch_size=32, nb_epoch=20, verbose=1, shuffle=True, #20 10 validation_data=(X_val,Y_val),callbacks=[checkpointer]) # print(history.losses) print hist.history model.load_weights('best_model.hdf5') # score=model.evaluate(X_test,Y_test,batch_size=32,verbose=1) # print 'score:',score #p_label=model.predict_classes(X_test,batch_size=32,verbose=1) # ???????? p_prob=model.predict_proba(X_test,batch_size=32,verbose=1) p_label=np.array([np.argsort(item)[-1] for item in p_prob]) test_acc=np_utils.accuracy(p_label,test_label) return p_label,p_prob
def lstm_model(self): model = Sequential() first = True for idx in range(len(self.paras.model['hidden_layers'])): if idx == (len(self.paras.model['hidden_layers']) - 1): model.add(LSTM(int(self.paras.model['hidden_layers'][idx]), return_sequences=False)) model.add(Activation(self.paras.model['activation'])) model.add(Dropout(self.paras.model['dropout'])) elif first == True: model.add(LSTM(input_shape=(None, int(self.paras.n_features)), units=int(self.paras.model['hidden_layers'][idx]), return_sequences=True)) model.add(Activation(self.paras.model['activation'])) model.add(Dropout(self.paras.model['dropout'])) first = False else: model.add(LSTM(int(self.paras.model['hidden_layers'][idx]), return_sequences=True)) model.add(Activation(self.paras.model['activation'])) model.add(Dropout(self.paras.model['dropout'])) if self.paras.model['optimizer'] == 'sgd': #optimizer = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) optimizer = optimizers.SGD(lr=self.paras.model['learning_rate'], decay=1e-6, momentum=0.9, nesterov=True) elif self.paras.model['optimizer'] == 'rmsprop': #optimizer = optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0) optimizer = optimizers.RMSprop(lr=self.paras.model['learning_rate']/10, rho=0.9, epsilon=1e-08, decay=0.0) elif self.paras.model['optimizer'] == 'adagrad': #optimizer = optimizers.Adagrad(lr=0.01, epsilon=1e-08, decay=0.0) optimizer = optimizers.Adagrad(lr=self.paras.model['learning_rate'], epsilon=1e-08, decay=0.0) elif self.paras.model['optimizer'] == 'adam': #optimizer = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) optimizer = optimizers.Adam(lr=self.paras.model['learning_rate']/10, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) elif self.paras.model['optimizer'] == 'adadelta': optimizer = optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-08, decay=0.0) elif self.paras.model['optimizer'] == 'adamax': optimizer = optimizers.Adamax(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) elif self.paras.model['optimizer'] == 'nadam': optimizer = optimizers.Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, schedule_decay=0.004) else: optimizer = optimizers.Adam(lr=self.paras.model['learning_rate']/10, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) # output layer model.add(Dense(units=self.paras.model['out_layer'])) model.add(Activation(self.paras.model['out_activation'])) model.compile(loss=self.paras.model['loss'], optimizer=optimizer, metrics=['accuracy']) return model
def predict(self): def get_weights(model, layer_id): layer = model.layers[layer_id] weights = layer.get_weights() firstWeights = weights[1] print(firstWeights) def export_model(model, name): if not (os.path.exists("neural_net_models")): os.makedirs("neural_net_models") model_json = model.to_json() with open("neural_net_models/" + name + ".json", "w") as json_file: json_file.write(model_json) # serialize weights to HDF5 model.save_weights("neural_net_models/" + name + ".h5") def import_model(model_name): json_file = open("neural_net_models/" + model_name + '.json', 'r') loaded_model_json = json_file.read() json_file.close() model = model_from_json(loaded_model_json) # load weights into new model model.load_weights("neural_net_models/" + model_name + ".h5") print("Loaded " + model_name + " from disk") return model model = import_model('ut_Dense100_L1_m5s3_L2_m1s03_lr07_d1e07') """ model = Sequential() model.add(Dense(100, input_dim=85, activation='relu', kernel_initializer=initializers.RandomNormal( mean=5, stddev=3, seed=None))) model.add(Dense(1, activation='linear', kernel_initializer=initializers.RandomNormal( mean=1, stddev=0.3, seed=None))) """ # rms = opt.RMSprop(lr=0.01, rho=0.9, epsilon=1e-08, decay =1e-9) adadelta = opt.Adadelta(lr=1.0, rho=0.95, epsilon=1e-08, decay=0.0) # nadam = opt.Nadam(lr=0.05, beta_1=0.9, beta_2=0.999, epsilon=1e-08, schedule_decay=0.004) model.compile(loss='mean_absolute_error', optimizer=adadelta, metrics=[metrics.mae]) # optimizer='adam' model.fit( self.x_train, self.y_train, validation_data=(self.x_test, self.y_test), epochs=1000, batch_size=160000, verbose=1 ) export_model(model, 'ut_Dense100_L1_m5s3_L2_m1s03_lr07_d1e07') return (self.y_train, self.y_test)
def model_generate(): img_rows, img_cols = 48, 48 model = Sequential() model.add(Convolution2D(64, 5, 5, border_mode='valid', input_shape=(1, img_rows, img_cols))) model.add(keras.layers.advanced_activations.PReLU(init='zero', weights=None)) model.add(keras.layers.convolutional.ZeroPadding2D(padding=(2, 2), dim_ordering='th')) model.add(MaxPooling2D(pool_size=(5, 5),strides=(2, 2))) model.add(keras.layers.convolutional.ZeroPadding2D(padding=(1, 1), dim_ordering='th')) model.add(Convolution2D(64, 3, 3)) model.add(keras.layers.advanced_activations.PReLU(init='zero', weights=None)) model.add(keras.layers.convolutional.ZeroPadding2D(padding=(1, 1), dim_ordering='th')) model.add(Convolution2D(64, 3, 3)) model.add(keras.layers.advanced_activations.PReLU(init='zero', weights=None)) model.add(keras.layers.convolutional.AveragePooling2D(pool_size=(3, 3),strides=(2, 2))) model.add(keras.layers.convolutional.ZeroPadding2D(padding=(1, 1), dim_ordering='th')) model.add(Convolution2D(128, 3, 3)) model.add(keras.layers.advanced_activations.PReLU(init='zero', weights=None)) model.add(keras.layers.convolutional.ZeroPadding2D(padding=(1, 1), dim_ordering='th')) model.add(Convolution2D(128, 3, 3)) model.add(keras.layers.advanced_activations.PReLU(init='zero', weights=None)) model.add(keras.layers.convolutional.ZeroPadding2D(padding=(1, 1), dim_ordering='th')) model.add(keras.layers.convolutional.AveragePooling2D(pool_size=(3, 3),strides=(2, 2))) model.add(Flatten()) model.add(Dense(1024)) model.add(keras.layers.advanced_activations.PReLU(init='zero', weights=None)) model.add(Dropout(0.2)) model.add(Dense(1024)) model.add(keras.layers.advanced_activations.PReLU(init='zero', weights=None)) model.add(Dropout(0.2)) model.add(Dense(7)) model.add(Activation('softmax')) ada = Adadelta(lr=0.1, rho=0.95, epsilon=1e-08) model.compile(loss='categorical_crossentropy', optimizer=ada, metrics=['accuracy']) model.summary() return model