📜  Tensorflow.js tf.model()函数(1)

📅  最后修改于: 2023-12-03 14:47:55.651000             🧑  作者: Mango

Tensorflow.js 中的 tf.model() 函数

Tensorflow.js 是 Google 基于 JavaScript 开发的深度学习框架,它提供了一项核心功能,即使用高阶 API 创建和训练机器学习模型。其中,tf.model() 函数是其重要组成部分之一,用于创建模型对象。

什么是模型对象?

在 Tensorflow.js 中,模型对象是一个包含一系列层(layers)的抽象对象。理解模型对象,有助于更好地理解和使用这个深度学习框架。

使用 tf.model() 函数创建模型

在 Tensorflow.js 中,使用 tf.model() 函数可以创建 Sequential(顺序模型)或者 Functional(函数式模型)类型的模型。首先,import Tensorflow.js 库。

import * as tf from '@tensorflow/tfjs';
创建 Sequential 顺序模型

Sequential 模型是简单的模型类型,层按照顺序依次排列。

const model = tf.sequential();

我们可以继续添加层,例如:

model.add(tf.layers.conv2d({ filters: 32, kernelSize: 3, activation: 'relu', inputShape: [28, 28, 1] }));
model.add(tf.layers.flatten());
model.add(tf.layers.dense({ units: 10, activation: 'softmax' }));

这段代码中,我们添加了一个 2D 卷积层(conv2d),一个 Flatten 层和一个全链接层(dense)。其中,Flatten 层是将 2D 的输出拉成 1D 向量,输入输出的 shape 分别为 [None, 26, 26, 32] 和 [None, 21632]。全链接层是 隐藏层,输入输出 shape 分别为 [None, 21632] 和 [None, 10], activation 参数为 softmax。

创建 Functional 函数式模型

Functional 模型是由多个输入的层构成的模型,允许创建具有多个输出或者指向它们本身的多个输出的模型。

这里介绍一个常见的情况,创建一个具有两个输入的模型。

const input1 = tf.input({ shape: [4] });
const input2 = tf.input({ shape: [5] });
const dense1 = tf.layers.dense({ units: 4, activation: 'relu' }).apply(input1);
const dense2 = tf.layers.dense({ units: 5, activation: 'relu' }).apply(input2);
const concat = tf.layers.concat().apply([dense1, dense2]);
const output = tf.layers.dense({ units: 1 }).apply(concat);
const model = tf.model({ inputs: [input1, input2], outputs: output });

这里,我们先分别声明两个输入对象(input1, input2)和两个 Dense 层(dense1, dense2)。在这之后,我们使用 tf.layers.concat() 函数将两路输入合并,然后在这个合并的输出上套用一个全连接层。创建模型时,我们需要通过传递 inputs 和 outputs 对象,指定模型的输入输出。

总结

使用 Tensorflow.js 的 tf.model() 函数,可以创建 Sequential 和 Functional 两种模型。Sequential 模型简单且具有良好的运行效率,而 Functional 模型可以处理具有多输入和输出层的模型。这两种模型都可以使用高层次的API(例如 tfd)进行训练和评估,帮助程序员更好地实现深度学习。