【问题标题】:The methods of building a model in general建立模型的一般方法
【发布时间】:2021-05-04 17:38:23
【问题描述】:

目前,我正在为情感计算创建模型,我发现在 tensorflow 中有两种不同的模型构建方法。

  1. 初始化一个空的 Sequential(),然后将 Dense 层放入其中。
model = Sequential()
model.add(Activation('relu'))
.
.
.
model.add(Activation('softmax')) 
  1. 获取现有模型的输出,然后放置额外的 Dense 层
model = VGG16.output
model = Flatten()(model)
.
.
.
model = Activation('softmax')(model)

我想知道第一种方法和第二种方法有什么区别吗?如果是,哪一个适合哪些场景? 谢谢你的回答。

【问题讨论】:

    标签: python tensorflow machine-learning keras


    【解决方案1】:

    如果我对您的理解正确,您正在寻找:使用哪种方法以及何时使用的基本原理

    您可以构建一个模型并从头开始使用一些训练数据对其进行训练。或者,您可以使用先前训练的模型并对其进行微调,这也称为迁移学习。你甚至可以使用另一个模型的主干,但从头开始训练它(这里没有迁移学习)。

    你想使用哪一个,这完全取决于你的用例。

    1. 您问题中的第一个代码块用于从头开始定义您选择的模型。
      • 如果您需要构建更复杂的模型,您可以使用 SequentialFunctional API,甚至可以尝试 Subclassing
    2. 您问题中的第二个代码块可用于以下两个代码块中的任何一个:
      1. 为您的特定任务微调预学习网络(您在这里实质上是迁移学习)。
      2. 在不加载权重的情况下使用网络的主干并从头开始训练。

    看到这个:Project organization with Tensorflow.keras. Should one subclass tf.keras.Model?

    【讨论】:

    • 非常感谢。这意味着它们之间在原则上没有区别,对吧?
    • 是和否。是的,因为您采用的方法是不同的(例如,如果有必要,从工作到家采用不同的路径)取决于您的用例。不,因为最终你构建的是一个服务于你的目的的模型:在可接受的误差范围内进行预测。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 2021-06-28
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 2021-04-01
    相关资源
    最近更新 更多