我正在尝试将keras_contrib中的Densenet用于我自己的具有维度(30k,2,96,96)的数据。
我的shape数据不能使用这个实现吗?它会给出以下错误和警告。
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函数,将是一个很大的帮助。
发布于 2018-09-14 20:24:29
文档上说,它应该恰好有3个输入通道。我想你可以使用一个嵌入层,或者https://keras.io/applications/#densenet一个常量值的维度。
发布于 2018-09-16 09:34:31
通过传递带有Classes=2和pooling='avg‘的include_top=True解决了此问题。说明:当include_top设置为True时,会在上面添加一个致密层,其中包含与激活函数一样多的softmax类。现在,密集层需要一维输入。在这一阶段,网络输出的是导致误差的四维张量。当使用池化作为“avg”时,它应用了全局平均池化,这折叠了维度并使其扁平,因此可以计算它。但就我个人而言,在这个阶段我更喜欢Flatten。需要为此编辑densenet代码。
https://stackoverflow.com/questions/52331133
复制相似问题