我正在尝试用神经网络做一些实验,包括将自定义数据输入到它的瓶颈层并分析输出。
很可能我走错了路。我的信念是,使用keras,实现自定义瓶颈输入的唯一方法是让模型由两个较小的模型组成。我将在我的训练数据上训练大型模型,然后使用任何瓶颈向量对第二个较小的模型调用predict()进行分析。
不幸的是,我的第一个模型不是连续的(我也许可以将Image1和Image2合并到一个双通道图像中,但我有一种更容易/更通用的解决方案)。因此,使用Sequential.add()创建第三个模型是不可能的。
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,否则我应该如何使用非顺序图处理自定义瓶颈问题?
发布于 2019-08-07 14:18:16
只需执行以下操作:
input_model = model1()
output_model = model2()
model3 = Model([im1, im2], output_model(input_model([im1, im2])))现在,input_model和output_model是您可以预测的实际模型,您可以使用model3来训练这两个模型中的所有层。
https://stackoverflow.com/questions/57386868
复制相似问题