Почему Keras говорит мне «ValueError: установка элемента массива с последовательностью».несмотря на то, что все массивы являются массивами? - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь обучить 2D нейронную сеть, используя керас.У меня странное сообщение об ошибке «ValueError: установка элемента массива с последовательностью».когда я пытаюсь использовать функцию model.fit в керасе.В частности, ошибка говорит о том, что мой tenens_train_labels является последовательностью, а не массивом.Но мои метки - это действительно массивы (не последовательность).Я не уверен, почему Керас жалуется на это?

Я следую этому учебнику по построению моей сети

tensor_train_data.shape
#TensorShape([Dimension(209), Dimension(64), Dimension(64), Dimension(3)])
tensor_test_data.shape
#TensorShape([Dimension(50), Dimension(64), Dimension(64), Dimension(3)])
tensor_train_labels = tf.reshape(tensor_train_labels, [209,1])
tensor_test_labels = tf.reshape(tensor_test_labels, [50,1])
batch_size = 10
epochs = 8

model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(32, kernel_size=(3,3), activation='relu', 
input_shape=(64, 64, 3)))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2)))
model.add(tf.keras.layers.Dropout(0.25))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation = 'relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(2, activation = 'softmax'))
model.compile(loss='categorical_crossentropy', optimizer = 
tf.keras.optimizers.Adam(lr=0.0001, decay=1e-6), metrics=['accuracy'])
model.fit(tensor_train_data/255.0, 
tf.keras.utils.to_categorical(tensor_train_labels), 
          batch_size = batch_size, 
          shuffle = True, 
          epochs = epochs,
          validation_data = (tensor_test_data/ 255.0, 
          tf.keras.utils.to_categorical(tensor_test_labels)))
scores = model.evaluate(tensor_test_labels/ 255.0, 
         tf.keras.utils.to_categorical(tensor_test_labels))
print('Loss: %.3f' % scores[0])
print('Accuracy: %.3f' % scores[1])

Ошибка:

ValueError                                Traceback (most recent call last)
<ipython-input-224-80431a1b3e79> in <module>
      1 model.compile(loss='categorical_crossentropy', optimizer = tf.keras.optimizers.Adam(lr=0.0001, decay=1e-6), metrics=['accuracy'])
----> 2 model.fit(tensor_train_data/255.0, tf.keras.utils.to_categorical(tensor_train_labels), 
      3           batch_size = batch_size,
      4           shuffle = True,
      5           epochs = epochs,

~\AppData\Local\conda\conda\envs\deeplearning\lib\site-packages\tensorflow\python\keras\utils\np_utils.py in to_categorical(y, 
num_classes)
     37       last.
     38   """
---> 39   y = np.array(y, dtype='int')
     40   input_shape = y.shape
     41   if input_shape and input_shape[-1] == 1 and len(input_shape) > 1:

ValueError: setting an array element with a sequence.

1 Ответ

0 голосов
/ 31 марта 2019

Возможная ошибка в том, что у вас есть массивы разных размеров, когда вы пытаетесь преобразовать его в массив numpy. Возможное решение: https://stackoverflow.com/a/49617425/8185479

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...