developer tip

Keras, 모델을 훈련시킨 후 어떻게 예측합니까?

copycodes 2020. 11. 12. 08:24
반응형

Keras, 모델을 훈련시킨 후 어떻게 예측합니까?


나는 reuters-example 데이터 세트를 가지고 놀고 있고 잘 실행됩니다 (내 모델은 훈련되었습니다). 모델을 저장하는 방법에 대해 읽었으므로 나중에로드하여 다시 사용할 수 있습니다. 하지만이 저장된 모델을 사용하여 새 텍스트를 예측하려면 어떻게해야합니까? 나는 사용 models.predict()합니까?

이 텍스트를 특별한 방법으로 준비해야합니까?

나는 그것을 시도했다

import keras.preprocessing.text

text = np.array(['this is just some random, stupid text'])
print(text.shape)

tk = keras.preprocessing.text.Tokenizer(
        nb_words=2000,
        filters=keras.preprocessing.text.base_filter(),
        lower=True,
        split=" ")

tk.fit_on_texts(text)
pred = tk.texts_to_sequences(text)
print(pred)

model.predict(pred)

하지만 난 항상

(1L,)
[[2, 4, 1, 6, 5, 7, 3]]
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-83-42d744d811fb> in <module>()
      7 print(pred)
      8 
----> 9 model.predict(pred)

C:\Users\bkey\Anaconda2\lib\site-packages\keras\models.pyc in predict(self, x, batch_size, verbose)
    457         if self.model is None:
    458             self.build()
--> 459         return self.model.predict(x, batch_size=batch_size, verbose=verbose)
    460 
    461     def predict_on_batch(self, x):

C:\Users\bkey\Anaconda2\lib\site-packages\keras\engine\training.pyc in predict(self, x, batch_size, verbose)
   1132         x = standardize_input_data(x, self.input_names,
   1133                                    self.internal_input_shapes,
-> 1134                                    check_batch_dim=False)
   1135         if self.stateful:
   1136             if x[0].shape[0] > batch_size and x[0].shape[0] % batch_size != 0:

C:\Users\bkey\Anaconda2\lib\site-packages\keras\engine\training.pyc in standardize_input_data(data, names, shapes, check_batch_dim, exception_prefix)
     79     for i in range(len(names)):
     80         array = arrays[i]
---> 81         if len(array.shape) == 1:
     82             array = np.expand_dims(array, 1)
     83             arrays[i] = array

AttributeError: 'list' object has no attribute 'shape'

훈련 된 모델로 예측하는 방법에 대한 권장 사항이 있습니까?


model.predict()첫 번째 매개 변수는 numpy 배열이 될 것으로 예상합니다. shapenumpy 배열에 있는 속성 이없는 목록을 제공합니다 .

그렇지 않으면 예측에 아무것도하지 않는다는 점을 제외하면 코드가 괜찮아 보입니다. 예를 들어 다음과 같이 변수에 저장해야합니다.

prediction = model.predict(np.array(tk.texts_to_sequences(text)))
print(prediction)

model.predict_classes(<numpy_array>)

샘플 https://gist.github.com/alexcpn/0683bb940cae510cf84d5976c1652abd


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))

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)

참고URL : https://stackoverflow.com/questions/37891954/keras-how-do-i-predict-after-i-trained-a-model

반응형