首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以有选择地使用Keras TensorFlow连接层?

有没有一种方法可以有选择地使用Keras TensorFlow连接层?
EN

Stack Overflow用户
提问于 2021-03-04 07:26:05
回答 2查看 77关注 0票数 0

我有一个自动编码器类型的串联网络,由一个预先训练的前向DNN (权重冻结)组成,从一个未训练的反向DNN获得输出。我希望在模型之间有一个直接的映射,这样第一个网络的输出层就代表了第二个网络的输入张量。我目前正在使用Keras API顺序模型来添加密集层,但是,这些层是完全连接的。I've included a diagram here (please have a look)

下面是我的代码片段:

代码语言:javascript
复制
(`#tandem architecture (with weights loaded from pre trained model)
Tandem = keras.models.Sequential()
Tandem.add(Dense(2, name = 'CIE_input'))
Tandem.add(Dense(1000, activation='relu', name = 'IH1'))
Tandem.add(Dense(1000, activation='relu', name = 'IH2'))
Tandem.add(Dense(3, name = 'Iout')) #need to feed a 3 layer input to FDNN
#FDNN for prediction:
Tandem.add(Dense(3, name = 'input',trainable = False))
Tandem.add(Dense(1000, activation='relu', name = 'FH1', trainable = False))
Tandem.add(Dense(1000, activation='relu', name = 'FH2', trainable = False))
Tandem.add(Dense(1000, activation='relu', name = 'FH3', trainable = False))
Tandem.add(Dense(1000, activation='relu', name = 'FH4', trainable = False))
Tandem.add(Dense(1000, activation='relu', name = 'FH5', trainable = False))
Tandem.add(Dense(1000, activation='relu', name = 'FH6', trainable = False))
Tandem.add(Dense(1000, activation='relu', name = 'FH7', trainable = False))
Tandem.add(Dense(1000, activation='relu', name = 'FH8', trainable = False))
Tandem.add(Dense(1000, activation='relu', name = 'FH9', trainable = False))
Tandem.add(Dense(1000, activation='relu', name = 'FH10', trainable = False)) 
Tandem.add(Dense(2, name = 'output')) # output layer (predicted colour (CIE))
Tandem.compile(loss='mse', optimizer='adam',metrics=['mean_squared_error','accuracy'])
#train the model for one batch to initialize variables (needed before loading weights by name)
Tandem.train_on_batch(y_train[:1], y_train[:1])
#load weights from pre-trained model 
Tandem.load_weights('/content/gdrive/My Drive/Colab Notebooks/Models/FDNN_Weights.h5', by_name=True)`

此外,我希望修复两个网络之间的连接,并且不允许重新缩放。我是TensorFlow和Keras (以及StackOverflow)的新手,所以我非常感谢任何关于如何简单地做到这一点的建议。

EN

回答 2

Stack Overflow用户

发布于 2021-03-05 03:13:51

我推荐使用tf.keras中的函数式API。它可以帮助您创建具有多个内部连接和多个输入和输出的模型。

  • Here是官方的document.
  • Also,我推荐这些帖子(123 )。

票数 0
EN

Stack Overflow用户

发布于 2021-03-07 21:44:44

我在代码中发现了一个错误;我没有定义序列模型的输入形状。我现在已经删除了名为'input CIE‘和' input’的层,将'IH1‘层和'FH1’层的输入尺寸分别定义为2和3。这种适当的模型定义允许模型直接连接,迫使反向模型的输出收敛到3个值。

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

https://stackoverflow.com/questions/66466451

复制
相关文章

相似问题

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