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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。