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 배열이 될 것으로 예상합니다. shape
numpy 배열에 있는 속성 이없는 목록을 제공합니다 .
그렇지 않으면 예측에 아무것도하지 않는다는 점을 제외하면 코드가 괜찮아 보입니다. 예를 들어 다음과 같이 변수에 저장해야합니다.
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
'developer tip' 카테고리의 다른 글
단일 열을 반환하는 SQL Alchemy ORM, 일반적인 사후 처리를 방지하는 방법 (0) | 2020.11.12 |
---|---|
Visual Studio 2010의 CSS 3.0 (0) | 2020.11.12 |
HTML에서 div 센터를 정렬하는 방법 (0) | 2020.11.12 |
엔터티 프레임 워크 코드 우선-프로덕션 데이터베이스에 대해 Update-Database를 실행하는 방법 (0) | 2020.11.12 |
부모의 componentDidMount가 자식의 모든 componentDidMount 후에 호출됩니까? (0) | 2020.11.12 |