Python 来自keras_contrib发行的Densenet

Python 来自keras_contrib发行的Densenet,python,python-3.x,keras,Python,Python 3.x,Keras,我正在尝试使用keras_contrib中的用于我自己的维度数据(30k,2,96,96) 无法将此实现与形状的数据一起使用吗?它给出以下错误和警告 Layer (type) Output Shape Param # Connected to ========================================================================

我正在尝试使用keras_contrib中的用于我自己的维度数据
(30k,2,96,96)

无法将此实现与形状的数据一起使用吗?它给出以下错误和警告

    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)
层(类型)输出形状参数#连接到
==================================================================================================
输入_1(输入层)(无、96、96、2)0
__________________________________________________________________________________________________
初始_conv2D(conv2D)(无、96、96、16)288输入_1[0][0]
__________________________________________________________________________________________________
稠密的(batchnormalization(None,96,96,16)64首字母conv2D[0][0]
__________________________________________________________________________________________________
激活1(激活)(无,96,96,16)0密0密0密0[0][0]
__________________________________________________________________________________________________
稠密的conv2D(conv2D)(None,96,96,4)576激活的conv1[0][0]
__________________________________________________________________________________________________
连接_1(连接)(无、96、96、20)0首字母_conv2D[0][0]
稠密的\u 0\u conv2D[0][0]
__________________________________________________________________________________________________
最终_bn(批标准化)(无、96、96、20)80串联_1[0][0]
__________________________________________________________________________________________________
激活2(激活)(无、96、96、20)0最终版本[0][0]
__________________________________________________________________________________________________
稠密_1(稠密)(无,96,96,2)42活化_2[0][0]
==================================================================================================
总参数:1050
可培训参数:978
不可培训参数:72
__________________________________________________________________________________________________
完成编译
/home/arka/anaconda2/envs/hyperas/lib/python3.6/site packages/keras_preprocessing/image.py:1213:UserWarning:预期输入为符合数据格式约定“channels_last”(轴3上的通道)的图像(作为Numpy数组),即轴3上预期为1、3或4个通道。但是,它传递了一个带有形状的数组(39840、96、96、2)(2个频道)。
"频道)
/home/arka/anaconda2/envs/hyperas/lib/python3.6/site packages/keras_preprocessing/image.py:1437:UserWarning:numpyarray迭代器设置为使用数据格式约定“channels_last”(轴3上的通道),即轴3上的预期1、3或4个通道。然而,它被传递了一个形状为(39840,96,96,2)(2个通道)的数组。
str(self.x.shape[channels_axis])+“channels”。)
回溯(最近一次呼叫最后一次):
文件“keras_densenet.py”,第149行,在
拟合模型(X_列,y_列,X_val,y_val)
文件“keras_densenet.py”,第140行,在fit_模型中
详细信息=2)
包装器中的文件“/home/arka/anaconda2/envs/hyperas/lib/python3.6/site packages/keras/legacy/interfaces.py”,第91行
返回函数(*args,**kwargs)
文件“/home/arka/anaconda2/envs/hyperas/lib/python3.6/site packages/keras/engine/training.py”,第1415行,在fit_generator中
初始_历元=初始_历元)
文件“/home/arka/anaconda2/envs/hyperas/lib/python3.6/site packages/keras/engine/training_generator.py”,第140行,在fit_generator中
val_x,val_y,val_样品重量)
文件“/home/arka/anaconda2/envs/hyperas/lib/python3.6/site packages/keras/engine/training.py”,第787行,在用户数据中
异常(前缀='target')
标准化输入数据中的文件“/home/arka/anaconda2/envs/hyperas/lib/python3.6/site packages/keras/engine/training_utils.py”,第127行
“带形状”+str(数据形状))
ValueError:检查目标时出错:预期稠密_1有4个维度,但得到了具有形状的数组(7440,2)

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

文档中说,它应该正好有3个输入通道。
你可以使用一个嵌入层,或者我猜是一个具有常量值的维度

通过将
include\u top=True
Classes=2
和pooling='avg'传递,问题得以解决。说明:当
include\u top
设置为真时,将在顶部添加一个密集层,其中包含与激活功能相同的softmax类。现在,密集层需要一维输入。在这个阶段,网络输出4维张量,这导致了误差。当使用池作为“avg”时,它应用了一个全局平均池,该平均池将维度折叠并使其平坦,因此密度可以计算它。但就我个人而言,我更喜欢在现阶段将其展平。需要为此编辑densenet代码。

我认为这仅适用于使用imagenet数据上的预训练模型的转移学习,即,对于从头开始的培训,我希望它能够在双通道上工作。我的两个频道包含两张我想比较的图片。请不要编辑您的问题以添加解决方案或提出新问题。将您的解决方案作为问题的答案发布。一个新的或进一步的问题应该作为一个单独的问题提出。好的,继续。谢谢