首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向非顺序图中的keras瓶颈馈送数据

向非顺序图中的keras瓶颈馈送数据
EN

Stack Overflow用户
提问于 2019-08-07 12:14:45
回答 1查看 48关注 0票数 0

我正在尝试用神经网络做一些实验,包括将自定义数据输入到它的瓶颈层并分析输出。

很可能我走错了路。我的信念是,使用keras,实现自定义瓶颈输入的唯一方法是让模型由两个较小的模型组成。我将在我的训练数据上训练大型模型,然后使用任何瓶颈向量对第二个较小的模型调用predict()进行分析。

不幸的是,我的第一个模型不是连续的(我也许可以将Image1和Image2合并到一个双通道图像中,但我有一种更容易/更通用的解决方案)。因此,使用Sequential.add()创建第三个模型是不可能的。

代码语言:javascript
复制
def image_input_model_3(hidden_units=11):
    im1 = Input(shape=(size,size),name='Image1')
    im2 = Input(shape=(size,size),name='Image2')
    input1 = Input(shape=(hidden_units,))

    def model1():
        flat1 = Reshape([size*size],name='Flat1')(im1)
        flat2 = Reshape([size*size],name='Flat2')(im2)
        concat = Concatenate()([flat1,flat2])
        out = Dense(units=(hidden_units))(concat)
        return Model([im1,im2],out,name='im2vec')

    def model2():
        out1 = Dense(units=(9*size*size))(input1)
        out2 = Reshape([9,size,size], name='Reshape')(out1)
        out3 = Softmax(axis=1, name='Softmax2')(out2)
        return Model([input1], out3, name='vec2trans')

    input_model = model1()([im1,im2])
    output_model = model2()([input_model])
    model3 = Model([im1,im2],output_model)

    return input_model, output_model, model3

上面的代码可以运行,但是input_model和output_model现在是张量对象而不是模型,所以我不能对它们运行predict()。

我如何构建它,使我可以在所有三个模型上调用predict,否则我应该如何使用非顺序图处理自定义瓶颈问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-07 14:18:16

只需执行以下操作:

代码语言:javascript
复制
input_model = model1()
output_model = model2()
model3 = Model([im1, im2], output_model(input_model([im1, im2])))

现在,input_modeloutput_model是您可以预测的实际模型,您可以使用model3来训练这两个模型中的所有层。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57386868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档