首页 > 解决方案 > 在 keras API 模型中创建 Lambda 层的问题

问题描述

我正在尝试执行此代码,

lyr_in = Input(shape=(400, 400, 3))

# Block 1
lyr = Conv2D(filters=4, kernel_size=(1, 1), padding='same', activation='relu')(lyr_in)
lyr = MaxPooling2D(pool_size=(2, 2), strides=(2, 2))(lyr)

# Block 2
lyr = Conv2D(filters=8, kernel_size=(1, 1), padding='same', activation='relu')(lyr)
lyr = MaxPooling2D(pool_size=(2, 2), strides=(2, 2))(lyr)

# Block 3
lyr = Conv2D(filters=8, kernel_size=(1, 1), padding='same', activation='relu')(lyr)

# Block 4
lyr = Conv2D(filters=16, kernel_size=(1, 1), padding='same', activation='relu')(lyr)

# Block 5
lyr = Conv2D(filters=16, kernel_size=(1, 1), padding='same', activation='relu')(lyr)
lyr = MaxPooling2D(pool_size=(2, 2), strides=(2, 2))(lyr)

# Block 6
lyr = Conv2D(filters=256, kernel_size=(1, 1), padding='same', activation='relu')(lyr)
lyr = MaxPooling2D(pool_size=(2, 2), strides=(2, 2))(lyr)


def custom_layer(tensor):
    y = np.zeros((64,400, 400))
    for i in range(0, 25):
         for j in range(0, 25):
              r = 16 * I
              h = 0
              for m in range(0, 16):
                    c = 16 * j
                    for n in range(0, 16):
                          y[:,r,c] = tensor[:,i,j,h]
                          c = c + 1
                          h = h + 1
                          r = r + 1
       return y


  lyr_out = Lambda(custom_layer, name="lambda_layer", output_shape=(400,400))(lyr)
  #lyr_out = Reshape((400, 400))(lambda_layer)

  M1 = Model(lyr_in, lyr_out)
  print(M1.summary())

我是 Keras 和 TensorFlow 的初学者,我想通过 lambda 层的自定义层重新排列 Keras 模型中的图像像素,但我接口此波纹管错误;

TypeError: __array__() takes 1 positional argument but 2 were given

我该如何解决它的朋友?非常非常感谢你。

标签: pythonkerasdeep-learning

解决方案


推荐阅读