小编dor*_*132的帖子

ValueError:层需要 2 个输入,但在训练 CNN 时收到 1 个输入张量

我是新手tensorflow,试图构建一个类似于本指南中所做的暹罗 CNN 。
我的模型是使用基本模型构建的,然后使用通过同一网络的两张不同图片进行两次输入。
这是构建网络的代码:

class BaseModel(Model):

  def __init__(self, base_network):
    super(BaseModel, self).__init__()
    self.network = base_network
  
  def call(self, inputs):
    print(inputs)
    return self.network(inputs)

def get_base_model():
  inputs = tf.keras.Input(shape=INPUT)

  conv2d_1 = layers.Conv2D(name='seq_1', filters=64, 
            kernel_size=20, 
            activation='relu')(inputs)
  maxpool_1 = layers.MaxPooling2D(pool_size=(2, 2))(conv2d_1)

  conv2d_2 = layers.Conv2D(filters=128, 
            kernel_size=20, 
            activation='relu')(maxpool_1)
  maxpool_2 = layers.MaxPooling2D(pool_size=(2, 2))(conv2d_2)

  conv2d_3 = layers.Conv2D(filters=128, 
            kernel_size=20, 
            activation='relu')(maxpool_2)
  maxpool_3 = layers.MaxPooling2D(pool_size=(2, 2))(conv2d_3)

  conv2d_4 = layers.Conv2D(filters=256, 
            kernel_size=10, 
            activation='relu')(maxpool_3)

  flatten_1 = layers.Flatten()(conv2d_4)
  outputs = layers.Dense(units=4096,
                        activation='sigmoid')(flatten_1)
  
  model = Model(inputs=inputs, outputs=outputs)

  return model
Run Code Online (Sandbox Code Playgroud)

然后,我使用之前的方法构建暹罗网络:

INPUT = (250, …
Run Code Online (Sandbox Code Playgroud)

python deep-learning conv-neural-network keras tensorflow

4
推荐指数
1
解决办法
1万
查看次数