代码之家  ›  专栏  ›  技术社区  ›  Jsevillamol

使用时间分布的Conv2D层包装器

  •  0
  • Jsevillamol  · 技术社区  · 7 年前

    我想创建一个由CNN=>RNN=>FCN。

    模型必须能够删除填充为零2D数组的每个序列的元素。

    # Create model
    model = Sequential()
    input_shape = (n_tel, img_w, img_h)
    
    # mask the inputs that correspond to padding
    model.add(Masking(mask_value=0., input_shape=input_shape))
    
    # Add CNN feature extractor
    model.add(TimeDistributed(
            Conv2D(
                    filters=16, 
                    kernel_size=(3,3), 
                    padding='same',
                    activation='relu'
                    )
            ))
    model.add(TimeDistributed(
            Conv2D(
                    filters=32, 
                    kernel_size=(3,3), 
                    padding='same',
                    activation='relu'
                    )
            ))
    model.add(TimeDistributed(MaxPooling2D(pool_size=(2,2), strides=None)))
    
    # Add LSTM feature extractor
    model.add(LSTM(units=100))
    
    model.add(Dense(100))
    model.add(Activation('relu'))
    model.add(Dense(1))
    model.add(Activation('sigmoid'))
    

    上述代码返回一个在第一个Conv2D层上触发的错误:

    IndexError: list index out of range
    

    怎么回事?


    编辑:完全回溯

      Traceback (most recent call last):
    
      File "<ipython-input-10-7253565e1e8b>", line 1, in <module>
        runfile('/home/jsevillamol/Documentos/ctlearn_keras/models/build_cnn_rnn.py', wdir='/home/jsevillamol/Documentos/ctlearn_keras/models')
    
      File "/home/jsevillamol/anaconda3/envs/ctlearn/lib/python3.6/site-packages/spyder_kernels/customize/spydercustomize.py", line 668, in runfile
        execfile(filename, namespace)
    
      File "/home/jsevillamol/anaconda3/envs/ctlearn/lib/python3.6/site-packages/spyder_kernels/customize/spydercustomize.py", line 108, in execfile
        exec(compile(f.read(), filename, 'exec'), namespace)
    
      File "/home/jsevillamol/Documentos/ctlearn_keras/models/build_cnn_rnn.py", line 78, in <module>
        model = build_cnn_rnn(args.n_tel, args.img_w, args.img_h)
    
      File "/home/jsevillamol/Documentos/ctlearn_keras/models/build_cnn_rnn.py", line 27, in build_cnn_rnn
        activation='relu'
    
      File "/home/jsevillamol/anaconda3/envs/ctlearn/lib/python3.6/site-packages/tensorflow/python/training/checkpointable/base.py", line 364, in _method_wrapper
        method(self, *args, **kwargs)
    
      File "/home/jsevillamol/anaconda3/envs/ctlearn/lib/python3.6/site-packages/tensorflow/python/keras/engine/sequential.py", line 184, in add
        output_tensor = layer(self.outputs[0])
    
      File "/home/jsevillamol/anaconda3/envs/ctlearn/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py", line 728, in __call__
        self.build(input_shapes)
    
      File "/home/jsevillamol/anaconda3/envs/ctlearn/lib/python3.6/site-packages/tensorflow/python/keras/layers/wrappers.py", line 213, in build
        self.layer.build(tuple(child_input_shape))
    
      File "/home/jsevillamol/anaconda3/envs/ctlearn/lib/python3.6/site-packages/tensorflow/python/keras/layers/convolutional.py", line 182, in build
        self.rank + 2))
    
      File "/home/jsevillamol/anaconda3/envs/ctlearn/lib/python3.6/site-packages/tensorflow/python/ops/nn_ops.py", line 828, in __init__
        input_channels_dim = input_shape[num_spatial_dims + 1]
    
      File "/home/jsevillamol/anaconda3/envs/ctlearn/lib/python3.6/site-packages/tensorflow/python/framework/tensor_shape.py", line 615, in __getitem__
        return self._dims[key]
    
    IndexError: list index out of range
    
    0 回复  |  直到 7 年前