构建模型的一般方法

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

  1. 初始化一个空的Sequential(),然后只需将Dense层添加进去。
model = Sequential()model.add(Activation('relu'))...model.add(Activation('softmax')) 
  1. 获取现有模型的输出,然后在其后添加额外的Dense层
model = VGG16.outputmodel = Flatten()(model)...model = Activation('softmax')(model)

我想知道第一种方法和第二种方法之间是否有区别?如果有,哪种方法适合哪些场景?感谢您的回答。


回答:

如果我理解正确的话,您正在寻找的是:使用哪种方法的理由及适用场景

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

您要使用哪一种方法,完全取决于您的使用场景。

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

请参阅:使用Tensorflow.keras的项目组织。是否应该子类化tf.keras.Model?

Related Posts

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注