Python keras.layers.RepeatVector() Examples
The following are 30
code examples of keras.layers.RepeatVector().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
keras.layers
, or try the search function
.
Example #1
Source File: test_keras.py From coremltools with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_repeat_vector(self): from keras.layers import RepeatVector model = Sequential() model.add(RepeatVector(3, input_shape=(5,))) input_names = ["input"] output_names = ["output"] spec = keras.convert(model, input_names, output_names).get_spec() self.assertIsNotNone(spec) # Test the model class self.assertIsNotNone(spec.description) self.assertTrue(spec.HasField("neuralNetwork")) # Test the inputs and outputs self.assertEquals(len(spec.description.input), len(input_names)) six.assertCountEqual( self, input_names, [x.name for x in spec.description.input] ) self.assertEquals(len(spec.description.output), len(output_names)) six.assertCountEqual( self, output_names, [x.name for x in spec.description.output] ) layers = spec.neuralNetwork.layers self.assertIsNotNone(layers[0].sequenceRepeat)
Example #2
Source File: test_keras2_numeric.py From coremltools with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_tiny_babi_rnn(self): vocab_size = 10 embed_hidden_size = 8 story_maxlen = 5 query_maxlen = 5 input_tensor_1 = Input(shape=(story_maxlen,)) x1 = Embedding(vocab_size, embed_hidden_size)(input_tensor_1) x1 = Dropout(0.3)(x1) input_tensor_2 = Input(shape=(query_maxlen,)) x2 = Embedding(vocab_size, embed_hidden_size)(input_tensor_2) x2 = Dropout(0.3)(x2) x2 = LSTM(embed_hidden_size, return_sequences=False)(x2) x2 = RepeatVector(story_maxlen)(x2) x3 = add([x1, x2]) x3 = LSTM(embed_hidden_size, return_sequences=False)(x3) x3 = Dropout(0.3)(x3) x3 = Dense(vocab_size, activation="softmax")(x3) model = Model(inputs=[input_tensor_1, input_tensor_2], outputs=[x3]) self._test_model(model, one_dim_seq_flags=[True, True])
Example #3
Source File: SceneDesc.py From Image-Captioning with MIT License | 6 votes |
def create_model(self, ret_model = False): image_model = Sequential() image_model.add(Dense(EMBEDDING_DIM, input_dim = 4096, activation='relu')) image_model.add(RepeatVector(self.max_length)) lang_model = Sequential() lang_model.add(Embedding(self.vocab_size, 256, input_length=self.max_length)) lang_model.add(LSTM(256,return_sequences=True)) lang_model.add(TimeDistributed(Dense(EMBEDDING_DIM))) model = Sequential() model.add(Merge([image_model, lang_model], mode='concat')) model.add(LSTM(1000,return_sequences=False)) model.add(Dense(self.vocab_size)) model.add(Activation('softmax')) print ("Model created!") if(ret_model==True): return model model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy']) return model
Example #4
Source File: test_keras2.py From coremltools with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_repeat_vector(self): from keras.layers import RepeatVector model = Sequential() model.add(RepeatVector(3, input_shape=(5,))) input_names = ["input"] output_names = ["output"] spec = keras.convert(model, input_names, output_names).get_spec() self.assertIsNotNone(spec) # Test the model class self.assertIsNotNone(spec.description) self.assertTrue(spec.HasField("neuralNetwork")) # Test the inputs and outputs self.assertEquals(len(spec.description.input), len(input_names)) self.assertEqual( sorted(input_names), sorted(map(lambda x: x.name, spec.description.input)) ) self.assertEquals(len(spec.description.output), len(output_names)) self.assertEqual( sorted(output_names), sorted(map(lambda x: x.name, spec.description.output)) ) layers = spec.neuralNetwork.layers self.assertIsNotNone(layers[0].sequenceRepeat)
Example #5
Source File: layers.py From cakechat with Apache License 2.0 | 6 votes |
def repeat_vector(inputs): """ Temporary solution: Use this function within a Lambda layer to get a repeated layer with a variable 1-st dimension (seq_len). May be useful to further feed it to a Concatenate layer. inputs == (layer_for_repeat, layer_for_getting_rep_num): layer_for_repeat: shape == (batch_size, vector_dim) layer_for_getting_rep_num: shape == (batch_size, seq_len, ...) :return: repeated layer_for_repeat, shape == (batch_size, seq_len, vector_dim) """ layer_for_repeat, layer_for_getting_rep_num = inputs repeated_vector = RepeatVector( n=K.shape(layer_for_getting_rep_num)[1], name='custom_repeat_vector')(layer_for_repeat) # shape == (batch_size, seq_len, vector_dim) return repeated_vector
Example #6
Source File: ir2tagsets_seq.py From plastering with MIT License | 6 votes |
def fit_dep(self, x, y=None): timesteps = x.shape[1] input_dim = x.shape[2] inputs = Input(shape=(timesteps, input_dim)) encoded = LSTM(self.latent_dim)(inputs) decoded = RepeatVector(timesteps)(encoded) decoded = LSTM(input_dim, return_sequences=True)(decoded) encoded_input = Input(shape=(self.latent_dim,)) self.sequence_autoencoder = Model(inputs, decoded) self.encoder = Model(inputs, encoded) self.sequence_autoencoder.compile( #loss='binary_crossentropy', loss='categorical_crossentropy', optimizer='RMSprop', metrics=['binary_accuracy'] ) self.sequence_autoencoder.fit(x, x)
Example #7
Source File: core_test.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_repeat_vector(): layer_test(layers.RepeatVector, kwargs={'n': 3}, input_shape=(3, 2))
Example #8
Source File: core_test.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_repeat_vector(): layer_test(layers.RepeatVector, kwargs={'n': 3}, input_shape=(3, 2))
Example #9
Source File: test_model_saving.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_sequential_model_saving(): model = Sequential() model.add(Dense(2, input_shape=(3,))) model.add(RepeatVector(3)) model.add(TimeDistributed(Dense(3))) model.compile(loss=losses.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)
Example #10
Source File: keras_bert_classify_bi_lstm.py From nlp_xiaojiang with MIT License | 5 votes |
def attention(inputs, single_attention_vector=False): # attention机制 time_steps = k_keras.int_shape(inputs)[1] input_dim = k_keras.int_shape(inputs)[2] x = Permute((2, 1))(inputs) x = Dense(time_steps, activation='softmax')(x) if single_attention_vector: x = Lambda(lambda x: k_keras.mean(x, axis=1))(x) x = RepeatVector(input_dim)(x) a_probs = Permute((2, 1))(x) output_attention_mul = Multiply()([inputs, a_probs]) return output_attention_mul
Example #11
Source File: keras_bert_classify_text_cnn.py From nlp_xiaojiang with MIT License | 5 votes |
def attention(inputs, single_attention_vector=False): # attention机制 time_steps = k_keras.int_shape(inputs)[1] input_dim = k_keras.int_shape(inputs)[2] x = Permute((2, 1))(inputs) x = Dense(time_steps, activation='softmax')(x) if single_attention_vector: x = Lambda(lambda x: k_keras.mean(x, axis=1))(x) x = RepeatVector(input_dim)(x) a_probs = Permute((2, 1))(x) output_attention_mul = Multiply()([inputs, a_probs]) return output_attention_mul
Example #12
Source File: dl_models.py From Sarcasm-Detection with MIT License | 5 votes |
def stateless_attention_model(**kwargs): X = LSTM(kwargs['hidden_units'], kernel_initializer='he_normal', activation='tanh', dropout=kwargs['dropout'], return_sequences=True)(kwargs['embeddings']) attention_layer = Permute((2, 1))(X) attention_layer = Dense(kwargs['max_tweet_length'], activation='softmax')(attention_layer) attention_layer = Lambda(lambda x: K.mean(x, axis=1), name='dim_reduction')(attention_layer) attention_layer = RepeatVector(int(X.shape[2]))(attention_layer) attention_probabilities = Permute((2, 1), name='attention_probs')(attention_layer) attention_layer = Multiply()([X, attention_probabilities]) attention_layer = Flatten()(attention_layer) return attention_layer
Example #13
Source File: layers_export.py From Fabrik with GNU General Public License v3.0 | 5 votes |
def repeat_vector(layer, layer_in, layerId, tensor=True): out = {layerId: RepeatVector(layer['params']['n'])} if tensor: out[layerId] = out[layerId](*layer_in) return out
Example #14
Source File: seq2seq_v2_glove.py From keras-question-and-answering-web-api with MIT License | 5 votes |
def create_model(self): hidden_units = 256 context_inputs = Input(shape=(None, self.glove_model.embedding_size), name='context_inputs') encoded_context = Dropout(0.3)(context_inputs) question_inputs = Input(shape=(None, self.glove_model.embedding_size), name='question_inputs') encoded_question = Dropout(0.3)(question_inputs) encoded_question = LSTM(units=self.glove_model.embedding_size, name='question_lstm')(encoded_question) encoded_question = RepeatVector(self.max_encoder_paragraph_seq_length)(encoded_question) merged = add([encoded_context, encoded_question]) encoder_outputs, encoder_state_h, encoder_state_c = LSTM(units=hidden_units, name='encoder_lstm', return_state=True)(merged) encoder_states = [encoder_state_h, encoder_state_c] decoder_inputs = Input(shape=(None, self.num_decoder_tokens), name='decoder_inputs') decoder_lstm = LSTM(units=hidden_units, return_state=True, return_sequences=True, name='decoder_lstm') decoder_outputs, decoder_state_h, decoder_state_c = decoder_lstm(decoder_inputs, initial_state=encoder_states) decoder_dense = Dense(units=self.num_decoder_tokens, activation='softmax', name='decoder_dense') decoder_outputs = decoder_dense(decoder_outputs) self.model = Model([context_inputs, question_inputs, decoder_inputs], decoder_outputs) self.model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) self.encoder_model = Model([context_inputs, question_inputs], encoder_states) decoder_state_inputs = [Input(shape=(hidden_units,)), Input(shape=(hidden_units,))] decoder_outputs, state_h, state_c = decoder_lstm(decoder_inputs, initial_state=decoder_state_inputs) decoder_states = [state_h, state_c] decoder_outputs = decoder_dense(decoder_outputs) self.decoder_model = Model([decoder_inputs] + decoder_state_inputs, [decoder_outputs] + decoder_states)
Example #15
Source File: rnn.py From keras-text-summarization with MIT License | 5 votes |
def __init__(self, config): self.num_input_tokens = config['num_input_tokens'] self.max_input_seq_length = config['max_input_seq_length'] self.num_target_tokens = config['num_target_tokens'] self.max_target_seq_length = config['max_target_seq_length'] self.input_word2idx = config['input_word2idx'] self.input_idx2word = config['input_idx2word'] self.target_word2idx = config['target_word2idx'] self.target_idx2word = config['target_idx2word'] self.config = config self.version = 0 if 'version' in config: self.version = config['version'] print('max_input_seq_length', self.max_input_seq_length) print('max_target_seq_length', self.max_target_seq_length) print('num_input_tokens', self.num_input_tokens) print('num_target_tokens', self.num_target_tokens) # encoder input model model = Sequential() model.add(Embedding(output_dim=128, input_dim=self.num_input_tokens, input_length=self.max_input_seq_length)) # encoder model model.add(LSTM(128)) model.add(RepeatVector(self.max_target_seq_length)) # decoder model model.add(LSTM(128, return_sequences=True)) model.add(TimeDistributed(Dense(self.num_target_tokens, activation='softmax'))) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) self.model = model
Example #16
Source File: rnn.py From keras-text-summarization with MIT License | 5 votes |
def __init__(self, config): self.num_input_tokens = config['num_input_tokens'] self.max_input_seq_length = config['max_input_seq_length'] self.num_target_tokens = config['num_target_tokens'] self.max_target_seq_length = config['max_target_seq_length'] self.input_word2idx = config['input_word2idx'] self.input_idx2word = config['input_idx2word'] self.target_word2idx = config['target_word2idx'] self.target_idx2word = config['target_idx2word'] self.config = config self.version = 0 if 'version' in config: self.version = config['version'] # article input model inputs1 = Input(shape=(self.max_input_seq_length,)) article1 = Embedding(self.num_input_tokens, 128)(inputs1) article2 = Dropout(0.3)(article1) # summary input model inputs2 = Input(shape=(min(self.num_target_tokens, RecursiveRNN2.MAX_DECODER_SEQ_LENGTH), )) summ1 = Embedding(self.num_target_tokens, 128)(inputs2) summ2 = Dropout(0.3)(summ1) summ3 = LSTM(128)(summ2) summ4 = RepeatVector(self.max_input_seq_length)(summ3) # decoder model decoder1 = concatenate([article2, summ4]) decoder2 = LSTM(128)(decoder1) outputs = Dense(self.num_target_tokens, activation='softmax')(decoder2) # tie it together [article, summary] [word] model = Model(inputs=[inputs1, inputs2], outputs=outputs) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) print(model.summary()) self.model = model
Example #17
Source File: rnn.py From keras-text-summarization with MIT License | 5 votes |
def __init__(self, config): self.num_input_tokens = config['num_input_tokens'] self.max_input_seq_length = config['max_input_seq_length'] self.num_target_tokens = config['num_target_tokens'] self.max_target_seq_length = config['max_target_seq_length'] self.input_word2idx = config['input_word2idx'] self.input_idx2word = config['input_idx2word'] self.target_word2idx = config['target_word2idx'] self.target_idx2word = config['target_idx2word'] self.config = config self.version = 0 if 'version' in config: self.version = config['version'] # article input model inputs1 = Input(shape=(self.max_input_seq_length,)) article1 = Embedding(self.num_input_tokens, 128)(inputs1) article2 = LSTM(128)(article1) article3 = RepeatVector(128)(article2) # summary input model inputs2 = Input(shape=(self.max_target_seq_length,)) summ1 = Embedding(self.num_target_tokens, 128)(inputs2) summ2 = LSTM(128)(summ1) summ3 = RepeatVector(128)(summ2) # decoder model decoder1 = concatenate([article3, summ3]) decoder2 = LSTM(128)(decoder1) outputs = Dense(self.num_target_tokens, activation='softmax')(decoder2) # tie it together [article, summary] [word] model = Model(inputs=[inputs1, inputs2], outputs=outputs) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) print(model.summary()) self.model = model
Example #18
Source File: models.py From Neural-Headline-Generator-CN with GNU General Public License v3.0 | 5 votes |
def r2r(dic_len,input_length,output_length,emb_dim=128,hidden=512,deepth=(1,1)): model = Sequential() model.add(Embedding(input_dim=dic_len, mask_zero=True, output_dim=emb_dim, input_length=input_length)) for l in range(deepth[0]): model.add(LSTM(output_dim=hidden, return_sequences=(False if l==deepth[0]-1 else True))) model.add(RepeatVector(output_length)) model.add(Dropout(0.5)) for l in range(deepth[0]): model.add(LSTM(hidden, return_sequences=True)) model.add(TimeDistributed(Dense(units=dic_len, activation='softmax'))) model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['acc']) return model
Example #19
Source File: models.py From Neural-Headline-Generator-CN with GNU General Public License v3.0 | 5 votes |
def c2r(dic_len,input_length,output_length,emb_dim=128,hidden=512,nb_filter=64,deepth=(1,1),stride=3): model = Sequential() model.add(Embedding(input_dim=dic_len, output_dim=emb_dim, input_length=input_length)) for l in range(deepth[0]): model.add(Conv1D(nb_filter,3,activation='relu')) model.add(GlobalMaxPooling1D()) model.add(Dropout(0.5)) model.add(RepeatVector(output_length)) for l in range(deepth[0]): model.add(LSTM(hidden, return_sequences=True)) model.add(TimeDistributed(Dense(units=dic_len, activation='softmax'))) model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['acc']) return model
Example #20
Source File: autoencoder.py From keras_lstm_vae with MIT License | 5 votes |
def create_lstm_autoencoder(input_dim, timesteps, latent_dim): """ Creates an LSTM Autoencoder (VAE). Returns Autoencoder, Encoder, Generator. (All code by fchollet - see reference.) # Arguments input_dim: int. timesteps: int, input timestep dimension. latent_dim: int, latent z-layer shape. # References - [Building Autoencoders in Keras](https://blog.keras.io/building-autoencoders-in-keras.html) """ inputs = Input(shape=(timesteps, input_dim,)) encoded = LSTM(latent_dim)(inputs) decoded = RepeatVector(timesteps)(encoded) decoded = LSTM(input_dim, return_sequences=True)(decoded) sequence_autoencoder = Model(inputs, decoded) encoder = Model(inputs, encoded) autoencoder = Model(inputs, decoded) autoencoder.compile(optimizer='adam', loss='mse') return autoencoder
Example #21
Source File: interaction_rnn.py From NNCF with MIT License | 5 votes |
def call(self, x, mask=None): U, V = x[0], x[1] x = merge([U, V], mode='concat', dot_axes=[1, 1]) x = RepeatVector(self.num_steps)(x) response = self.RNN(x) if self.DNN is not None: response = self.DNN(response) return response
Example #22
Source File: layers.py From cakechat with Apache License 2.0 | 5 votes |
def softmax_with_temperature(logits, temperature): """ :param logits: shape == (batch_size, seq_len, vocab_size), float32 :param temperature: shape == (batch_size, 1), float32 :return: transformed tokens probs, shape == (batch_size, seq_len, vocab_size), float32 """ def softmax_with_temp(args): logits, temperature = args repeat_num = K.shape(logits)[1] temperature_repeated = RepeatVector(repeat_num)(temperature) # shape == (batch_size, seq_len) scaled_logits = logits / temperature_repeated # shape == (batch_size, seq_len, vocab_size) # for numerical stability (e.g. for low temperatures): scaled_logits = scaled_logits - K.max(scaled_logits, axis=2, keepdims=True) # shape == (batch_size, seq_len, vocab_size) transformed_probs = K.softmax(scaled_logits) # shape == (batch_size, seq_len, vocab_size) return transformed_probs # wrap transformation in Lambda to turn the result to Keras layer transformed_probs = Lambda( function=softmax_with_temp, mask=lambda inputs, inputs_masks: inputs_masks[0], # function to get mask of the first input name='softmax_with_temperature')([logits, temperature]) # output shape == (batch_size, seq_len, vocab_size) return transformed_probs
Example #23
Source File: caption_generator.py From cv with MIT License | 5 votes |
def create_model(self, ret_model = False): #image branch image_model = Sequential() image_model.add(Dense(EMBEDDING_DIM, input_dim = 2048, activation='relu')) image_model.add(RepeatVector(self.max_cap_len)) #text branch lang_model = Sequential() lang_model.add(Embedding(self.vocab_size, 256, input_length=self.max_cap_len)) lang_model.add(LSTM(256,return_sequences=True)) lang_model.add(TimeDistributed(Dense(EMBEDDING_DIM))) #concatenated model = Sequential() model.add(Merge([image_model, lang_model], mode='concat')) model.add(LSTM(1024, dropout=0.2, recurrent_dropout=0.2, return_sequences=False)) model.add(Dense(self.vocab_size)) model.add(Activation('softmax')) print "Model created!" if(ret_model==True): return model adam = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy']) return model
Example #24
Source File: encdec_lstm_test.py From DeepAnomaly with MIT License | 5 votes |
def test(path_test, input_size, hidden_size, batch_size, save_dir, model_name, maxlen): db = read_data(path_test) X = create_sequences(db, maxlen, maxlen) y = create_sequences(db, maxlen, maxlen) X = np.reshape(X, (X.shape[0], X.shape[1], 1)) y = np.reshape(y, (y.shape[0], y.shape[1], 1)) # build the model: 1 layer LSTM print('Build model...') model = Sequential() # "Encode" the input sequence using an RNN, producing an output of HIDDEN_SIZE # note: in a situation where your input sequences have a variable length, # use input_shape=(None, nb_feature). model.add(LSTM(hidden_size, input_shape=(maxlen, input_size))) # For the decoder's input, we repeat the encoded input for each time step model.add(RepeatVector(maxlen)) # The decoder RNN could be multiple layers stacked or a single layer model.add(LSTM(hidden_size, return_sequences=True)) # For each of step of the output sequence, decide which character should be chosen model.add(TimeDistributed(Dense(1))) model.load_weights(save_dir + model_name) model.compile(loss='mae', optimizer='adam') model.summary() prediction = model.predict(X, batch_size, verbose=1, ) prediction = prediction.flatten() # prediction_container = np.array(prediction).flatten() plt.plot(prediction.flatten()[:4000], label='prediction') plt.plot(y.flatten()[maxlen:4000 + maxlen], label='true') plt.legend() plt.show() store_prediction_and_ground_truth(model)
Example #25
Source File: encdec_lstm.py From DeepAnomaly with MIT License | 5 votes |
def train_normal_model(path_train, input_size, hidden_size, batch_size, early_stopping_patience, val_percentage, save_dir, model_name, maxlen): if not os.path.exists(save_dir): os.mkdir(save_dir) db = read_data(path_train) train_x = db[:-maxlen] train_y = db[maxlen:] X = create_sequences(train_x, maxlen, maxlen) y = create_sequences(train_y, maxlen, maxlen) X = np.reshape(X, (X.shape[0], X.shape[1], 1)) y = np.reshape(y, (y.shape[0], y.shape[1], 1)) # # preparing the callbacks check_pointer = callbacks.ModelCheckpoint(filepath=save_dir + model_name, verbose=1, save_best_only=True) early_stop = callbacks.EarlyStopping(patience=early_stopping_patience, verbose=1) # build the model: 1 layer LSTM print('Build model...') model = Sequential() # "Encode" the input sequence using an RNN, producing an output of HIDDEN_SIZE # note: in a situation where your input sequences have a variable length, # use input_shape=(None, nb_feature). model.add(LSTM(hidden_size, input_shape=(maxlen, input_size))) # For the decoder's input, we repeat the encoded input for each time step model.add(RepeatVector(maxlen)) # The decoder RNN could be multiple layers stacked or a single layer model.add(LSTM(hidden_size, return_sequences=True)) # For each of step of the output sequence, decide which character should be chosen model.add(TimeDistributed(Dense(1))) model.compile(loss='mae', optimizer='adam') model.summary() model.fit(X, y, batch_size=batch_size, nb_epoch=50, validation_split=val_percentage, callbacks=[check_pointer, early_stop]) return model
Example #26
Source File: test_model_saving.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_sequential_model_saving(): model = Sequential() model.add(Dense(2, input_shape=(3,))) model.add(RepeatVector(3)) model.add(TimeDistributed(Dense(3))) model.compile(loss=losses.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)
Example #27
Source File: model.py From Image-Caption-Generator with MIT License | 5 votes |
def AlternativeRNNModel(vocab_size, max_len, rnnConfig, model_type): embedding_size = rnnConfig['embedding_size'] if model_type == 'inceptionv3': # InceptionV3 outputs a 2048 dimensional vector for each image, which we'll feed to RNN Model image_input = Input(shape=(2048,)) elif model_type == 'vgg16': # VGG16 outputs a 4096 dimensional vector for each image, which we'll feed to RNN Model image_input = Input(shape=(4096,)) image_model_1 = Dense(embedding_size, activation='relu')(image_input) image_model = RepeatVector(max_len)(image_model_1) caption_input = Input(shape=(max_len,)) # mask_zero: We zero pad inputs to the same length, the zero mask ignores those inputs. E.g. it is an efficiency. caption_model_1 = Embedding(vocab_size, embedding_size, mask_zero=True)(caption_input) # Since we are going to predict the next word using the previous words # (length of previous words changes with every iteration over the caption), we have to set return_sequences = True. caption_model_2 = LSTM(rnnConfig['LSTM_units'], return_sequences=True)(caption_model_1) # caption_model = TimeDistributed(Dense(embedding_size, activation='relu'))(caption_model_2) caption_model = TimeDistributed(Dense(embedding_size))(caption_model_2) # Merging the models and creating a softmax classifier final_model_1 = concatenate([image_model, caption_model]) # final_model_2 = LSTM(rnnConfig['LSTM_units'], return_sequences=False)(final_model_1) final_model_2 = Bidirectional(LSTM(rnnConfig['LSTM_units'], return_sequences=False))(final_model_1) # final_model_3 = Dense(rnnConfig['dense_units'], activation='relu')(final_model_2) # final_model = Dense(vocab_size, activation='softmax')(final_model_3) final_model = Dense(vocab_size, activation='softmax')(final_model_2) model = Model(inputs=[image_input, caption_input], outputs=final_model) model.compile(loss='categorical_crossentropy', optimizer='adam') # model.compile(loss='categorical_crossentropy', optimizer='rmsprop') return model
Example #28
Source File: test_views.py From Fabrik with GNU General Public License v3.0 | 5 votes |
def test_keras_export(self): tests = open(os.path.join(settings.BASE_DIR, 'tests', 'unit', 'keras_app', 'keras_export_test.json'), 'r') response = json.load(tests) tests.close() net = yaml.safe_load(json.dumps(response['net'])) net = {'l0': net['Input3'], 'l1': net['RepeatVector']} net['l0']['connection']['output'].append('l1') inp = data(net['l0'], '', 'l0')['l0'] net = repeat_vector(net['l1'], [inp], 'l1') model = Model(inp, net['l1']) self.assertEqual(model.layers[1].__class__.__name__, 'RepeatVector')
Example #29
Source File: caption_generator.py From caption_generator with MIT License | 5 votes |
def create_model(self, ret_model = False): #base_model = VGG16(weights='imagenet', include_top=False, input_shape = (224, 224, 3)) #base_model.trainable=False image_model = Sequential() #image_model.add(base_model) #image_model.add(Flatten()) image_model.add(Dense(EMBEDDING_DIM, input_dim = 4096, activation='relu')) image_model.add(RepeatVector(self.max_cap_len)) lang_model = Sequential() lang_model.add(Embedding(self.vocab_size, 256, input_length=self.max_cap_len)) lang_model.add(LSTM(256,return_sequences=True)) lang_model.add(TimeDistributed(Dense(EMBEDDING_DIM))) model = Sequential() model.add(Merge([image_model, lang_model], mode='concat')) model.add(LSTM(1000,return_sequences=False)) model.add(Dense(self.vocab_size)) model.add(Activation('softmax')) print "Model created!" if(ret_model==True): return model model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy']) return model
Example #30
Source File: test_recurrent_stress_tests.py From coremltools with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _test_one_to_many(self, keras_major_version): params = ( dict( input_dims=[1, 10], activation="tanh", return_sequences=False, output_dim=3, ), ) number_of_times = 4 model = Sequential() model.add(RepeatVector(number_of_times, input_shape=(10,))) if keras_major_version == 2: model.add( LSTM( params[0]["output_dim"], input_shape=params[0]["input_dims"], activation=params[0]["activation"], recurrent_activation="sigmoid", return_sequences=True, ) ) else: model.add( LSTM( output_dim=params[0]["output_dim"], activation=params[0]["activation"], inner_activation="sigmoid", return_sequences=True, ) ) relative_error, keras_preds, coreml_preds = simple_model_eval(params, model) # print relative_error, '\n', keras_preds, '\n', coreml_preds, '\n' for i in range(len(relative_error)): self.assertLessEqual(relative_error[i], 0.01)