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
相关用法
- PHP imagecreatetruecolor()用法及代码示例
- p5.js year()用法及代码示例
- d3.js d3.utcTuesdays()用法及代码示例
- PHP ImagickDraw getTextAlignment()用法及代码示例
- PHP Ds\Sequence last()用法及代码示例
- PHP Imagick floodFillPaintImage()用法及代码示例
- PHP geoip_continent_code_by_name()用法及代码示例
- d3.js d3.map.set()用法及代码示例
- PHP GmagickPixel setcolor()用法及代码示例
- Tensorflow.js tf.layers.embedding()用法及代码示例
- PHP opendir()用法及代码示例
- PHP cal_to_jd()用法及代码示例
- d3.js d3.bisectLeft()用法及代码示例
注:本文由纯净天空筛选整理自barnadipdey2510大神的英文原创作品 Tensorflow.js tf.conv3d() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。