【问题标题】:ValueError when running image classification model with Tensorflow/Keras使用 Tensorflow/Keras 运行图像分类模型时出现 ValueError
【发布时间】:2021-05-08 10:23:22
【问题描述】:

我和我的搭档正在制作一个模型,该模型将给定的图像分类为正确或错误地佩戴了肿块。当我们尝试运行我们的模型时,会弹出一个 ValueError。我们都是学习 Keras 和 Tensorflow 的初学者,所以请放慢我们的脚步!我们使用 Jupyter notebook 来运行我们的模型。如果您需要更多信息,请告诉我们。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation, Flatten, Conv2D, Dropout, MaxPooling2D
import pickle

X = pickle.load(open('X.pickle','rb'))
y = pickle.load(open('y.pickle', 'rb'))

model = Sequential()

model.add(Conv2D(128, (6, 6), input_shape=X.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(128, (4, 4)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Flatten())

model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy',
             optimizer='adam',
             metrics=['accuracy'])

model.fit(X, y, batch_size=32, epochs=4, validation_split=0.3)

这是输出:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-f184ee158893> in <module>
     29              metrics=['accuracy'])
     30 
---> 31 model.fit(X, y, batch_size=32, epochs=4, validation_split=0.3)

/Users/user/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, max_queue_size, workers, use_multiprocessing, **kwargs)
   1534         steps_name='steps_per_epoch',
   1535         steps=steps_per_epoch,
-> 1536         validation_split=validation_split)
   1537 
   1538     # Prepare validation data.

/Users/user/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, batch_size, check_steps, steps_name, steps, validation_split)
    990         x, y, sample_weight = next_element
    991     x, y, sample_weights = self._standardize_weights(x, y, sample_weight,
--> 992                                                      class_weight, batch_size)
    993     return x, y, sample_weights
    994 

/Users/user/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py in _standardize_weights(self, x, y, sample_weight, class_weight, batch_size)
   1152           feed_output_shapes,
   1153           check_batch_axis=False,  # Don't enforce the batch size.
-> 1154           exception_prefix='target')
   1155 
   1156       # Generate sample-wise weight values given the `sample_weight` and

/Users/user/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_utils.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
    321                            ': expected ' + names[i] + ' to have ' +
    322                            str(len(shape)) + ' dimensions, but got array '
--> 323                            'with shape ' + str(data_shape))
    324         if not check_batch_axis:
    325           data_shape = data_shape[1:]

ValueError: Error when checking target: expected activation_11 to have 2 dimensions, but got array with shape (11504, 100, 100, 3)

【问题讨论】:

  • 能否提供X和y的形状
  • 压扁后没有浓密。添加一个具有 1 个神经元的密集层。
  • 你有多少图像类?
  • 只有两节课。问题已解决,谢谢大家!

标签: python tensorflow machine-learning keras deep-learning


【解决方案1】:

如果您的示例有 2 个类,只需添加一个密集层,在最后 2 个层之间有一个单元

model.add(Flatten())

#Add this
model.add(Dense(1))

model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy',
             optimizer='adam',
             metrics=['accuracy'])

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 2021-04-29
    • 2020-09-24
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2020-12-10
    相关资源
    最近更新 更多