2017-10-21 18 views
0

を予測しながら、私は寸法誤差

、次のように予測を取得しようとして code

イムを使用して

import cv2 
from keras.models import Sequential, load_model 
import numpy as np 

#create an empty frame 
frames = [] 

#defince row, col 
img_rows,img_cols,img_depth=16,16,15 

cap = cv2.VideoCapture('run.avi') 
fps = cap.get(5) 

#Use only first 15 frames for prediction 
for k in range(15): 
    ret, frame = cap.read() 
    frame=cv2.resize(frame,(img_rows,img_cols),interpolation=cv2.INTER_AREA) 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    frames.append(gray) 


#preprocess 
input = np.array(frames) 
ipt=np.rollaxis(np.rollaxis(input,2,0),2,0) 
reshape_frames = np.expand_dims(ipt, axis=0) 

#run prediction 
model = load_model('current.h5') 
preds = model.predict(reshape_frames) 
print(preds) 

をconvolutional3dモデルを訓練してきたが、それはどのように

ValueError: Error when checking : expected conv3d_1_input to have 5 dimensions, but got array with shape (1, 16, 16, 15)

、次のエラーを発生させますこれを整理することはできますか? docs for convolutional 3D layers

答えて

1

参照してください:

Input shape

5D tensor with shape: (samples, channels, conv_dim1, conv_dim2, conv_dim3) if data_format='channels_first' or 5D tensor with shape: (samples, conv_dim1, conv_dim2, conv_dim3, channels) if data_format='channels_last'.

だから何bascially起こっていることはあなたが最初のコンバージョンの3Dレイヤーに提供入力形状が予想される入力に適合しないということです。

  • 変更された入力を、それが期待される入力と一致するように(上記のようにも考慮data_formatに取る)、:

    は、次のようにあなたが行くことができるこの問題を解決するには。あなたのコードを見ると、img_depthの情報はまったく使用されません。基本的に3Dコンバーターネットに2D画像を提供します。
  • 2Dコンベネットを使用して新しいモデルを作成する