KERAS:predict_generatorを使用した新しい値の予測 -- python フィールド と machine-learning フィールド と keras フィールド と prediction フィールド 関連 問題

Keras: Predicting New Values using predict_generator












0
vote

問題

日本語

現時点では、(F.Chollet's Pythonによるディープラーニングの6.3章「Python」ブックの6.3章の「6.3章」の「6.3章の「Python」の学習の例に従うことを目指しています。指定されているジェネレータを使用した予測に関するいくつかの問題があります。私の理解は、予測のために VideoCapture cap0 を使用しているべきであるということですが、このメソッドの VideoCapture cap1 パラメータと正しい予測を取得する方法はわかりません。私の元のデータの「形状」

理想的には、テストセットをプロットすることができ、このテストセットの私の予測をプロットしたい(すなわち、予測値を用いて同じ長さの配列)。

例(ここで入手可能なデータセット: HTTPS://s3..amazonaws。 com / keras-datasets / jena_climate_2009_2016.csv.zip )は次のとおりです。

 <コード> VideoCapture cap2  

オンラインで検索した後、次のようないくつかのテクニックを試しました:

<事前> <コード> VideoCapture cap3

しかし、私が戻った予測配列は長すぎて、私の元のデータにまったく一致しませんでした。誰かが何か提案を受けましたか?

英語

At the moment I'm trying to follow a example of Temperature Forecasting in Keras (as given in chapter 6.3 of F. Chollet's "Deep Learning with Python" book). I'm having some issues with prediction using the generator that is specified. My understanding is that I should be using model.predict_generator for prediction, but I'm unsure how to use the steps parameter for this method and how to get back predictions that are the correct "shape" for my original data.

Ideally, I would like to be able to plot the test set (indices 300001 until the end) and also plot my predictions for this test set (i.e. an array of the same length with predicted values).

An example (Dataset available here: https://s3.amazonaws.com/keras-datasets/jena_climate_2009_2016.csv.zip) is as follows:

import numpy as np  # Read in data fname = ('jena_climate_2009_2016.csv') f = open(fname) data = f.read() f.close() lines = data.split(' ') col_names = lines[0].split(',') col_names = [i.replace('"', "") for i in col_names]  # Normalize the data float_data = np.array(df.iloc[:, 1:]) temp = float_data[:, 1] mean = float_data[:200000].mean(axis=0) float_data -= mean std = float_data[:200000].std(axis=0) float_data /= std  def generator(data, lookback, delay, min_index, max_index, shuffle=False, batch_size=128, step=6):     if max_index is None:         max_index = len(data) - delay - 1     i = min_index + lookback     while 1:         if shuffle:             rows = np.random.randint(                 min_index + lookback, max_index, size=batch_size)         else:             if i + batch_size >= max_index:                 i = min_index + lookback             rows = np.arange(i, min(i + batch_size, max_index))             i += len(rows)         samples = np.zeros((len(rows),                              lookback // step,                             data.shape[-1]))         targets = np.zeros((len(rows),))         for j, row in enumerate(rows):             indices = range(rows[j] - lookback, rows[j], step)             samples[j] = data[indices]             targets[j] = data[rows[j] + delay][1]         yield(samples, targets)  lookback = 720 step = 6 delay = 144  train_gen = generator(float_data, lookback=lookback, delay=delay,                        min_index=0, max_index=200000, shuffle=True,                       step=step, batch_size=batch_size)  val_gen = generator(float_data, lookback=lookback, delay=delay,                      min_index=200001, max_index=300000, step=step,                     batch_size=batch_size)  test_gen = generator(float_data, lookback=lookback, delay=delay,                       min_index=300001, max_index=None, step=step,                       batch_size=batch_size)  val_steps = (300000 - 200001 - lookback) test_steps = (len(float_data) - 300001 - lookback)  from keras.models import Sequential from keras import layers from keras.optimizers import RMSprop  model = Sequential() model.add(layers.Flatten(input_shape=(lookback // step, float_data.shape[-1]))) model.add(layers.Dense(32, activation='relu')) model.add(layers.Dense(1))  model.compile(optimizer=RMSprop(), loss='mae') model.fit_generator(train_gen, steps_per_epoch=500,                               epochs=20, validation_data=val_gen,                               validation_steps=val_steps) 

After some searching around online, I tried some techniques similar to the following:

pred = model.predict_generator(test_gen, steps=test_steps // batch_size) 

However the prediction array that I got back was far too long and didn't match up to my original data at all. Has anyone got any suggestions?

</div
           

回答リスト

0
 
vote

<コード> 9988777668 <コード> steps BeautifulSoup0 EX: BeautifulSoup1 画像と、 BeautifulSoup2 のバッチサイズが<コード> BeautifulSoup3

に提供しています。 <事前> <コード> BeautifulSoup4
 

In predict_generator for steps divide number of images you have in test path with whatever batchsize you have provided in test_gen
EX: i have 50 images and i provided batch size of 10 than steps would be 5

#first seperate the `test images` and `test labels`  test_images,test_labels = next(test_gen)  #get the class indices  test_labels = test_labels[:,0]  #this should give you array of labels  predictions = model.predict_generator(test_gen,steps = number of images/batchsize,verbose=0)  predictions[:,0]  #this is your actual predictions   
</div
 
 
 
 
0
 
vote
vote
ベストアンサー
 

自分の質問に対する答えの半許容版に到着したように、私は後者のためにそれを投稿することにしました:

<事前> <コード> BeautifulSoup5

これは私が元のテストセットに対してそれをプロットしたい形をしました。この答え:

を使ってややインスパイアされたMore Manualアプローチを使用することもできます。 <事前> <コード> items16
 

As I arrived at a semi-acceptable version of an answer to my own question, I decided to post it for posterity:

test_gen = generator(float_data, lookback=lookback, delay=delay,                       min_index=300001, max_index=None, step=step,                       batch_size=1)    # "reset" the generator  pred = model.predict_generator(test_gen, steps=test_steps) 

This now has the shape I want to plot it against my original test set. I could also use a more manual approach inspired somewhat by this answer:

test_gen = generator(float_data, lookback=lookback, delay=delay,                       min_index=300001, max_index=None, step=step,                       batch_size=1)    # "reset" the generator  truth = [] pred = []  for i in range(test_steps):     x, y = next(test_gen)     pred.append(model.pred(x))     truth.append(y)   pred = np.concatenate(pred) truth = np.concatenate(truth) 
</div
 
 
0
 
vote

あなたの元のコードは正しく見えます:

<事前> <コード> BeautifulSoup7

私は試してみて、120k程度の長さの 99887776618 を生成しようとしていませんでした。どのサイズになりましたか?

実際にコード内の両方のステップが正しくありません。彼らは:

です <事前> <コード> BeautifulSoup9

(各エポックのためにあなたの検証が永遠に実行されませんでしたか?)

もちろんこの修正では

を使うことができます <事前> <コード> lxml0
 

Your original code looks correct:

pred = model.predict_generator(test_gen, steps=test_steps // batch_size) 

I tried and did not see any problem generating a pred of length around 120k. What size did you get?

Actually both of the steps in the code are incorrect. They should be:

val_steps = (300000 - 200001 - lookback) // batch_size test_steps = (len(float_data) - 300001 - lookback) // batch_size 

(Didn't it take forever for your validation to run for each epoch?)

Of course with this correction you can simply use

pred = model.predict_generator(test_gen, steps=test_steps) 
</div
 
 
       
       
0
 
vote

誰でも質問を見ているのは、新しいバージョンのKerasの lxml1 を使用しているときに、ステップパラメータを指定する必要はありません。 ref: https://github.com/keras-team/keras/issues/11902 < / a>

値が提供されている場合は、<コード> 99887776622 の予測が生成されます。 OPによって言及されているように、<コード> lxml3 Rowsを除外する可能性があります。 また、 lxml4 は、テストデータを1つずつ繰り返すのと同じであるため、 items24 がジェネレータを使用する目的を破ります。 同様に lxml5 を設定する( lxml7 items26 が設定されていない場合)、テストデータ全体を一度に読み取ります。これは大規模なテストデータには理想的ではありません。 。

 

For anyone looking at the question now, we are not required to specify the steps parameter when using predict_generator for the newer versions of keras. Ref: https://github.com/keras-team/keras/issues/11902

If a value is provided, predictions for step*batch_size examples will be generated. This may result in exclusion of len(test)%batch_size rows, as mentioned by OP. Also, it seems to me that setting batch_size=1 defeats the purpose of using the generator, as it is equivalent to iterating over the test data one by one. Similarly setting steps=1 (when batch_size is not set in test_generator) will read the entire test data at once, which is not ideal for large test data.

</div
 
 

関連する質問

66  警告を取得する:「NewData 'は1行が1行がありましたが、32行が42行がありました。  ( Getting warning newdata had 1 row but variables found have 32 rows on pred ) 
RのPREDECTとLM機能を使用しながら、特殊性を見つけました。データフレームと同じデータのベクトルについて異なる結果が得られました。 データフレームコード: <事前> <コード> data(mtcars) fitCar<-lm(mtcars$m...

0  RapidMiner Timeseries予測  ( Rapidminer timeseries prediction ) 
私は将来の会社の収益の価値を予測するために、RapidMiner Windowning Operatorと協力しています。 データセットには月額値が含まれているため、12のウィンドウサイズを使用しました。ただし、その値が3か月前に行われる予定のものを知ることが...

0  IDによるRの分類  ( Classification in r by id ) 
パフォーマンスの酒のために、<コード> RandomForestSRC パッケージを使用して、Rでいくつかの分類をしています。 この特定のケースでは、次のようなデータ・フレームがあります。ここで、yは分類係数C( "x"、 "y"、 "z")、IDは同じパッケ...

-1  Deep LearningのPytorch予測問題を修正する方法  ( How can i fix pytorch predict problem with deep learning ) 
与えられた groups=1 、サイズの重み<コード> [48, 3, 3, 3] 、予想される入力 [5, 128, 129, 4] は3つのチャネルを持ちますが、代わりに128チャンネルを持っています。 これは私のコードです: <事前> <コード> ...

0  20ニュースグループ分類例では、「Log4J:Warn No AppenterはLoggerに見つかりませんでした」というエラーが発生しました。  ( How to solve log4jwarn no appenders could be found for logger error on twenty ) 
Mahoutで2newsgroup分類例を実行しようとしています。私はmahout_local = trueを設定しました、分類器は混乱マトリックスを表示していて、次の警告を与えない: <事前> <コード> ok. You chose 1 and we'll...

0  Rの間隔予測の間隔スコアの計算スコア  ( Compute interval score for interval predictions in r ) 
STACKEXCHANGEのスレッドで:「予測精度 - メトリック - インバイス - 予測間隔」https://stats.stackexchange.com/questions/194660/Forecast-予測間隔の品質尺度が表示されている正確さ -...

0  Google予測API "Hello Prediction"チュートリアル  ( Google prediction api hello prediction tutorial ) 
Google予測APIチュートリアルと「Hello予測 - https:// cloud.google.com/prediction/docs/hello_world しかし、開発者コンソールのモデルをトレーニングするとき、私の要求は次の出力で失敗し...

-2  Pythonのデータセットに結果に影響を与える属性をどのように再トリートできますか  ( How can i retrive the attributes which influence the result in a dataset in pyth ) 
私は初心者です。私はGPA予測をしています。私のデータセットは、学生の旅行時間、勉強時間、両親の職業、彼らの成績、母親の職業などの変数を持っています。私のデータには、カテゴリ数と離散値の両方があります。 ...

4  SVMlightの予測ファイルは何ですか?  ( What is the prediction file in svmlight ) 
私はSVMLIGHTに新しくなっています。私はソースコードをダウンロードしてsvmlightをコンパイルしました。 トレーニングとテストデータセットを作成しました。そしてRAN <事前> <コード> [command] モデルファイルの作成このモデルファ...

0  「予測」パッケージバージョン3.22 Auto.arima R、複数の季節期間を予測する  ( Forecast package version 3 22 auto arima to forecast in r more than one sea s ) 
季節の季節のある季節の季節には、以下のような672の測定がある「週」を使用しています: <事前> <コード> ┌────┤IPV4├─────┬─────────────────┤IPV6├────────────────┐ 224.0.0.1 ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有