gpt4 book ai didi

conv-neural-network - 在 Keras 中实现 Siamese NN

转载 作者:行者123 更新时间:2023-12-04 04:16:05 25 4
gpt4 key购买 nike

所以我正在尝试实现 this关于 Siamese 神经网络的论文:Sumit Chopra、Raia Hadsell 和 Yann LeCun(2005 年)的论文:有区别地学习相似性度量,并应用于人脸验证。我正在使用 CIFAR10 dataset但是,有 10 个类(class)。

为方便起见,再现了其中一条腿的规范。注解:C_x为卷积层,S_x为下采样层,F_x为全连接层;使用共享索引 x:

  • C1:特征图:15,内核大小 = (7, 7)
  • S2:特征图:15,视野 = (2, 2)
  • C3:特征图:45,内核大小 = (6, 6)
  • S4:特征图:45,视野 = (4, 3)
  • C5:特征图:250,内核大小 = (5, 5)
  • F6(全连接层):没有。单位数 = 50

  • 我试过的
    model = Sequential()

    #C1
    model.add(Convolution2D(15, 7, 7,
    activation='relu',
    border_mode='same',
    input_shape=input_img_shape))
    print("C1 shape: ", model.output_shape)

    #S2
    model.add(MaxPooling2D((2,2), border_mode='same'))
    print("S2 shape: ", model.output_shape)
    #...

    #C5
    model.add(Convolution2D(250, 5, 5,
    activation='relu',
    border_mode='same'))
    print("C5 shape: ", model.output_shape)

    #F6
    model.add(Dense(50))

    这会引发一条很长的错误消息,我认为这是一个 reshape 错误。错误片段:
    Exception: Input 0 is incompatible with layer dense_13: expected
    ndim=2, found ndim=4

    我知道问题在最后的密集层中是孤立的,因为如果我将其注释掉,代码会顺利进行。但我不确定我应该如何塑造/指定我的最终全连接层,以便它与之前的卷积层兼容?

    我看过的一些地方

    This是一个相关的问题,尽管实现略有不同(在撰写本文时,keras 中似乎没有“连体”核心层)。我知道还有 implementations in Theano ,如果我不能在 keras 中做到这一点,我会记住这一点。

    谢谢!

    最佳答案

    你不需要连体层,你只需要使用 Keras functional API创建一个具有两个输入和一个输出的模型。

    似乎 Keras 示例 already contain与您正在实现的模型非常相似的模型。

    关于conv-neural-network - 在 Keras 中实现 Siamese NN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584268/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com