Keras-具有辅助输入的共享层

时间:2019-05-29 10:01:56

标签: keras model

我正在尝试创建以下模型,其中所有层都共享。 如何使用功能性API做到这一点?

我得说我对它的整体工作方式有些困惑。

enter image description here

这是我到目前为止写的内容

    s_im = keras.layers.Input(shape=s_im_dim, name='s_im')
    s_aux = keras.layers.Input(shape=(s_aux_dim,), name='s_aux')
    s_im0 = keras.layers.Input(shape=s_im_dim, name='s_im0')
    s_aux0 = keras.layers.Input(shape=(s_aux_dim,), name='s_aux0')
    s_im1 = keras.layers.Input(shape=s_im_dim, name='s_im1')
    s_aux1 = keras.layers.Input(shape=(s_aux_dim,), name='s_aux1')

    shared_layer = keras.layers.Conv2D(32, kernel_size=(8, 8), strides=(4, 4))(s_im)
    shared_layer = keras.layers.Conv2D(64, kernel_size=(4, 4), strides=(2, 2))(shared_layer)
    shared_layer = keras.layers.Flatten()(shared_layer)
    s_out = keras.layers.Dense(128)(shared_layer)

    concat = keras.layers.concatenate([s_out, s_aux])
    f = keras.layers.Dense(256, name='features')(concat)

那是我所知道的。

现在我需要做些什么才能访问输出(f(s0)和f(s1))并使用这两个值来训练网络?

我尝试了以下操作,但出现错误,表明图形已断开连接

model_s0 = keras.Model(inputs=[s_im0, s_aux0], outputs=[f])

但是我什至需要制作多个模型吗?我不能只制作一个并同时访问所有输出吗?

0 个答案:

没有答案