Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
codebasics
GitHub Repository: codebasics/deep-learning-keras-tf-tutorial
Path: blob/master/22_word_embedding/supervised_word_embeddings.ipynb
1141 views
Kernel: Python 3
import numpy as np from tensorflow.keras.preprocessing.text import one_hot from tensorflow.keras.preprocessing.sequence import pad_sequences from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.layers import Flatten from tensorflow.keras.layers import Embedding reviews = ['nice food', 'amazing restaurant', 'too good', 'just loved it!', 'will go again', 'horrible food', 'never go there', 'poor service', 'poor quality', 'needs improvement'] sentiment = np.array([1,1,1,1,1,0,0,0,0,0])
one_hot("amazing restaurant",30)
[4, 23]
vocab_size = 30 encoded_reviews = [one_hot(d, vocab_size) for d in reviews] print(encoded_reviews)
[[13, 21], [4, 23], [14, 17], [8, 15, 16], [22, 15, 29], [8, 21], [26, 15, 24], [16, 4], [16, 12], [4, 29]]
max_length = 4 padded_reviews = pad_sequences(encoded_reviews, maxlen=max_length, padding='post') print(padded_reviews)
[[13 21 0 0] [ 4 23 0 0] [14 17 0 0] [ 8 15 16 0] [22 15 29 0] [ 8 21 0 0] [26 15 24 0] [16 4 0 0] [16 12 0 0] [ 4 29 0 0]]
embeded_vector_size = 5 model = Sequential() model.add(Embedding(vocab_size, embeded_vector_size, input_length=max_length,name="embedding")) model.add(Flatten()) model.add(Dense(1, activation='sigmoid'))
X = padded_reviews y = sentiment
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) print(model.summary())
Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= embedding (Embedding) (None, 4, 5) 150 _________________________________________________________________ flatten_1 (Flatten) (None, 20) 0 _________________________________________________________________ dense_1 (Dense) (None, 1) 21 ================================================================= Total params: 171 Trainable params: 171 Non-trainable params: 0 _________________________________________________________________ None
model.fit(X, y, epochs=50, verbose=0)
<tensorflow.python.keras.callbacks.History at 0x1bb8daa5a30>
# evaluate the model loss, accuracy = model.evaluate(X, y) accuracy
1/1 [==============================] - 0s 1ms/step - loss: 0.6384 - accuracy: 1.0000
1.0
weights = model.get_layer('embedding').get_weights()[0] len(weights)
30
weights[13]
array([-0.08330977, -0.06752131, -0.04629624, -0.00765801, -0.02024159], dtype=float32)
weights[4]
array([-0.07935128, -0.08574004, 0.06615968, -0.02349528, 0.00917289], dtype=float32)
weights[16]
array([ 0.0128377 , 0.03549778, 0.05134471, -0.07147218, 0.03261041], dtype=float32)