首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自keras_contrib问题的Densenet

来自keras_contrib问题的Densenet
EN

Stack Overflow用户
提问于 2018-09-14 19:34:24
回答 2查看 247关注 0票数 1

我正在尝试将keras_contrib中的Densenet用于我自己的具有维度(30k,2,96,96)的数据。

我的shape数据不能使用这个实现吗?它会给出以下错误和警告。

代码语言:javascript
复制
    Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            (None, 96, 96, 2)    0                                            
__________________________________________________________________________________________________
initial_conv2D (Conv2D)         (None, 96, 96, 16)   288         input_1[0][0]                    
__________________________________________________________________________________________________
dense_0_0_bn (BatchNormalizatio (None, 96, 96, 16)   64          initial_conv2D[0][0]             
__________________________________________________________________________________________________
activation_1 (Activation)       (None, 96, 96, 16)   0           dense_0_0_bn[0][0]               
__________________________________________________________________________________________________
dense_0_0_conv2D (Conv2D)       (None, 96, 96, 4)    576         activation_1[0][0]               
__________________________________________________________________________________________________
concatenate_1 (Concatenate)     (None, 96, 96, 20)   0           initial_conv2D[0][0]             
                                                                 dense_0_0_conv2D[0][0]           
__________________________________________________________________________________________________
final_bn (BatchNormalization)   (None, 96, 96, 20)   80          concatenate_1[0][0]              
__________________________________________________________________________________________________
activation_2 (Activation)       (None, 96, 96, 20)   0           final_bn[0][0]                   
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 96, 96, 2)    42          activation_2[0][0]               
==================================================================================================
Total params: 1,050
Trainable params: 978
Non-trainable params: 72
__________________________________________________________________________________________________
Finished compiling
/home/arka/anaconda2/envs/hyperas/lib/python3.6/site-packages/keras_preprocessing/image.py:1213: UserWarning: Expected input to be images (as Numpy array) following the data format convention "channels_last" (channels on axis 3), i.e. expected either 1, 3 or 4 channels on axis 3. However, it was passed an array with shape (39840, 96, 96, 2) (2 channels).
  ' channels).')
/home/arka/anaconda2/envs/hyperas/lib/python3.6/site-packages/keras_preprocessing/image.py:1437: UserWarning: NumpyArrayIterator is set to use the data format convention "channels_last" (channels on axis 3), i.e. expected either 1, 3, or 4 channels on axis 3. However, it was passed an array with shape (39840, 96, 96, 2) (2 channels).
  str(self.x.shape[channels_axis]) + ' channels).')
Traceback (most recent call last):
  File "keras_densenet.py", line 149, in <module>
    fit_model(X_train,y_train,X_val,y_val)
  File "keras_densenet.py", line 140, in fit_model
    verbose=2)
  File "/home/arka/anaconda2/envs/hyperas/lib/python3.6/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)
  File "/home/arka/anaconda2/envs/hyperas/lib/python3.6/site-packages/keras/engine/training.py", line 1415, in fit_generator
    initial_epoch=initial_epoch)
  File "/home/arka/anaconda2/envs/hyperas/lib/python3.6/site-packages/keras/engine/training_generator.py", line 140, in fit_generator
    val_x, val_y, val_sample_weight)
  File "/home/arka/anaconda2/envs/hyperas/lib/python3.6/site-packages/keras/engine/training.py", line 787, in _standardize_user_data
    exception_prefix='target')
  File "/home/arka/anaconda2/envs/hyperas/lib/python3.6/site-packages/keras/engine/training_utils.py", line 127, in standardize_input_data
    'with shape ' + str(data_shape))
ValueError: Error when checking target: expected dense_1 to have 4 dimensions, but got array with shape (7440, 2)

这就是我在这里调用Densenet函数的方式。至少可以告诉我这是不是可以使用两个通道的输入与这个Densenet函数,将是一个很大的帮助。

EN

回答 2

Stack Overflow用户

发布于 2018-09-14 20:24:29

文档上说,它应该恰好有3个输入通道。我想你可以使用一个嵌入层,或者https://keras.io/applications/#densenet一个常量值的维度。

票数 1
EN

Stack Overflow用户

发布于 2018-09-16 09:34:31

通过传递带有Classes=2和pooling='avg‘的include_top=True解决了此问题。说明:当include_top设置为True时,会在上面添加一个致密层,其中包含与激活函数一样多的softmax类。现在,密集层需要一维输入。在这一阶段,网络输出的是导致误差的四维张量。当使用池化作为“avg”时,它应用了全局平均池化,这折叠了维度并使其扁平,因此可以计算它。但就我个人而言,在这个阶段我更喜欢Flatten。需要为此编辑densenet代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52331133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档