nuget server logo nuget api documents
↑

API Docs / Microsoft.VisualBasic.MachineLearning.TensorFlow / ITensorComputeF

ITensorComputeF

Full name Microsoft.VisualBasic.MachineLearning.TensorFlow.Compute.ITensorComputeF Assembly Microsoft.VisualBasic.MachineLearning.TensorFlow Members 30

单精度张量计算后端契约。

00 Remarks

形状校验、广播等"语义边界"仍然由 TensorF 层负责, 后端只需要实现纯粹的数值计算。后端应当是无状态(或线程安全)的, 因为 TensorF.computeKernelF 是一个全局共享变量。

01 Syntax

Microsoft.VisualBasic.MachineLearning.TensorFlow.Compute.ITensorComputeF

02 Methods

NameOverloadsSummary
Add 1 逐元素相加
Subtract 1 逐元素相减
Multiply 1 逐元素相乘
Divide 1 逐元素相除
Maximum 1 逐元素取较大值
Minimum 1 逐元素取较小值
Exp 1 逐元素指数
Log 1 逐元素自然对数
Sqrt 1 逐元素平方根
Square 1 逐元素平方
Abs 1 逐元素绝对值
Negate 1 逐元素取负
Reciprocal 1 逐元素倒数
Tanh 1 逐元素双曲正切
Sigmoid 1 逐元素 Sigmoid
Relu 1 逐元素 ReLU
AddScalar 1 逐元素加标量
MultiplyScalar 1 逐元素乘标量
DivideScalar 1 逐元素除标量
Clip 1 把元素钳制到 [low, high] 区间
MatMul 1 二维矩阵乘法
SumAll 1 整体求和。累加使用双精度,避免大数组单精度累加的舍入误差。
MeanAll 1 整体求均值
MinAll 1 最小值
MaxAll 1 最大值
Laplacian7 1 七点拉普拉斯 stencil:out = Σ(流体邻居) - nFluid * 中心。 固体(掩膜为 0)单元的输出恒为 0;固体邻居按 Neumann 零梯度不计入, 因此除数取该格的流体邻居数 nFluid。
JacobiStencil7 1 带掩膜的七点 Jacobi 迭代。统一迭代式: x_new(idx) = (alpha · Σ_fluid x_old(邻居) + rhs(idx)) / denom 其中 denom = beta(当 beta > 0),否则 denom = nFluid(idx)。 固体单元恒为 0。两种典型用法: 压力泊松 ∇²p = div…
AdvectTrilinear 1 半拉格朗日平流:对每个格子沿速度场反向追踪 dt 时间, 在回溯位置对源场做三线性插值采样。 这是纯 gather(只读源场、只写目标格),无 scatter,因此可以完全并行。
ApplyMask 1 按掩膜把所有给定场中的固体单元置零(无滑移壁:速度 / 压力 / 密度恒为 0)。

03 Properties

NameOverloadsSummary
Name 1 后端名称,用于诊断输出(例如 "SIMD-F32" / "CUDA-F32")。

04 Members

method Add #

逐元素相加

method Subtract #
Subtract(TensorF, TensorF)

逐元素相减

method Multiply #
Multiply(TensorF, TensorF)

逐元素相乘

method Divide #
Divide(TensorF, TensorF)

逐元素相除

method Maximum #
Maximum(TensorF, TensorF)

逐元素取较大值

method Minimum #
Minimum(TensorF, TensorF)

逐元素取较小值

method Exp #
Exp(TensorF)

逐元素指数

method Log #
Log(TensorF)

逐元素自然对数

method Sqrt #
Sqrt(TensorF)

逐元素平方根

method Square #
Square(TensorF)

逐元素平方

method Abs #
Abs(TensorF)

逐元素绝对值

method Negate #
Negate(TensorF)

逐元素取负

method Reciprocal #
Reciprocal(TensorF)

逐元素倒数

method Tanh #
Tanh(TensorF)

逐元素双曲正切

method Sigmoid #
Sigmoid(TensorF)

逐元素 Sigmoid

method Relu #
Relu(TensorF)

逐元素 ReLU

method AddScalar #
AddScalar(TensorF, Single)

逐元素加标量

method MultiplyScalar #
MultiplyScalar(TensorF, Single)

逐元素乘标量

method DivideScalar #
DivideScalar(TensorF, Single)

逐元素除标量

method Clip #
Clip(TensorF, Single, Single)

把元素钳制到 [low, high] 区间

method MatMul #
MatMul(TensorF, TensorF)

二维矩阵乘法

method SumAll #
SumAll(TensorF)

整体求和。累加使用双精度,避免大数组单精度累加的舍入误差。

method MeanAll #
MeanAll(TensorF)

整体求均值

method MinAll #
MinAll(TensorF)

最小值

method MaxAll #
MaxAll(TensorF)

最大值

method Laplacian7 #
Laplacian7(TensorF, Byte(), Byte())

七点拉普拉斯 stencil:out = Σ(流体邻居) - nFluid 中心。 固体(掩膜为 0)单元的输出恒为 0;固体邻居按 Neumann 零梯度不计入, 因此除数取该格的流体邻居数 nFluid*。

Parameters
NameTypeDescription
srcTensorF

输入场

maskByte()

固体掩膜,0 = 固体 / 空腔,非 0 = 流体。传 Nothing 表示全流体

nFluidByte()

每格的流体邻居数(0..6),长度与场一致

Returns

拉普拉斯结果

method JacobiStencil7 #
JacobiStencil7(TensorF, Byte(), Byte(), Single, Single, Int32, TensorF)

带掩膜的七点 Jacobi 迭代。统一迭代式: x_new(idx) = (alpha · Σ_fluid x_old(邻居) + rhs(idx)) / denom 其中 denom = beta(当 beta > 0),否则 denom = nFluid(idx)。 固体单元恒为 0。两种典型用法: 压力泊松 ∇²p = div → alpha = 1, beta = 0(除数取 nFluid), rhs = -div 隐式扩散 (1+6a)φ = φ_old + a·Σ → alpha = a, beta = 1 + 6a, rhs = φ_old

Parameters
NameTypeDescription
rhsTensorF

右端项(见上:压力泊松传 -div,扩散传 φ_old)

maskByte()

固体掩膜,0 = 固体。传 Nothing 表示全流体

nFluidByte()

每格的流体邻居数

alphaSingle

邻居项系数

betaSingle

中心项除数;<= 0 表示除数改用每格流体邻居数

iterationsInt32

迭代次数

initialTensorF

初始猜测;传 Nothing 则全零开始

Returns

迭代后的解

method AdvectTrilinear #
AdvectTrilinear(TensorF, TensorF, TensorF, TensorF, Single, Byte())

半拉格朗日平流:对每个格子沿速度场反向追踪 dt 时间, 在回溯位置对源场做三线性插值采样。 这是纯 gather(只读源场、只写目标格),无 scatter,因此可以完全并行。

Parameters
NameTypeDescription
srcTensorF

被平流的源场

uTensorF

速度场 X 分量

vTensorF

速度场 Y 分量

wTensorF

速度场 Z 分量

dtSingle

时间步长

maskByte()

固体掩膜,0 = 固体(输出恒为 0)。传 Nothing 表示全流体

Returns

平流后的新场

method ApplyMask #
ApplyMask(Byte(), TensorF())

按掩膜把所有给定场中的固体单元置零(无滑移壁:速度 / 压力 / 密度恒为 0)。

Parameters
NameTypeDescription
maskByte()

固体掩膜,0 = 固体

fieldsTensorF()

需要置零的场(数量不定)

property Name #
Name

后端名称,用于诊断输出(例如 "SIMD-F32" / "CUDA-F32")。