我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用keras.optimizers.RMSprop()。
def build_network(deepest=False): dropout = [0., 0.1, 0.2, 0.3, 0.4] conv = [(64, 3, 3), (128, 3, 3), (256, 3, 3), (512, 3, 3), (512, 2, 2)] input= Input(shape=(3, 32, 32)) output = fractal_net( c=3, b=5, conv=conv, drop_path=0.15, dropout=dropout, deepest=deepest)(input) output = Flatten()(output) output = Dense(NB_CLASSES, init='he_normal')(output) output = Activation('softmax')(output) model = Model(input=input, output=output) optimizer = SGD(lr=LEARN_START, momentum=MOMENTUM) #optimizer = RMSprop(lr=LEARN_START) #optimizer = Adam() #optimizer = Nadam() model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy']) plot(model, to_file='model.png') return model
def main(): game_width = 12 game_height = 9 nb_frames = 4 actions = ((-1, 0), (1, 0), (0, -1), (0, 1), (0, 0)) # Recipe of deep reinforcement learning model model = Sequential() model.add(Convolution2D( 16, nb_row=3, nb_col=3, activation='relu', input_shape=(nb_frames, game_height, game_width))) model.add(Convolution2D(32, nb_row=3, nb_col=3, activation='relu')) model.add(Flatten()) model.add(Dense(256, activation='relu')) model.add(Dense(len(actions))) model.compile(RMSprop(), 'MSE') agent = Agent( model, nb_frames, snake_game, actions, size=(game_width, game_height)) agent.train(nb_epochs=10000, batch_size=64, gamma=0.8, save_model=True) agent.play(nb_rounds=10)
def __init__(self, input_shape, lr=0.01, n_layers=2, n_hidden=8, rate_dropout=0.2, loss='risk_estimation'): print("initializing..., learing rate %s, n_layers %s, n_hidden %s, dropout rate %s." %(lr, n_layers, n_hidden, rate_dropout)) self.model = Sequential() self.model.add(Dropout(rate=rate_dropout, input_shape=(input_shape[0], input_shape[1]))) for i in range(0, n_layers - 1): self.model.add(LSTM(n_hidden * 4, return_sequences=True, activation='tanh', recurrent_activation='hard_sigmoid', kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', dropout=rate_dropout, recurrent_dropout=rate_dropout)) self.model.add(LSTM(n_hidden, return_sequences=False, activation='tanh', recurrent_activation='hard_sigmoid', kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', dropout=rate_dropout, recurrent_dropout=rate_dropout)) self.model.add(Dense(1, kernel_initializer=initializers.glorot_uniform())) # self.model.add(BatchNormalization(axis=-1, moving_mean_initializer=Constant(value=0.5), # moving_variance_initializer=Constant(value=0.25))) self.model.add(BatchRenormalization(axis=-1, beta_init=Constant(value=0.5))) self.model.add(Activation('relu_limited')) opt = RMSprop(lr=lr) self.model.compile(loss=loss, optimizer=opt, metrics=['accuracy'])
def simple_cnn(agent, env, dropout=0, learning_rate=1e-3, **args): with tf.device("/cpu:0"): state = tf.placeholder('float', [None, agent.input_dim]) S = Input(shape=[agent.input_dim]) h = Reshape( agent.input_dim_orig )(S) h = TimeDistributed( Convolution2D(16, 8, 8, subsample=(4, 4), border_mode='same', activation='relu', dim_ordering='tf'))(h) # h = Dropout(dropout)(h) h = TimeDistributed( Convolution2D(32, 4, 4, subsample=(2, 2), border_mode='same', activation='relu', dim_ordering='tf'))(h) h = Flatten()(h) # h = Dropout(dropout)(h) h = Dense(256, activation='relu')(h) # h = Dropout(dropout)(h) h = Dense(128, activation='relu')(h) V = Dense(env.action_space.n, activation='linear',init='zero')(h) model = Model(S, V) model.compile(loss='mse', optimizer=RMSprop(lr=learning_rate) ) return state, model
def init_model(): start_time = time.time() print 'Compiling Model ... ' model = Sequential() model.add(Dense(500, input_dim=784)) model.add(Activation('relu')) model.add(Dropout(0.4)) model.add(Dense(300)) model.add(Activation('relu')) model.add(Dropout(0.4)) model.add(Dense(10)) model.add(Activation('softmax')) rms = RMSprop() model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy']) print 'Model compiled in {0} seconds'.format(time.time() - start_time) return model
def init_model(): """ """ start_time = time.time() print 'Compiling model...' model = Sequential() model.add(Convolution2D(64, 3,3, border_mode='valid', input_shape=INPUT_SHAPE)) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(.25)) model.add(Flatten()) model.add(Dense(10)) model.add(Activation('softmax')) rms = RMSprop() model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy']) print 'Model compiled in {0} seconds'.format(time.time() - start_time) model.summary() return model
def test_fuctional_model_saving(): input = Input(shape=(3,)) x = Dense(2)(input) output = Dense(3)(x) model = Model(input, output) model.compile(loss=objectives.MSE, optimizer=optimizers.RMSprop(lr=0.0001), metrics=[metrics.categorical_accuracy]) x = np.random.random((1, 3)) y = np.random.random((1, 3)) model.train_on_batch(x, y) out = model.predict(x) _, fname = tempfile.mkstemp('.h5') save_model(model, fname) model = load_model(fname) os.remove(fname) out2 = model.predict(x) assert_allclose(out, out2, atol=1e-05)
def __init__(self): super().__init__() self._learning = True self._learning_rate = .1 self._discount = .1 self._epsilon = .9 # Create Model model = Sequential() model.add(Dense(2, init='lecun_uniform', input_shape=(2,))) model.add(Activation('relu')) model.add(Dense(10, init='lecun_uniform')) model.add(Activation('relu')) model.add(Dense(4, init='lecun_uniform')) model.add(Activation('linear')) rms = RMSprop() model.compile(loss='mse', optimizer=rms) self._model = model
def model(X_train, X_test, Y_train, Y_test): model = Sequential() model.add(Dense(512, input_shape=(784,))) model.add(Activation('relu')) model.add(Dropout({{uniform(0, 1)}})) model.add(Dense({{choice([400, 512, 600])}})) model.add(Activation('relu')) model.add(Dropout({{uniform(0, 1)}})) model.add(Dense(10)) model.add(Activation('softmax')) rms = RMSprop() model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy']) nb_epoch = 10 batch_size = 128 model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=2, validation_data=(X_test, Y_test)) score, acc = model.evaluate(X_test, Y_test, verbose=0) return {'loss': -acc, 'status': STATUS_OK, 'model': model}
def model(X_train, Y_train, X_test, Y_test): model = Sequential() model.add(Dense(50, input_shape=(784,))) model.add(Activation('relu')) model.add(Dropout({{uniform(0, 1)}})) model.add(Dense({{choice([20, 30, 40])}})) model.add(Activation('relu')) model.add(Dropout({{uniform(0, 1)}})) model.add(Dense(10)) model.add(Activation('softmax')) rms = RMSprop() model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy']) model.fit(X_train, Y_train, batch_size={{choice([64, 128])}}, nb_epoch=1, verbose=2, validation_data=(X_test, Y_test)) score, acc = model.evaluate(X_test, Y_test, verbose=0) print('Test accuracy:', acc) return {'loss': -acc, 'status': STATUS_OK, 'model': model}
def ensemble_model(X_train, X_test, Y_train, Y_test): model = Sequential() model.add(Dense(512, input_shape=(784,))) model.add(Activation('relu')) model.add(Dropout({{uniform(0, 1)}})) model.add(Dense({{choice([400, 512, 600])}})) model.add(Activation('relu')) model.add(Dropout({{uniform(0, 1)}})) model.add(Dense(10)) model.add(Activation('softmax')) rms = RMSprop() model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy']) nb_epoch = 10 batch_size = 128 model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=2, validation_data=(X_test, Y_test)) score, acc = model.evaluate(X_test, Y_test, verbose=0) return {'loss': -acc, 'status': STATUS_OK, 'model': model}
def model_masking(discrete_time, init_alpha, max_beta): model = Sequential() model.add(Masking(mask_value=mask_value, input_shape=(n_timesteps, n_features))) model.add(TimeDistributed(Dense(2))) model.add(Lambda(wtte.output_lambda, arguments={"init_alpha": init_alpha, "max_beta_value": max_beta})) if discrete_time: loss = wtte.loss(kind='discrete', reduce_loss=False).loss_function else: loss = wtte.loss(kind='continuous', reduce_loss=False).loss_function model.compile(loss=loss, optimizer=RMSprop( lr=lr), sample_weight_mode='temporal') return model
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 get_dense_model(): """Make keras model""" learning_rate=1e-4 inp = Input(shape=(80*80,)) h = Dense(200, activation='relu')(inp) out = Dense(1, activation='sigmoid')(h) model = Model(inp, out) optim = RMSprop(learning_rate) model.compile(optim, 'binary_crossentropy') try: model.load_weights('mod_weights_binary.h5') print('weights loaded') except: pass return model
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 test_saving_lambda_custom_objects(): input = Input(shape=(3,)) x = Lambda(lambda x: square_fn(x), output_shape=(3,))(input) output = Dense(3)(x) model = Model(input, output) model.compile(loss=objectives.MSE, optimizer=optimizers.RMSprop(lr=0.0001), metrics=[metrics.categorical_accuracy]) x = np.random.random((1, 3)) y = np.random.random((1, 3)) model.train_on_batch(x, y) out = model.predict(x) _, fname = tempfile.mkstemp('.h5') save_model(model, fname) model = load_model(fname, custom_objects={'square_fn': square_fn}) os.remove(fname) out2 = model.predict(x) assert_allclose(out, out2, atol=1e-05)
def init_model(): start_time = time.time() print 'Compiling Model ... ' model = Sequential() model.add(Dense(500, input_dim=784)) model.add(Activation('relu')) model.add(Dropout(0.4)) model.add(Dense(300)) model.add(Activation('relu')) model.add(Dropout(0.4)) model.add(Dense(10)) model.add(Activation('softmax')) rms = RMSprop() model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy']) print 'Model compield in {0} seconds'.format(time.time() - start_time) return model
def createNetwork(self): model = Sequential() firstlayer = True for l in self.layers: if firstlayer: model.add(Dense(l.size, input_shape=self.input_shape)) firstlayer = False else: model.add(Dense(l.size)) model.add(Activation(l.activation)) if l.dropout > 0: model.add(Dropout(l.dropout)) # final part model.add(Dense(self.noutputs)) if Config.task_type == "classification": model.add(Activation('softmax')) model.compile(loss=Config.loss, optimizer=RMSprop()) return model
def create_model(self, epsilon): """Return a compiled model and the state and action input layers with the given epsilon for numerical stability. """ inputs = Input(shape=(self.state_shape,)) action_input = Input(shape=(self.action_shape,)) x1 = Dense(self.neurons_per_layer[0], activation='relu')(inputs) x1 = Dense(self.neurons_per_layer[1], activation='relu')(x1) x2 = Dense(self.neurons_per_layer[1], activation='relu')(action_input) x = add([x1, x2]) for n in self.neurons_per_layer[2:]: x = Dense(n, activation='relu')(x) outputs = Dense(self.action_shape)(x) model = Model(inputs=[inputs, action_input], outputs=outputs) assert self.optimizer_choice in ['adam', 'rmsprop'] if self.optimizer_choice == 'adam': opti = Adam(lr=self.alpha, epsilon=epsilon) else: opti = RMSprop(lr=self.alpha, epsilon=epsilon) model.compile(optimizer=opti, loss='mse') return model, inputs, action_input
def build_model(layers): model = Sequential() model.add(Dense(layers[1], input_shape=(20,), activation='relu')) model.add(Dropout(0.2)) # Dropout overfitting # model.add(Dense(layers[2],activation='tanh')) # model.add(Dropout(0.2)) # Dropout overfitting model.add(Dense(layers[2], activation='relu')) model.add(Dropout(0.2)) # Dropout overfitting model.add(Dense(output_dim=layers[3])) model.add(Activation("softmax")) model.summary() start = time.time() # sgd = SGD(lr=0.5, decay=1e-6, momentum=0.9, nesterov=True) # model.compile(loss="mse", optimizer=sgd) model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=['accuracy']) # Nadam RMSprop() print "Compilation Time : ", time.time() - start return model
def createModel(self, inputs, outputs, hiddenLayers, activationType): model = Sequential() if len(hiddenLayers) == 0: model.add(Dense(self.output_size, input_shape=(self.input_size,), init='lecun_uniform')) model.add(Activation("linear")) else : model.add(Dense(hiddenLayers[0], input_shape=(self.input_size,), init='lecun_uniform')) if (activationType == "LeakyReLU") : model.add(LeakyReLU(alpha=0.01)) else : model.add(Activation(activationType)) for index in range(1, len(hiddenLayers)-1): layerSize = hiddenLayers[index] model.add(Dense(layerSize, init='lecun_uniform')) if (activationType == "LeakyReLU") : model.add(LeakyReLU(alpha=0.01)) else : model.add(Activation(activationType)) model.add(Dense(self.output_size, init='lecun_uniform')) model.add(Activation("linear")) optimizer = optimizers.RMSprop(lr=1, rho=0.9, epsilon=1e-06) model.compile(loss="mse", optimizer=optimizer) return model
def __init__(self, action_space, batch_size=32, screen=(84, 84), swap_freq=200): from keras.optimizers import RMSprop # ----- self.screen = screen self.input_depth = 1 self.past_range = 3 self.observation_shape = (self.input_depth * self.past_range,) + self.screen self.batch_size = batch_size _, _, self.train_net, adventage = build_network(self.observation_shape, action_space.n) self.train_net.compile(optimizer=RMSprop(epsilon=0.1, rho=0.99), loss=[value_loss(), policy_loss(adventage, args.beta)]) self.pol_loss = deque(maxlen=25) self.val_loss = deque(maxlen=25) self.values = deque(maxlen=25) self.entropy = deque(maxlen=25) self.swap_freq = swap_freq self.swap_counter = self.swap_freq self.unroll = np.arange(self.batch_size) self.targets = np.zeros((self.batch_size, action_space.n)) self.counter = 0
def __init__(self, action_space, batch_size=32, screen=(84, 84), swap_freq=200): from keras.optimizers import RMSprop # ----- self.screen = screen self.input_depth = 1 self.past_range = 3 self.observation_shape = (self.input_depth * self.past_range,) + self.screen self.batch_size = batch_size self.action_value = build_network(self.observation_shape, action_space.n) self.action_value.compile(optimizer=RMSprop(clipnorm=1.), loss='mse') self.losses = deque(maxlen=25) self.q_values = deque(maxlen=25) self.swap_freq = swap_freq self.swap_counter = self.swap_freq self.unroll = np.arange(self.batch_size) self.frames = 0
def __init__(self, action_space, screen=(84, 84), n_step=8, discount=0.99): from keras.optimizers import RMSprop # ----- self.screen = screen self.input_depth = 1 self.past_range = 3 self.observation_shape = (self.input_depth * self.past_range,) + self.screen self.action_value = build_network(self.observation_shape, action_space.n) self.action_value.compile(optimizer=RMSprop(clipnorm=1.), loss='mse') # clipnorm=1. self.action_space = action_space self.observations = np.zeros(self.observation_shape) self.last_observations = np.zeros_like(self.observations) # ----- self.n_step_observations = deque(maxlen=n_step) self.n_step_actions = deque(maxlen=n_step) self.n_step_rewards = deque(maxlen=n_step) self.n_step = n_step self.discount = discount self.counter = 0
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 main(): from keras.optimizers import Adam, RMSprop, SGD from metric import dice_coef, dice_coef_loss import numpy as np img_rows = IMG_ROWS img_cols = IMG_COLS optimizer = RMSprop(lr=0.045, rho=0.9, epsilon=1.0) model = get_unet(Adam(lr=1e-5)) model.compile(optimizer=optimizer, loss=dice_coef_loss, metrics=[dice_coef]) x = np.random.random((1, 1,img_rows,img_cols)) res = model.predict(x, 1) print res #print 'res', res[0].shape print 'params', model.count_params() print 'layer num', len(model.layers) #
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 _init_MLP(self, mlp_layers): """Initialize the MLP that corresponds to the Q function. Parameters ---------- state_dim : The state dimensionality nb_actions : The number of possible actions mlp_layers : A list consisting of an integer number of neurons for each hidden layer. Default = [20, 20] """ model = Sequential() for i in range(len(mlp_layers)): if i == 0: model.add(Dense(mlp_layers[i], input_dim=self.state_dim + self.nb_actions)) else: model.add(Dense(mlp_layers[i])) model.add(Activation('relu')) model.add(Dense(1)) model.add(Activation('relu')) rmsprop = RMSprop() model.compile(loss='mean_squared_error', optimizer=rmsprop) return model
def make_discriminator(self): # TODO just to have something, 5 layers vgg-like inputs = Input(shape=self.img_shape) enc1 = self.downsampling_block_basic(inputs, 64, 7) enc2 = self.downsampling_block_basic(enc1, 64, 7) enc3 = self.downsampling_block_basic(enc2, 92, 7) enc4 = self.downsampling_block_basic(enc3, 128, 7) enc5 = self.downsampling_block_basic(enc4, 128, 7) flat = Flatten()(enc5) dense1 = Dense(512, activation='sigmoid')(flat) dense2 = Dense(512, activation='sigmoid')(dense1) fake = Dense(1, activation='sigmoid', name='generation')(dense2) # Dense(2,... two classes : real and fake # change last activation to softmax ? discriminator = kmodels.Model(input=inputs, output=fake) lr = 1e-04 optimizer = RMSprop(lr=lr, rho=0.9, epsilon=1e-8, clipnorm=10) print (' Optimizer discriminator: rmsprop. Lr: {}. Rho: 0.9, epsilon=1e-8, ' 'clipnorm=10'.format(lr)) discriminator.compile(loss='binary_crossentropy', optimizer=optimizer) # TODO metrics=metrics, return discriminator
def build_functions(self): S = Input(shape=self.state_size) NS = Input(shape=self.state_size) A = Input(shape=(1,), dtype='int32') R = Input(shape=(1,), dtype='float32') T = Input(shape=(1,), dtype='int32') self.build_model() self.value_fn = K.function([S], self.model(S)) VS = self.model(S) VNS = disconnected_grad(self.model(NS)) future_value = (1-T) * VNS.max(axis=1, keepdims=True) discounted_future_value = self.discount * future_value target = R + discounted_future_value cost = ((VS[:, A] - target)**2).mean() opt = RMSprop(0.0001) params = self.model.trainable_weights updates = opt.get_updates(params, [], cost) self.train_fn = K.function([S, NS, A, R, T], cost, updates=updates)
def image_caption_model(vocab_size=2500, embedding_matrix=None, lang_dim=100, max_caplen=28, img_dim=2048, clipnorm=1): print('generating vocab_history model v5') # text: current word lang_input = Input(shape=(1,)) img_input = Input(shape=(img_dim,)) seq_input = Input(shape=(max_caplen,)) vhist_input = Input(shape=(vocab_size,)) if embedding_matrix is not None: x = Embedding(output_dim=lang_dim, input_dim=vocab_size, init='glorot_uniform', input_length=1, weights=[embedding_matrix])(lang_input) else: x = Embedding(output_dim=lang_dim, input_dim=vocab_size, init='glorot_uniform', input_length=1)(lang_input) lang_embed = Reshape((lang_dim,))(x) lang_embed = merge([lang_embed, seq_input], mode='concat', concat_axis=-1) lang_embed = Dense(lang_dim)(lang_embed) lang_embed = Dropout(0.25)(lang_embed) merge_layer = merge([img_input, lang_embed, vhist_input], mode='concat', concat_axis=-1) merge_layer = Reshape((1, lang_dim+img_dim+vocab_size))(merge_layer) gru_1 = GRU(img_dim)(merge_layer) gru_1 = Dropout(0.25)(gru_1) gru_1 = Dense(img_dim)(gru_1) gru_1 = BatchNormalization()(gru_1) gru_1 = Activation('softmax')(gru_1) attention_1 = merge([img_input, gru_1], mode='mul', concat_axis=-1) attention_1 = merge([attention_1, lang_embed, vhist_input], mode='concat', concat_axis=-1) attention_1 = Reshape((1, lang_dim + img_dim + vocab_size))(attention_1) gru_2 = GRU(1024)(attention_1) gru_2 = Dropout(0.25)(gru_2) gru_2 = Dense(vocab_size)(gru_2) gru_2 = BatchNormalization()(gru_2) out = Activation('softmax')(gru_2) model = Model(input=[img_input, lang_input, seq_input, vhist_input], output=out) model.compile(loss='categorical_crossentropy', optimizer=RMSprop(lr=0.0001, clipnorm=1.)) return model
def run_benchmark(self, gpus=0): input_dim_1 = 40 input_dim_2 = 60 input_shape = (self.num_samples, input_dim_1, 60) x, y = generate_text_input_data(input_shape) # build the model: a single LSTM model = Sequential() model.add(LSTM(128, input_shape=(input_dim_1, input_dim_2))) model.add(Dense(input_dim_2), activation='softmax') optimizer = RMSprop(lr=0.01) if keras.backend.backend() is "tensorflow" and gpus > 1: model = multi_gpu_model(model, gpus=gpus) model.compile(loss='categorical_crossentropy', optimizer=optimizer) # create a distributed trainer for cntk if keras.backend.backend() is "cntk" and gpus > 1: start, end = cntk_gpu_mode_config(model, x.shape[0]) x = x[start: end] y = y[start: end] time_callback = timehistory.TimeHistory() model.fit(x, y, batch_size=self.batch_size, epochs=self.epochs, callbacks=[time_callback]) self.total_time = 0 for i in range(1, self.epochs): self.total_time += time_callback.times[i]
def run_benchmark(self, gpus=0): num_classes = 10 # Generate random input data input_shape = (self.num_samples, 28, 28) x_train, y_train = generate_img_input_data(input_shape) x_train = x_train.reshape(self.num_samples, 784) x_train = x_train.astype('float32') x_train /= 255 # convert class vectors to binary class matrices y_train = keras.utils.to_categorical(y_train, num_classes) model = Sequential() model.add(Dense(512, activation='relu', input_shape=(784,))) model.add(Dropout(0.2)) model.add(Dense(512, activation='relu')) model.add(Dropout(0.2)) model.add(Dense(num_classes, activation='softmax')) if keras.backend.backend() is "tensorflow" and gpus > 1: model = multi_gpu_model(model, gpus=gpus) model.compile(loss='categorical_crossentropy', optimizer=RMSprop(), metrics=['accuracy']) # create a distributed trainer for cntk if keras.backend.backend() is "cntk" and gpus > 1: start, end = cntk_gpu_mode_config(model, x_train.shape[0]) x_train = x_train[start: end] y_train = y_train[start: end] time_callback = timehistory.TimeHistory() model.fit(x_train, y_train, batch_size=self.batch_size, epochs=self.epochs, verbose=1, callbacks=[time_callback]) self.total_time = 0 for i in range(1, self.epochs): self.total_time += time_callback.times[i]
def init_model_1(): start_time = time.time() print 'Compiling model...' model = Sequential() model.add(Convolution2D(64, 3,3, border_mode='valid',input_shape=INPUT_SHAPE)) model.add(Activation('relu')) model.add(Convolution2D(64, 3,3, border_mode='valid')) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(.25)) model.add(Flatten()) model.add(Dense(128)) model.add(Activation('relu')) model.add(Dropout(.5)) model.add(Dense(10)) model.add(Activation('softmax')) rms = RMSprop() model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy']) print 'Model compiled in {0} seconds'.format(time.time() - start_time) return model
def __init__(self, data_dir, model_filename, weights_filename, categories_filename, history_filename, train_test_split_percentage, num_training_epochs, verbose): self.sample_size = 64 # input image size (will rescale data to this size) self.optimizer = RMSprop(lr=0.001, rho=0.9, epsilon=1e-08) self.train_test_split_percentage = train_test_split_percentage self.data_dir = data_dir self.model_filename = model_filename self.weights_filename = weights_filename self.categories_filename = categories_filename self.history_filename = history_filename self.num_training_epochs = num_training_epochs self.verbose = verbose
def __init__(self, data_dir, model_architecture, model_filename, weights_filename, categories_filename, history_filename, train_test_split_percentage, num_training_epochs, verbose): self.sample_size = 224 # this needs to match the input size of the pre-trained network, or you need to remove the input layer from the current network and replace it with the input size you would like self.optimizer = RMSprop(lr=0.001, rho=0.9, epsilon=1e-08) self.train_test_split_percentage = train_test_split_percentage self.data_dir = data_dir self.model_architecture = model_architecture self.model_filename = model_filename self.weights_filename = weights_filename self.categories_filename = categories_filename self.history_filename = history_filename self.num_training_epochs = num_training_epochs self.verbose = verbose
def test_rmsprop(): _test_optimizer(RMSprop()) _test_optimizer(RMSprop(decay=1e-3))
def test_sequential_model_saving(): model = Sequential() model.add(Dense(2, input_dim=3)) model.add(RepeatVector(3)) model.add(TimeDistributed(Dense(3))) model.compile(loss=objectives.MSE, optimizer=optimizers.RMSprop(lr=0.0001), metrics=[metrics.categorical_accuracy], sample_weight_mode='temporal') x = np.random.random((1, 3)) y = np.random.random((1, 3, 3)) model.train_on_batch(x, y) out = model.predict(x) _, fname = tempfile.mkstemp('.h5') save_model(model, fname) new_model = load_model(fname) os.remove(fname) out2 = new_model.predict(x) assert_allclose(out, out2, atol=1e-05) # test that new updates are the same with both models x = np.random.random((1, 3)) y = np.random.random((1, 3, 3)) model.train_on_batch(x, y) new_model.train_on_batch(x, y) out = model.predict(x) out2 = new_model.predict(x) assert_allclose(out, out2, atol=1e-05)
def _compile(self): """ compile self.q_vals """ if (self._update_rule=="sgd"): optimizer = SGD(lr=self._lr, momentum=self._momentum, nesterov=False) elif (self._update_rule=="rmsprop"): optimizer = RMSprop(lr=self._lr, rho=self._rho, epsilon=self._rms_epsilon) else: raise Exception('The update_rule '+self._update_rule+' is not implemented.') self.q_vals.compile(optimizer=optimizer, loss='mse')
def build_stateful_lstm_model(batch_size,time_step,input_dim,output_dim,dropout=0.2,rnn_layer_num=2,hidden_dim=128,hidden_num=0,rnn_type='LSTM'): model = Sequential() # may use BN for accelerating speed # add first LSTM if rnn_type == 'LSTM': rnn_cell = LSTM elif rnn_type == 'GRU': rnn_cell = GRU elif rnn_type == 'SimpleRNN': rnn_cell = SimpleRNN else: raise ValueError('Option rnn_type could only be configured as LSTM, GRU or SimpleRNN') model.add(rnn_cell(hidden_dim,return_sequences=True,batch_input_shape=(batch_size,time_step,input_dim))) for _ in range(rnn_layer_num-2): model.add(rnn_cell(hidden_dim, return_sequence=True)) # prevent over fitting model.add(Dropout(dropout)) model.add(rnn_cell(hidden_dim,return_sequences=False)) # add hidden layer for _ in range(hidden_num): model.add(Dense(hidden_dim)) model.add(Dropout(dropout)) model.add(Dense(output_dim)) rmsprop = RMSprop(lr=0.01) adam = Adam(lr=0.01) model.compile(loss='mse',metrics=['acc'],optimizer=rmsprop) return model
def discriminator_model(self): if self.DM: return self.DM optimizer = RMSprop(lr=0.0002, decay=6e-8) self.DM = Sequential() self.DM.add(self.discriminator()) self.DM.compile(loss='binary_crossentropy', optimizer=optimizer,\ metrics=['accuracy']) return self.DM
def adversarial_model(self): if self.AM: return self.AM optimizer = RMSprop(lr=0.0001, decay=3e-8) self.AM = Sequential() self.AM.add(self.generator()) self.AM.add(self.discriminator()) self.AM.compile(loss='binary_crossentropy', optimizer=optimizer,\ metrics=['accuracy']) return self.AM
def model(X_train, Y_train, X_test, Y_test): ''' Model providing function: Create Keras model with double curly brackets dropped-in as needed. Return value has to be a valid python dictionary with two customary keys: - loss: Specify a numeric evaluation metric to be minimized - status: Just use STATUS_OK and see hyperopt documentation if not feasible The last one is optional, though recommended, namely: - model: specify the model just created so that we can later use it again. ''' model = Sequential() model.add(Dense(512, input_shape=(784,))) model.add(Activation('relu')) model.add(Dropout({{uniform(0, 1)}})) model.add(Dense({{choice([256, 512, 1024])}})) model.add(Activation('relu')) model.add(Dropout({{uniform(0, 1)}})) model.add(Dense(10)) model.add(Activation('softmax')) rms = RMSprop() model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy']) model.fit(X_train, Y_train, batch_size={{choice([64, 128])}}, nb_epoch=1, verbose=2, validation_data=(X_test, Y_test)) score, acc = model.evaluate(X_test, Y_test, verbose=0) print('Test accuracy:', acc) return {'loss': -acc, 'status': STATUS_OK, 'model': model}
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']