In [1]:
import utilities
from utilities import *
import keras
from keras.models import Sequential
from keras.layers import Dense, Activation
import os

def test_sentence(sentence):
    sentence = process_text(sentence)
    vec = vectorizer.transform([sentence]).toarray()
    prediction = model.predict_proba(vec)[0]
    print "Label", label_names[np.argmax(prediction)]
    for i, category in enumerate(label_names):
        print "{}: {:.2f}".format(category, prediction[i])

# Constants
no_dev = True
binary = False


Using Theano backend.

In [2]:
print "Get and process data"
# Get raw text + labels
features, labels, label_names = get_data('readme', binary=binary, no_dev=no_dev)
features2, labels2, label_names2 = get_data('description', binary=binary, no_dev=no_dev)
features = features + features2
labels = labels + labels2
features, labels = shuffle_data(features, labels)
#features = np.matrix(features)

print "Vectorize data"
# trainingsdaten werden in eingabedaten (vektoren) umgewandelt
# features ist dann matrix bestehend aus den einzelnen vektore
features, vectorizer = vectorize_text(features, max_features=3500)

# x sind die eingabematrizen, y sind die vektoren in denen die ergebnisse stehen
x_train, x_test, y_train, y_test = split_train_test(features, labels, ratio=0.8, shuffle=True)

print "Prepare one-hot-encoding"
# One-Hot-Encoding needed for Neural Net Output
y_train = one_hot_encoding(y_train)
y_test = one_hot_encoding(y_test)


Get and process data
Vectorize data
Prepare one-hot-encoding

In [3]:
model = keras.models.load_model('modelnondev')


---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-3-6f6315bfe94e> in <module>()
----> 1 model = keras.models.load_model('modelnondev')

/Users/andreas/anaconda/lib/python2.7/site-packages/keras/models.pyc in load_model(filepath, custom_objects)
    165         optimizer_weight_names = [n.decode('utf8') for n in optimizer_weights_group.attrs['weight_names']]
    166         optimizer_weight_values = [optimizer_weights_group[n] for n in optimizer_weight_names]
--> 167         model.optimizer.set_weights(optimizer_weight_values)
    168     f.close()
    169     return model

/Users/andreas/anaconda/lib/python2.7/site-packages/keras/optimizers.pyc in set_weights(self, weights)
     95                                 str(pv.shape) +
     96                                 ' not compatible with '
---> 97                                 'provided weight shape ' + str(w.shape))
     98             weight_value_tuples.append((p, w))
     99         K.batch_set_value(weight_value_tuples)

Exception: Optimizer weight shape (3500, 14000) not compatible with provided weight shape (3500, 3500)

In [ ]:
# Get accuracy on test_set
print "Test on {} unknown samples".format(len(x_test))
acc = model.evaluate(x_test, y_test, verbose=0)
print "Loss, accuracy: ", acc

In [ ]:
# Test model on some sentence
# 
test_sentence('This is my website api course library')