Keras, how do I predict after I trained a model?

前端 未结 6 2094
星月不相逢
星月不相逢 2020-12-02 08:19

I\'m playing with the reuters-example dataset and it runs fine (my model is trained). I read about how to save a model, so I could load it later to use again. But how do I

相关标签:
6条回答
  • 2020-12-02 08:41
    model.predict_classes(<numpy_array>)
    

    Sample https://gist.github.com/alexcpn/0683bb940cae510cf84d5976c1652abd

    0 讨论(0)
  • 2020-12-02 08:44

    model.predict() expects the first parameter to be a numpy array. You supply a list, which does not have the shape attribute a numpy array has.

    Otherwise your code looks fine, except that you are doing nothing with the prediction. Make sure you store it in a variable, for example like this:

    prediction = model.predict(np.array(tk.texts_to_sequences(text)))
    print(prediction)
    
    0 讨论(0)
  • 2020-12-02 08:46

    You must use the same Tokenizer you used to build your model!

    Else this will give different vector to each word.

    Then, I am using:

    phrase = "not good"
    tokens = myTokenizer.texts_to_matrix([phrase])
    
    model.predict(np.array(tokens))
    
    0 讨论(0)
  • 2020-12-02 08:47

    Your can use your tokenizer and pad sequencing for a new piece of text. This is followed by model prediction. This will return the prediction as a numpy array plus the label itself.

    For example:

    new_complaint = ['Your service is not good']
    seq = tokenizer.texts_to_sequences(new_complaint)
    padded = pad_sequences(seq, maxlen=maxlen)
    pred = model.predict(padded)
    print(pred, labels[np.argmax(pred)])
    
    0 讨论(0)
  • 2020-12-02 08:48

    I trained a neural network in Keras to perform non linear regression on some data. This is some part of my code for testing on new data using previously saved model configuration and weights.

    fname = r"C:\Users\tauseef\Desktop\keras\tutorials\BestWeights.hdf5"
    modelConfig = joblib.load('modelConfig.pkl')
    recreatedModel = Sequential.from_config(modelConfig)
    recreatedModel.load_weights(fname)
    unseenTestData = np.genfromtxt(r"C:\Users\tauseef\Desktop\keras\arrayOf100Rows257Columns.txt",delimiter=" ")
    X_test = unseenTestData
    standard_scalerX = StandardScaler()
    standard_scalerX.fit(X_test)
    X_test_std = standard_scalerX.transform(X_test)
    X_test_std = X_test_std.astype('float32')
    unseenData_predictions = recreatedModel.predict(X_test_std)
    
    0 讨论(0)
  • 2020-12-02 08:49

    You can just "call" your model with an array of the correct shape:

    model(np.array([[6.7, 3.3, 5.7, 2.5]]))
    

    Full example:

    from sklearn.datasets import load_iris
    from tensorflow.keras.layers import Dense
    from tensorflow.keras.models import Sequential
    import numpy as np
    
    X, y = load_iris(return_X_y=True)
    
    model = Sequential([
        Dense(16, activation='relu'),
        Dense(32, activation='relu'),
        Dense(1)])
    
    model.compile(loss='mean_absolute_error', optimizer='adam')
    
    history = model.fit(X, y, epochs=10, verbose=0)
    
    print(model(np.array([[6.7, 3.3, 5.7, 2.5]])))
    
    <tf.Tensor: shape=(1, 1), dtype=float64, numpy=array([[1.92517677]])>
    
    0 讨论(0)
提交回复
热议问题