📜  Tensorflow.js tf.layers.conv1d()函数

📅  最后修改于: 2022-05-13 01:56:55.091000             🧑  作者: Mango

Tensorflow.js tf.layers.conv1d()函数

Tensorflow.js 是 Google 开发的一个 JavaScript 库,用于在浏览器或 Node.js 中运行和训练机器学习模型。 Tensorflow.js tf.layers.conv1d()函数用于创建卷积层。它用于对输入数据应用一维卷积。卷积层用于制作过滤器,用于过滤所需输出中的输入数据。

句法:

tf.layers.conv1d(args);

参数:此函数接受以下参数:

  • args:这是包含以下值的对象类型:
    • 过滤器:它是定义输出张量维度的数字。它是卷积中的过滤器数量。
    • kernelSize:它定义了卷积层的卷积窗口,这意味着输入数据的子集一次获取。
    • strides:它定义了卷积层在每个维度上移动输入数据的单位。
    • padding:它定义了对卷积层的填充,这意味着在处理过程中添加到输入数据的数据量。它的值可以是“有效”、“相同”和“因果”。
    • dataFormat:它定义了输入数据的数据格式,数据在'channelsFirst'或'channelsLast'中。
    • dilationRate:用于对每个维度的卷积进行扩张。它用于定义内核中值之间的空间。
    • 激活:它定义了用于输入数据的激活函数。
    • useBias:用于决定是否使用偏置向量。
    • kernelInitializer:它是卷积层中内核的初始权重。它定义了设置卷积层初始随机权重的方法。
    • biasInitializer:卷积层偏置向量的初始权重。
    • kernelConstraint:是对卷积层核权重的约束,用于提高效率。
    • biasConstraint:是卷积层偏置向量提高效率的约束。
    • kernelRegularizer:它是正则化函数,应用于内核权重矩阵以对其进行正则化。
    • biasRegularizer:它是应用于偏置向量以对其进行正则化的正则化函数。
    • activityRegularizer:它是用于正则化目的的激活函数。
    • inputShape:声明该层接受该形状的输入层。它仅用于输入层。
    • batchInputShape:定义输入层的批大小。它用于输入层。
    • batchSize:作为输入层制作过程中batchInputShape的补充。
    • dtype:它定义了这一层的数据类型。 'float32' 是图层的默认值。
    • trainable:用于使层的函数可训练与否。
    • weights:这是该层的初始权重值。
    • inputDtype:用于决定输入层的数据类型。

返回: Conv1D

示例 1:在此示例中,我们将创建顺序模型并使用过滤器、内核大小、输入形状和激活向其添加一维卷积层。最后我们用层编译我们的模型并查看它的摘要。

Javascript
import * as tf from "@tensorflow/tfjs"
 
  // Creating model
  const geek_Model  =  tf.sequential();
 
  // Adding inputLayer layer
  const geek_config = {inputShape: [7,4]};
  const geek_layer1 = tf.layers.inputLayer(geek_config);
  geek_Model.add(geek_layer1);
 
  // Adding convolution layer
  const geek_config2 = {
    filters:10,kernelSize:7                        
   ,inputShape:[28,1],
    activation: 'relu'};
  const geek_layer2 = tf.layers.conv1d(geek_config2);
   //console.log(y.shape);
   geek_Model.add(geek_layer2);
 
  // Adding dense layer
  const geek_config3 = {
    units:7,
    activation: 'softmax'
  };
  const geek_layer3 = tf.layers.dense(geek_config3);
  geek_Model.add(geek_layer3)
 
  // Compiling our model
  const geek_config4 = {
    optimizer: 'sgd',
    loss: 'meanSquaredError'
  };
  geek_Model.compile(geek_config4);
 
  // Printing our summary
  geek_Model.summary()


Javascript
import * as tf from "@tensorflow/tfjs"
 
// Input Layer for model
const geek_config = {shape:[3,4]};
const geek_InputL = tf.input(geek_config);
console.log(`Input layer shape : ${geek_InputL.shape}`);
 
// Convolution For the model 
const geek_config2 = {
  filters:2,kernelSize:2                        
 ,inputShape:[3,4],
  activation: 'sigmoid'};
const geek_convLayer = tf.layers.conv1d(geek_config2).apply(geek_InputL);
console.log(`Convolution layer shape : ${geek_convLayer.shape}`);
 
// Adding layer to the model
const geek_config3 = {inputs:geek_InputL, outputs:geek_convLayer};
const model = tf.model(geek_config3);
// Compiling the model
const geek_config4 = {optimizer:'sgd',loss:'meanSquaredError'};
model.compile(geek_config4);
 
// Predicting the value for the input
const geek_Test = tf.randomUniform([3,3,4]);
model.predict(geek_Test).print();


输出:

_________________________________________________________________
Layer (type)                 Output shape              Param #   
=================================================================
input1 (InputLayer)          [null,7,4]                0         
_________________________________________________________________
conv1d_Conv1D1 (Conv1D)      [null,1,10]               290       
_________________________________________________________________
dense_Dense1 (Dense)         [null,1,7]                77        
=================================================================
Total params: 367
Trainable params: 367
Non-trainable params: 0
_________________________________________________________________

示例 2:在此示例中,我们将看到卷积层如何根据配置过滤输入数据。在这里,我们使用 inputShape 、filter 、 kernelSize 、activation 制作卷积层并用它编译模型。过滤卷积层后,我们对输入数据使用预测函数。

Javascript

import * as tf from "@tensorflow/tfjs"
 
// Input Layer for model
const geek_config = {shape:[3,4]};
const geek_InputL = tf.input(geek_config);
console.log(`Input layer shape : ${geek_InputL.shape}`);
 
// Convolution For the model 
const geek_config2 = {
  filters:2,kernelSize:2                        
 ,inputShape:[3,4],
  activation: 'sigmoid'};
const geek_convLayer = tf.layers.conv1d(geek_config2).apply(geek_InputL);
console.log(`Convolution layer shape : ${geek_convLayer.shape}`);
 
// Adding layer to the model
const geek_config3 = {inputs:geek_InputL, outputs:geek_convLayer};
const model = tf.model(geek_config3);
// Compiling the model
const geek_config4 = {optimizer:'sgd',loss:'meanSquaredError'};
model.compile(geek_config4);
 
// Predicting the value for the input
const geek_Test = tf.randomUniform([3,3,4]);
model.predict(geek_Test).print();

输出:

Input layer shape : ,3,4
Convolution layer shape : ,2,2
Tensor
    [[[0.5468831, 0.4990641],
      [0.3059803, 0.4743758]],

     [[0.4450175, 0.4848864],
      [0.3678558, 0.4276305]],

     [[0.4802476, 0.5687023],
      [0.4083693, 0.4854257]]]

参考: https://js.tensorflow.org/api/3.6.0/#layers.conv1d