当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Tensorflow.js tf.conv3d()用法及代码示例


Tenorflow.js 是 google 开发的 javascript 库,用于在浏览器或 Node.js 中运行和训练机器学习模型。

tf.conv3d() 函数用于计算给定输入的 3d 卷积。输入主要是 3D 图像数据,如 CT 或 MRI 成像或任何视频。为了从这些数据中提取特征,我们使用卷积层创建卷积核并输出 4D 或 5D 张量。

用法:

tf.conv3d (x, filter, strides, pad, dataFormat?, dilations?) 

参数:

  • x : 4 和 5 的张量等级被输入到卷积中。张量也可以是形状为 [批次、深度、高度、宽度、通道] 的类型化数组。
  • filter :Filter 的等级为 5,数据类型与 x 相同,形状为 [filterDepth, filterHeight, filterWidth, inChannels, outChannels]。过滤器和输入的输入通道必须匹配。
  • stride: 步幅用于在输入张量上移动过滤器。为此,传递长度>=5 的列表。
  • pad:填充算法有 ‘same’ 和 ‘valid’ 类型。 “相同”将创建与输入相同大小的输出。而 ‘valid’ 输出的大小将小于输入。
  • dataFormat:在两个字符串中,它可以是:“NHWC”、“NCHW”。使用默认格式“NHWC”,数据的存储顺序为:[batch, depth, height, width, channels]。需要指定输入和输出数据的数据格式。这是可选的。
  • dilations:膨胀率是检查卷积率的两个整数元组。[dilationDepth,dilationHeight,dilationWidth]作为参数传递。这是可选的。



范例1:在这个例子中,我们将手动创建一个输入和内核张量并执行卷积运算。我们将打印出张量的形状以记录通道数和填充算法。

Javascript


// Importing libraries
import * as from "@tensorflow/tfjs"
  
// Input tensor
const X=tf.tensor5d([[[[[0.],[2.]],
                       [[3.],[1.]],
                       [[4.],[2.]]],
                      [[[1.],[0.]],
                       [[2.],[1.]],
                       [[4.],[2.]]]]]);
console.log('Shape of the input:' ,X.shape);
  
// Kernel vector has been set
const kernel=tf.tensor5d([[[[[0.3,1.2]]],[[[0.6,1.8]]],[[[0.8,1.5]]]]]);
console.log('Shape of the kernel:' ,kernel.shape);
  
// Output tensor afetr convolution
let output=tf.conv3d(X,kernel,strides=[1,1,1,1,1],'same');
output.print();
console.log('Shape of the output tensor:',output.shape);

输出:

Shape of the input:1,2,3,2,1
Shape of the kernel:1,3,1,1,2
Tensor
    [[[ [[2        , 5.0999999],],

        [[2.8000002, 7.1999998],],

        [[1.5      , 4.8000002],]],


      [ [[0.8      , 1.5      ],],

        [[2.2      , 4.8000002],],

        [[1.5      , 4.8000002],]]]]
Shape of the output tensor:1,2,3,1,2

范例2:在下面的代码中,会发生错误,因为通道数,即输入张量的第 5 个索引和内核张量的第 4 个索引不匹配。

Javascript


import * as from "@tensorflow/tfjs"
  
// Input tensor
const X=tf.tensor5d([0.,2.,3.,1.,4.,2.,1.,0.,2.,1.,4.,2.],[1,2,3,2,1]);
  
  
// Kernel vector has been set
const kernel=tf.tensor5d([0.3,1.2,0.6,1.8,0.8,1.5],[1,1,1,2,3]);
  
  
// Output tensor afetr convolution
let output=tf.conv3d(X,kernel,strides=[1,1,1,2,1],'same');
output.print();
console.log('Shape of the output tensor:',output.shape);

输出:

An error occured on line:10
Error in conv3d:depth of input (1) must match input depth for filter 2.

范例3:在这个例子中,我们将执行两个卷积操作。首先,我们将创建一个从正态分布中随机选取的值的张量,并在卷积后打印输出张量。之后,我们采用更大尺寸的张量(可以是 3D 图像或视频)并执行卷积,这将再次生成一个大张量。我们将打印该张量的输出形状。

Javascript


// Importing libraries
import * as from "@tensorflow/tfjs"
  
// A tensor with values selected from a
// normal distribution
const x=tf.randomNormal([1,2,4,1,3]);
  
const kernel=tf.tensor5d([0.3,1.2,0.6,1.8,0.8,1.5],[1,1,2,3,1])
  
// Output tensor after convolution 
let out=tf.conv3d(x,kernel,strides=[1,1,1,1,1],'same')
  
// Printing the output tensor
console.log('First output tensor is:')
out.print()
  
// Input tensor of bigger shape is taken 
const y=tf.randomNormal([3,25,25,25,1]);
  
const kernel2=tf.randomNormal([1,3,3,1,1])
  
// Convolution is performed
let output2=tf.conv3d(y,kernel2,strides=[1,1,1,1,1],'same')
  
// Output2.print()
// Printing out the bigger output shape
console.log('\n The shape of the output tensor',output2.shape)

输出:

First output tensor is:
Tensor
    [[[ [[-0.702378 ],],

        [[1.9029824 ],],

        [[-0.1904218],],

        [[-2.2287691],]],


      [ [[-1.9580686],],

        [[-2.8335922],],

        [[0.0155853 ],],

        [[-3.6478395],]]]]

 The shape of the bigger output tensor 3,25,25,25,1

参考资料:https://js.tensorflow.org/api/1.0.0/#conv3d




相关用法


注:本文由纯净天空筛选整理自barnadipdey2510大神的英文原创作品 Tensorflow.js tf.conv3d() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。