2017-07-25 10 views
0

は、私は私の畳み込みニューラルネットワークモデルに整形データ、 を入力できるようにする必要がありますが、私の問題は、コードの行である:畳み込みニューラルネットワークモデルのデータを変更するにはどうすればよいですか?

model = Sequential() 
input_traces = Input(shape=(3253,)) 
model.add(Convolution1D(nb_filter=32, filter_length=3, 
activation='relu',input_shape = input_traces))  

この行は、私は、このエラー与える:

CNN_Based_Attack.py:139: UserWarning: Update your `Conv1D` call to the Keras 2 API: `Conv1D(activation="relu", input_shape=(None, /in..., padding="same", filters=32, kernel_size=3)` 
    model.add(Convolution1D(nb_filter=32, filter_length=3, border_mode='same', activation='relu',input_dim=input_traces)) 
Traceback (most recent call last): 
    File "CNN_Based_Attack.py", line 139, in <module> 
    model.add(Convolution1D(nb_filter=32, filter_length=3, border_mode='same', activation='relu',input_dim=input_traces)) 
    File "/home/.local/lib/python2.7/site-packages/keras/models.py", line 430, in add layer(x) 
    File "/home/.local/lib/python2.7/site-packages/keras/engine/topology.py", line 557, in __call_self.build(input_shapes[0]) 
    File "/home/.local/lib/python2.7/site-packages/keras/layers/convolutional.py", line 134, in build 
    constraint=self.kernel_constraint) 
    File "/home/.local/lib/python2.7/site-packages/keras/legacy/interfaces.py", line 88, in wrapper return func(*args, **kwargs) 
    File "/home/.local/lib/python2.7/site-packages/keras/engine/topology.py", line 390, in add_weight 
    weight = K.variable(initializer(shape), dtype=dtype, name=name) 
    File "/home/.local/lib/python2.7/site-packages/keras/initializers.py", line 200, in __call__ 
    scale /= max(1., float(fan_in + fan_out)/2) 
TypeError: float() argument must be a string or a number 

Iそれをmdifyしよう:

model = Sequential() 
model.add(Convolution1D(nb_filter=32, filter_length=3, 
activation='relu',input_shape = (500000, 3253)))   

それは、このエラーを与える:

/home/.local/lib/python2.7/site-packages/keras/models.py:834: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`. 
    warnings.warn('The `nb_epoch` argument in `fit` ' 
Traceback (most recent call last): 
    File "CNN_Based_Attack.py", line 113, in <module> 
    model.fit(x_train, y_train, batch_size=15, nb_epoch=30) 
    File "/home/.local/lib/python2.7/site-packages/keras/models.py", line 853, in fit 
    initial_epoch=initial_epoch) 
    File "/home/.local/lib/python2.7/site-packages/keras/engine/training.py", line 1424, in fit 
    batch_size=batch_size) 
    File "/home/.local/lib/python2.7/site-packages/keras/engine/training.py", line 1300, in _standardize_user_data 
    exception_prefix='input') 
    File "/home/.local/lib/python2.7/site-packages/keras/engine/training.py", line 127, in _standardize_input_data 
    str(array.shape)) 
ValueError: Error when checking input: expected conv1d_1_input to have 3 dimensions, but got array with shape (500000, 3253) 

本当に解決方法はわかりません。

答えて

0

私はrelease 2.0nb_filterしたがって、あなたの代わりに、古い文書(例えばthis one)に従うべきである、filtersに変更されているので、あなたがKeras(の古いバージョンを使用していると仮定。

最初のスニペットでは、私は考え問題はこの部分である:。。input_shape = input_tracesConvolution1DコンストラクタはKeras層として初期化されるtuple、例えば(32, 100, 3)が、input_traces見込ん秒スニップで

、あなたは正しいである、代わりにtupleを通過したエラーは述べています。 th input_shapeは2の代わりに3つのディメンションを持つと考えています。まず、nb_filterは、の「データのバッチあたりのフィルタの数」を意味します。したがって、input_shapeにはbach_sizeも含まれている必要があります(このコンセプトに精通していない場合は、バッチについて知る必要があるすべてをカバーするwonderful answerがあります)。だから、ちょうど(:、赤、緑、青、あなたがnumof_channelsが何であるかを不思議に思っているならば、それは画像が3つのチャンネルを持っているかに似ている場合には)

Convolution1D(..., input_shape = (batch_size, data_length, numof_channels), ...) 

を渡し、すべてが動作するはずです。任意のbach_sizeを使用する場合は、input_shape = (None, data_length, numof_channels)を渡すことができます。

+0

大変ありがとうございます。私の場合、私は画像を解析しませんが、浮動小数点データ(チップ消費量の取得)はありませんので、チャンネルはありません。numod_channel = None – tierrytestu

+0

@ float値を持っている場合はtierrytestu、その後は 'numof_channels = 1'です。私はKeras 1にはよく慣れていませんが、私の答えはうまくいきます。 – FalconUA

関連する問題