我正在与Keras合作,在尝试使用与VGG类似的架构实现FCNN时,我收到错误:

TypeError:img必须是4D张量

这是我的FCNN代码:

def buildmodel():
  model = Sequential()
  model.add(Convolution2D(4,3,3,border_mode='same',input_shape=(3,64,64)))
  model.add(LeakyReLU(alpha=0.3))
  model.add(MaxPooling2D((2,2),strides=(2,2),border_mode='valid', dim_ordering='th'))
  model.add(Convolution2D(8,3,3,border_mode='same'))
  model.add(LeakyReLU(alpha=0.3))
  model.add(MaxPooling2D((2,2),strides=(2,2),border_mode='valid', dim_ordering='th'))

  model.add(UpSampling2D((2,2)))
  model.add(Convolution2D(16,3,3,border_mode='same',input_shape=x[0].shape))
  model.add(LeakyReLU(alpha=0.3))
  model.add(MaxPooling2D((2,2),strides=(2,2),border_mode='valid', dim_ordering='th'))
  model.add(Convolution2D(32,3,3,border_mode='same'))
  model.add(LeakyReLU(alpha=0.3))
  model.add(MaxPooling2D((2,2),strides=(2,2),border_mode='valid', dim_ordering='th'))

  model.add(UpSampling2D((2,2)))
  model.add(Convolution2D(64,3,3,border_mode='same',input_shape=x[0].shape))
  model.add(LeakyReLU(alpha=0.3))
  model.add(Convolution2D(64,3,3,border_mode='same'))
  model.add(LeakyReLU(alpha=0.3))
  model.add(MaxPooling2D((2,2),strides=(2,2),border_mode='valid', dim_ordering='th'))

  model.add(UpSampling2D((2,2)))
  model.add(Convolution2D(128,3,3,border_mode='same',input_shape=x[0].shape))
  model.add(LeakyReLU(alpha=0.3))
  model.add(Convolution2D(128,3,3,border_mode='same'))
  model.add(LeakyReLU(alpha=0.3))
  model.add(MaxPooling2D((2,2),strides=(2,2),border_mode='valid', dim_ordering='th'))

  model.add(UpSampling2D((2,2)))
  model.add(Convolution2D(4,3,3,border_mode='same',input_shape=x[0].shape))
  model.add(LeakyReLU(alpha=0.3))
  model.add(Convolution2D(1,3,3,border_mode='same',activation='sigmoid'))

  return model

inputs = Input(shape=(len(x),3,64,64))
fcnn = buildmodel()
outputs = fcnn(inputs)
print(fcnn.inbound_nodes)
opt = RMSprop(lr=0.001, rho=0.9, epsilon=1e-6) 
model = Model(input=inputs, output=outputs)
model.compile(loss='hinge', optimizer=opt)
model.fit(x)

x具有形状(nsamples,3,64,64) . 当在Keras中逐字使用VGG模型并使用完全连接的层时,似乎没有问题,因此我对新架构如何导致图像形状出现问题感到困惑 .