2017-07-25 4 views
0

Je veux former mes données avec un réseau de neurones convolutionnel (CNN), je commence à remodeler mes données que de créer mon modèle:Réseau de neurones de résolution: l'argument float() doit être une chaîne ou un nombre?

model = Sequential() 
input_traces = Input(shape=(3253,)) 

model.add(Convolution1D(nb_filter=32, filter_length=3, border_mode='same', 
activation='relu',input_dim=input_traces))      
model.add(MaxPooling1D(pool_length=2)) 
model.add(Flatten()) 
model.add(Dense(250, activation='relu')) 
model.add(Dense(1, activation='sigmoid')) 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics= 
['accuracy']) 
print(model.summary()) 

model.fit(x_train, y_train, batch_size=15, nb_epoch=30, show_accuracy=True, 
validation_data=(x_test, y_test)) 

Mais ce code me donne cette erreur:

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 

Je ne comprends vraiment pas cette erreur. Pourrais-tu m'aider s'il te plaît.

Répondre

0

Ce n'est pas comme cela que vous devriez utiliser l'entrée. L'entrée est une couche dans Keras, et le paramètre input_shape à Convolution1D est censé être liste des entiers (et c'est une raison de l'erreur, puisque le code essaie d'utiliser la conversion pour flotter sur ces entiers, mais vous avez fourni l'objet Entrée à la place , qui ne peut pas être lancé pour flotter), pas de couche d'entrée.