2017-10-03 9 views
0
import keras 
from keras.models import Sequential 
from keras.optimizers import SGD 
from keras.layers.core import Dense, Activation, Lambda, Reshape,Flatten 
from keras.layers import Conv1D,Conv2D,MaxPooling2D, MaxPooling1D, Reshape 
from keras.utils import np_utils 
from keras.models import Model 
from keras.layers import Input, Dense 
from keras.layers import Dropout 
from keras import backend as K 
from keras.callbacks import ReduceLROnPlateau 
from keras.callbacks import CSVLogger 
from keras.callbacks import EarlyStopping 
from keras.layers.merge import Concatenate 
from keras.callbacks import ModelCheckpoint 
import random 
import numpy as np 

window_height = 8 
filter_size=window_height 
pooling_size = 28 
stride_step = 2 

def fws(): 
    input = Input(shape=(5,window_height,1)) 
    print input.shape 
    shared_conv = Conv2D(filters = 1, kernel_size = ((1,window_height,1))) 
    output = shared_conv(input) 
    print output.shape 

fws() 

私はフィルタにデータを適用することにいくつかの問題があるようです。私は(8,1)形状のフィルタ(8,1)との...レイヤーconv2d_1:予想されるndim = 4、見つかったndim = 3

しかし、その代わりに、エラーメッセージ取得している:

ValueError: Input 0 is incompatible with layer conv2d_1: expected ndim=4, found ndim=3 

を私は別の番号を追加することによって、それを修正しようとしたが、これはのように助けていないようですAPIは2つの数字しか必要としないと言っています。

+0

余分なnumnerを 'Input'シェイプに追加しましたが、データには追加しませんでした。あなたのデータは 'Input'に渡した形と正確に一致しなければなりません。 - > '(samples、5、window_height、1)'となります。 –

+0

私はあなたがその@DanielMöllerによって何を意味するのか分かりません... – Lamda

答えて

0

エラーメッセージは、あなたの質問に入れなかったコード行にあります。 fitメソッド(または予測、評価など)にあります。

  • あなたのデータ(あなたがあなたの質問には表示されませんnumpyの配列)は3次元を持っている:

    はそれはと言います。

  • しかし、お客様のモデルでは、4つの寸法((batchSize, 5, window_height,1))が必要です。

もしInput((5,window_height,1))を定義すると、モデルは、各サンプル(各画像)が、これは形状を通過したことを期待し、換言すれば、バッチサイズであるサンプルを含む追加の次元があります。内部的には、入力形状は(None, 5, window_height, 1)です。

入力データ(numpy配列)を、入力レイヤーで定義したものと一致するようにシェイプする必要があります。

reshapedData = X_train.reshape((samples, 5, window_height, 1)) 
model.fit 

また、kernel_sizeは、2つのディメンション(Conv2Dを使用しています)を持つ必要があります。これらの3つの次元の1つはチャネルの数です。フィルタはこの番号に自動的に適応します。

+0

申し訳ありませんが、これは完全なコードです。コードを実行するだけで、同じエラーを再現できるはずです。 – Lamda

+0

私はあなたのコードを実行するエラーは、カーネルのサイズ(私の答えの最後)についてです。どのケラスバージョンを使用していますか? 'kernel_size'引数は2つの整数のタプルでなければなりません。受信:(1、8、1) ' –

+0

次元は(8,1) – Lamda

関連する問題