Je suis en train d'exécuter le code Cifar-10 CNN dans le GPU de ma machine mais je suis face à la question suivante:ICRA-10 Erreur Dimension Keras
Dimension (-1) doit être dans l'intervalle [0, 2), 2 est le nombre de dimensions dans l'entrée. pour 'metrics/acc/ArgMax' (op: 'ArgMax') avec des formes d'entrée: [?,?], [].
Voici mon code:
import os
os.environ["THEANO_FLAGS"] = "mode=FAST_RUN,device=cuda0,floatX=float32,lib.cnmem=1"
import theano
from __future__ import print_function
import keras
from keras.datasets import cifar10
from keras import optimizers
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
[nom: "/ cpu: 0" device_type: "CPU" memory_limit: 268435456 localité { } incarnation: 5668889307863094193 , nom : "/ gpu: 0" device_type: "GPU" memory_limit: 1563603763 localité { bus_id: 1 } incarnation: 18418621293925924623 physical_device_desc: "device: 0, nom: GeForce GTX 960M, bus pci id: 0000: 01: 00.0" ]
import os
import pickle
import numpy as np
batch_size = 32
num_classes = 10
epochs = 200
data_augmentation = True
num_predictions = 20
save_dir = os.path.join(os.getcwd(), 'saved_models')
model_name = 'keras_cifar10_trained_model.h5'
# The data, shuffled and split between train and test sets:
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
#x_train = x_train.reshape(50000, 3072)
#x_test = x_test.reshape(10000, 3072)
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
x_train forme: (50000, 32, 32, 3) 50000 échantillons de train 10000 échantillons de test
# Convert class vectors to binary class matrices.
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same',
input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
model.summary()
Layer (type) Output Shape Param #
conv2d_1 (Conv2D) (None, 32, 32, 32) 896
_________________________________________________________________
activation_1 (Activation) (None, 32, 32, 32) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 30, 30, 32) 9248
_________________________________________________________________
activation_2 (Activation) (None, 30, 30, 32) 0
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 15, 15, 32) 0
_________________________________________________________________
dropout_1 (Dropout) (None, 15, 15, 32) 0
_________________________________________________________________
conv2d_3 (Conv2D) (None, 15, 15, 64) 18496
_________________________________________________________________
activation_3 (Activation) (None, 15, 15, 64) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 13, 13, 64) 36928
_________________________________________________________________
activation_4 (Activation) (None, 13, 13, 64) 0
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 6, 6, 64) 0
_________________________________________________________________
dropout_2 (Dropout) (None, 6, 6, 64) 0
_________________________________________________________________
flatten_1 (Flatten) (None, 2304) 0
_________________________________________________________________
dense_1 (Dense) (None, 512) 1180160
_________________________________________________________________
activation_5 (Activation) (None, 512) 0
_________________________________________________________________
dropout_3 (Dropout) (None, 512) 0
_________________________________________________________________
dense_2 (Dense) (None, 10) 5130
_________________________________________________________________
activation_6 (Activation) (None, 10) 0
Total params: 1,250,858
Trainable params: 1,250,858
Non-trainable params: 0
# initiate RMSprop optimizer
opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)
# Let's train the model using RMSprop
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
sur l'exécution du code de l'optimiseur RMSprop je reçois l'erreur suivante:
InvalidArgumentError Traceback (most recent call last) ~\Anaconda3\lib\site-packages\tensorflow\python\framework\common_shapes.py in _call_cpp_shape_fn_impl(op, input_tensors_needed, input_tensors_as_shapes_needed, debug_python_shape_fn, require_shape_fn) 669 node_def_str, input_shapes, input_tensors, input_tensors_as_shapes, --> 670 status) 671 except errors.InvalidArgumentError as err:
. . . . . J'ai essayé deux solutions différentes après avoir examiné d'autres threads, mais le problème persiste. La première solution proposée était de mettre à jour Tensorflow. La deuxième solution consistait à remodeler les données d'entraînement et de test de la forme x_train: (50000, 32, 32, 3) à la forme x_train: (50000, 3072), mais l'erreur se trouvait dans la couche Conv2D du modèle. les données ne peuvent pas être utilisées.
Quelqu'un peut-il m'aider avec ce problème? Toute aide est appréciée.
Pouvez-vous imprimer 'model.summary()'? –
@ MarcinMożejko J'ai édité mon post. Vous pouvez jeter un oeil –
Qu'est-ce qu'une forme 'y_train'? –