当前位置: 首页 > 知识库问答 >
问题:

深度学习拟合错误(传递给模型的Numpy数组列表不是模型预期的大小。)

冯俊英
2023-03-14

我是深度学习的新手。我试图跟随fast.ai系列讲座,并试图在Kaggle内核中手动重现工作。

我正在努力通过Kaggle中的猫对狗的Redux。我不关心准确性,我只是想让一些东西发挥作用。

我使用的是Keras和VGG16模型,如fast中所述。当然。我还依靠本文中概述的代码来帮助我起步。

这是我的卡格尔笔记本。

我在尝试拟合我的模型时遇到了一个错误,我不知道如何解释:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-26-596f25281fc2> in <module>()
     12 #model.fit(input[0].transpose(), output[0].transpose())
     13 
---> 14 model.fit(X, Y, epochs=100, batch_size=6000, verbose=1)

/opt/conda/lib/python3.6/site-packages/Keras-2.1.2-py3.6.egg/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, **kwargs)
   1591             class_weight=class_weight,
   1592             check_batch_axis=False,
-> 1593             batch_size=batch_size)
   1594         # Prepare validation data.
   1595         do_validation = False

/opt/conda/lib/python3.6/site-packages/Keras-2.1.2-py3.6.egg/keras/engine/training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, check_batch_axis, batch_size)
   1428                                     output_shapes,
   1429                                     check_batch_axis=False,
-> 1430                                     exception_prefix='target')
   1431         sample_weights = _standardize_sample_weights(sample_weight,
   1432                                                      self._feed_output_names)

/opt/conda/lib/python3.6/site-packages/Keras-2.1.2-py3.6.egg/keras/engine/training.py in _standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
     81                 'Expected to see ' + str(len(names)) + ' array(s), '
     82                 'but instead got the following list of ' +
---> 83                 str(len(data)) + ' arrays: ' + str(data)[:200] + '...')
     84         elif len(names) > 1:
     85             raise ValueError(

ValueError: Error when checking model target: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 24500 arrays: [array([[1],
       [0]]), array([[1],
       [0]]), array([[0],
       [1]]), array([[1],
       [0]]), array([[1],
       [0]]), array([[1],
       [0]]), array([[1],
       [0]]), array([[0],
     ...

以下是更多信息:

X = np.array([i[0] for i in train]).reshape(-1,IMG_SIZE,IMG_SIZE,3)
Y = [i[1] for i in train]

> type(X)
numpy.ndarray

> X.shape
(24500, 50, 50, 3)

> type(Y)
list

> len(Y)
24500

> Y[0]
[1 0]

> model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_7 (InputLayer)         (None, 50, 50, 3)         0         
_________________________________________________________________
block1_conv1 (Conv2D)        (None, 50, 50, 64)        1792      
_________________________________________________________________
block1_conv2 (Conv2D)        (None, 50, 50, 64)        36928     
_________________________________________________________________
block1_pool (MaxPooling2D)   (None, 25, 25, 64)        0         
_________________________________________________________________
block2_conv1 (Conv2D)        (None, 25, 25, 128)       73856     
_________________________________________________________________
block2_conv2 (Conv2D)        (None, 25, 25, 128)       147584    
_________________________________________________________________
block2_pool (MaxPooling2D)   (None, 12, 12, 128)       0         
_________________________________________________________________
block3_conv1 (Conv2D)        (None, 12, 12, 256)       295168    
_________________________________________________________________
block3_conv2 (Conv2D)        (None, 12, 12, 256)       590080    
_________________________________________________________________
block3_conv3 (Conv2D)        (None, 12, 12, 256)       590080    
_________________________________________________________________
block3_pool (MaxPooling2D)   (None, 6, 6, 256)         0         
_________________________________________________________________
block4_conv1 (Conv2D)        (None, 6, 6, 512)         1180160   
_________________________________________________________________
block4_conv2 (Conv2D)        (None, 6, 6, 512)         2359808   
_________________________________________________________________
block4_conv3 (Conv2D)        (None, 6, 6, 512)         2359808   
_________________________________________________________________
block4_pool (MaxPooling2D)   (None, 3, 3, 512)         0         
_________________________________________________________________
block5_conv1 (Conv2D)        (None, 3, 3, 512)         2359808   
_________________________________________________________________
block5_conv2 (Conv2D)        (None, 3, 3, 512)         2359808   
_________________________________________________________________
block5_conv3 (Conv2D)        (None, 3, 3, 512)         2359808   
_________________________________________________________________
block5_pool (MaxPooling2D)   (None, 1, 1, 512)         0         
=================================================================
Total params: 14,714,688
Trainable params: 14,714,688
Non-trainable params: 0
_________________________________________________________________

和模型:

model = VGG16(weights='imagenet', include_top=False, input_shape=(img_rows, img_cols, img_channel))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X, Y, epochs=100, batch_size=6000, verbose=1)

我在谷歌上搜索了一下,但我不知道如何解释这个问题。这个SO问题看起来很相似,似乎表明输出是问题所在,但我不确定这将如何适用于我。

共有1个答案

左丘源
2023-03-14

只需将Y变换为具有形状(24500,2)的numpy数组:

Y = np.ndarray(Y)
 类似资料:
  • 我试图解决序列完成的问题。假设我们有基本真值序列(1,2,4,7,6,8,10,12,18,20) 我们模型的输入是一个不完整的序列。i、 e(1,2,4,10,12,18,20)。从这个不完整序列中,我们想要预测原始序列(地面真值序列)。哪些深度学习模型可以用来解决这个问题? 这是编码器-解码器LSTM体系结构的问题吗? 注:我们有数千个完整的序列来训练和测试模型。 感谢您的帮助。

  • 问题内容: 我有一个猫鼬模型与用户模型有关联,例如 当我实例化一个新模型时,我会做: 模型的构造函数需要使用许多参数,这些参数在架构更改时编写和重构很繁琐。有没有办法做类似的事情: 还是创建帮助器方法以生成JSON对象甚至将userId附加到请求正文的最佳方法?还是我什至没有想到的方式? 问题答案: 或者如果您要将userId复制到req.body中:

  • 问题内容: 我正在用嘲笑验证方法已被调用。方法: 由于传递哪个列表都没有关系,因此我验证了该方法的调用方式如下: 但是,的大小很重要。因此,哪一个都没有关系,但是列表必须具有X个元素。 那有可能吗? 问题答案: 一种方法是使用Captor 有关说明文件,请参见http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#15。 您还可

  • 我今天才开始使用翻新图书馆。我在获取一些json数据时遇到问题。 我试图获取的JSON数据如下所示: 求求你,救命!

  • 我正在使用以下技术进行一个投资组合项目:Java、Spring、Hibernate、JavaScript、Thymeleaf和高图。当我试图用JavaScript渲染数据可视化图表时,字符串数组模型在JS中没有得到正确的定义。 这个类生成有问题的数组. transtToJsonArray()被注释掉,因为我正在测试java数组和json数组。 下面是使用Thymeleaf变量渲染的graph.ht

  • 注释InjectMocks为我们提供了存根/填充私有成员和重用测试用例的方法。这是我们填充假成员时发生问题的概念代码。 问题是当我们模拟假的组件B时。然后,someShimmedMethod将返回null。似乎InjectMock无法将