Transferinlärning
Du har sett att träning av ett inbäddningslager (embedding layer) kräver att många parametrar lärs in.
I den här övningen kommer du att se att det vid transferinlärning går att använda förtränade vikter utan att uppdatera dem. Det innebär att alla parametrar i inbäddningslagret är fasta, och att modellen bara behöver lära sig parametrarna från de övriga lagren.
Funktionen load_glove är redan tillgänglig i miljön och returnerar GloVe-matrisen som en numpy.ndarray-vektor. Den använder den funktion som visades på lektionens slides för att hämta GloVe-vektorer med 200 inbäddningsdimensioner för det ordförråd som används i den här övningen.
Den här övningen är en del av kursen
Återkommande neurala nätverk (RNN) för språkmodellering med Keras
Övningsinstruktioner
- Använd den fördefinierade funktionen för att läsa in GloVe-vektorerna.
- Använd initieraren
Constantpå de förtränade vektorerna. - Lägg till utdatalagret som ett
Dense-lager med en enhet. - Skriv ut sammanfattningen och kontrollera antalet träningsbara parametrar.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Load the glove pre-trained vectors
glove_matrix = ____('glove_200d.zip')
# Create a model with embeddings
model = Sequential(name="emb_model")
model.add(Embedding(input_dim=vocabulary_size + 1, output_dim=wordvec_dim,
embeddings_initializer=____(glove_matrix),
input_length=sentence_len, trainable=False))
model.add(GRU(128))
model.add(____)
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Print the summaries of the model with embeddings
model.____