tf.js 实战学习笔记
tfvis.render.scatterplot (container,data,opts?)
-
tfjs-vis API 的 CHARTS part
-
绘制散点图(文档见 https://js.tensorflow.org/api_vis/1.4.3/#render.scatterplot)
const series1 = Array(100).fill(0)
.map(y => Math.random() * 100 - (Math.random() * 50))
.map((y, x) => ({ x, y, }));
const series2 = Array(100).fill(0)
.map(y => Math.random() * 100 - (Math.random() * 150))
.map((y, x) => ({ x, y, }));
const series = ['First', 'Second'];
const data = { values: [series1, series2], series }
const surface = { name: 'Scatterplot', tab: 'Charts' };
tfvis.render.scatterplot(surface, data);
-
参数:
- container (HTMLElement|{name: string, tab?: string}|Surface|{drawArea: HTMLElement})
- data (Object)
- values (Point2D[][]|Point2D[]) {x,y}元组的数组(或嵌套数组)。
- series (string[]) 系列名称/标签
- opts (Object) 可选的
- xAxisDomain([number,number]) 被zoomToFit覆盖的 x 轴的区域
- yAxisDomain([number,number]) 被zoomToFit覆盖的 y 轴的区域
- zoomToFit (boolean) 将图表范围设置为仅适合数据。这可能会修改轴比例,但允许将更多数据拟合到视图中。
- seriesColors (string []) 绘制的每个系列的颜色。有效CSS颜色字符串的数组。
- width (number) 图表的宽度(以像素为单位)
- height (number) 图表高度(以像素为单位)
- xLabel (string) xAxis的标签
- yLabel (string) yAxis的标签
- fontSize (number) 以px为单位的fontsize
- xType (‘quantitative’|‘ordinal’|‘nominal’) 将自动设置
- yType (‘quantitative’|‘ordinal’|‘nominal’) 将自动设置
-
返回: Promise
tf.Sequential extends tf.LayersModel
- API Reference 中的 MODELS part 的 Creation 部分
- 具有一叠层的模型,从一个层到另一个层线性地进给。tf.sequential() 是一个工厂函数,可创建 tf.Sequential 的实例。
const model = tf.sequential();
model.add(tf.layers.dense({
units: 1,
inputShape: [2],
activation: 'sigmoid'
}));
model.compile({
loss: tf.losses.logLoss,
optimizer: tf.train.adam(0.1)
});
const inputs = tf.tensor(data.map(p => [p.x, p.y]));
const labels = tf.tensor(data.map(p => p.label));
await model.fit(inputs, labels, {
batchSize: 40,
epochs: 20,
callbacks: tfvis.show.fitCallbacks(
{ name: '训练效果' },
['loss']
)
});
window.predict = (form) => {
const pred = model.predict(tf.tensor([[form.x.value * 1, form.y.value * 1]]));
alert(`预测结果:${pred.dataSync()[0]}`);
};
- add (layer)
- 在图层堆栈的顶部添加一个图层实例。
- 参数:
- layer (tf.layers.Layer) 层实例
- 返回:void
tf.LayersModel extends Container|tfc.InferenceModel
- API Reference 的 MODELS part 的 Classes 部分
- tf.LayersModel 是 TensorFlow.js 中训练,推理和评估的基本单元。要创建 tf.LayersModel,请使用 tf.LayersModel。
- 另请参见: tf.Sequential,tf.loadLayersModel()。
- compile (args)
- 配置并准备用于训练和评估的模型。compile 方法为模型配备了优化程序,损耗 and/or 度量。在未编译的模型上调用 fit 或 evaluate 会引发错误。
- 参数:
- args (Object) a ModelCompileArgs 指定用于拟合和评估该模型的损失,优化器和度量。
- optimizer (string|tf.train.Optimizer) tf.train.Optimizer 的实例或 Optimizer 的字符串名称。
- loss (string|string[]|{[outputName: string]: string}|LossOrMetricFn| LossOrMetricFn[]|{[outputName: string]: LossOrMetricFn}) 对象函数或对象函数的名称。如果模型有多个输出,则可以通过传递字典或损失数组来在每个输出上使用不同的损失。然后,将由模型最小化的损失值将是所有单个损失的总和。
- metrics (string|LossOrMetricFn|Array| {[outputName: string]: string | LossOrMetricFn}) 训练和测试期间模型要评估的度量标准列表。通常,您将使用 metrics=[‘accuracy’]。要为多输出模型的不同输出指定不同的度量标准,您还可以传递一个字典。
- 返回:void
- fit (x, y, args?)
- 为模型训练固定的次数(数据集上的迭代)
- 参数:
- x (tf.Tensor|tf.Tensor[]|{[inputName: string]: tf.Tensor}) tf.tensor 训练数据,如果模型有多个输入,则为tf.Tensor的数组。如果模型中的所有输入均已命名,则还可以传递将输入名称映射到 tf.Tensor 的字典。
- y (tf.Tensor|tf.Tensor[]|{[inputName: string]: tf.Tensor}) tf.Tensor 的目标(标签)数据的张量;如果模型有多个输出,则为 tf.Tensor 的数组。如果模型中的所有输出均已命名,则还可以将输出名称映射到 tf.Tensor 的字典。
- args (Object) A ModelFitArgs,包含可选字段。 可选的
- batchSize (number) 每个梯度更新的样本数。如果未指定,则默认为32。
- epochs (number) 整数,迭代训练数据数组的次数
- verbose (ModelLoggingVerbosity) 详细度级别。
- 预期为0、1或2。默认值:1。
- 0-在fit()调用期间没有打印的消息。
- 1-在Node.js(tfjs-node)中,打印进度条,以及损耗和指标值以及训练速度的实时更新。在浏览器中:无动作。这是默认值。
- 2-尚未实施。
- callbacks (BaseCallback[]|CustomCallbackArgs|CustomCallbackArgs[]) 训练期间要调用的回调列表。可以具有以下一个或多个回调:
- onTrainBegin(logs):训练开始时调用。
- onTrainEnd(logs):培训结束时调用。
- onEpochBegin(epoch, logs):在每个纪元开始时调用。
- onEpochEnd(epoch, logs):在每个时代结束时调用。
- onBatchBegin(batch, logs):在每批开始时调用。
- onBatchEnd(batch, logs):每批结束时调用。
- onYield(epoch, batch, logs):yieldEvery 使用当前训练次数,批处理和日志每毫秒调用一次。日志与中的日志相同 onBatchEnd()。请注意,onYield 可以跳过批次或时代。另请参阅 yieldEvery 以下文档。
- validationSplit (number) 在 0 到 1 之间浮动,用作训练数据的一部分训练数据。模型将分开训练数据的这一部分,不对其进行训练,并且将在每个时期结束时评估此数据的损失和任何模型度量。在改组之前,从 x 和 y 中提供的最后一个样本中选择验证数据
- validationData ([ tf.Tensor|tf.Tensor[], tf.Tensor|tf.Tensor[] ]|[tf.Tensor | tf.Tensor[], tf.Tensor|tf.Tensor[], tf.Tensor|tf.Tensor[]]) 在每个时期结束时用于评估损失的数据和任何模型指标。该模型将不会根据此数据进行训练。这可以是一个元组 [xVal,yVal] 或一个元组 [xVal,yVal,valSampleWeights]。该模型将不会根据此数据进行训练。validationData 将覆盖 validationSplit。
- shuffle (boolean) 是否在每个时期之前随机选取训练数据。当 stepsPerEpoch 不是 null 时没有任何效果。
- classWeight (ClassWeight|ClassWeight[]|ClassWeightMap) 可选的对象,将类索引(整数)映射到权重(浮点数),以应用于训练期间该类样本的模型损失。这有助于告诉模型对代表性不足的类的样本给与更多关注。
model.predict (x, args?)
- API Reference 的 MODELS part 的 Classes 部分
- 生成输入样本的输出预测。计算是分批进行的。
- 注意:目前不支持predict()的“step”模式。这是因为 TensorFlow.js 核心后端是必需的。
参数:
x (tf.Tensor|tf.Tensor[]) 输入数据,作为张量,如果模型有多个输入 Array,则为 tf.Tensor 的一个。
args (Object) 包含可选字段的 ModelPredictArgs 对象。 可选的
batchSize (number) 可选。批次大小(整数)。如果未指定,则默认为32。
verbose (boolean) 可选。详细模式。默认为 false。
返回值: tf.Tensor | tf.Tensor []
- 示例代码如下:
window.predict = () => {
const input = tf.tidy(() => {
return tf.image.resizeBilinear(
tf.browser.fromPixels(canvas),
[28, 28],
true
).slice([0, 0, 0], [28, 28, 1])
.toFloat()
.div(255)
.reshape([1, 28, 28, 1]);
});
const pred = model.predict(input).argMax(1);
alert(`预测结果为 ${pred.dataSync()[0]}`);
};
tf.layers.dense (args)
- API Reference 的 Basic part
- 创建密集(完全连接)层。
- 该层实现以下操作: output = activation(dot(input, kernel) + bias)
- activation 是作为 activation 参数传递的逐元素激活函数。
- kernel 是由图层创建的权重矩阵。
- bias 是由层中产生的偏置矢量(仅适用如果 useBias 是 true)。
- 输入形状: *
- nD tf.Tensor 的形状(batchSize, …, inputDim)。
- 最常见的情况是带有 shape 的 2D 输入(batchSize, inputDim)。
- 输出形状: *
- nD tf.Tensor 的形状(batchSize, …, units)。
- 例如,对于具有 shape 的2D输入(batchSize, inputDim),输出将具有 shape (batchSize, units)。
- 注意:如果层的输入的秩大于2,则在与内核的初始点积之前将其展平。
- 参数:
- args (Object)
- units (number) 正整数,输出空间的维数。
- activation (‘elu’|‘hardSigmoid’|‘linear’|‘relu’|‘relu6’|‘selu’|‘sigmoid’|‘softmax’|‘softplus’|‘softsign’|‘tanh’) 激活函数。如果未指定,则不应用任何激活。
- useBias (boolean) 是否施加偏差。
- kernelInitializer (‘constant’|‘glorotNormal’|‘glorotUniform’|‘heNormal’|‘heUniform’|‘identity’|‘leCunNormal’|‘leCunUniform’|‘ones’|‘orthogonal’|‘randomNormal’|‘randomUniform’| ‘truncatedNormal’|‘varianceScaling’|‘zeros’| string |tf.initializers.Initializer) 密集核权重矩阵的初始化程序。
- biasInitializer (‘constant’|‘glorotNormal’|‘glorotUniform’|‘heNormal’|‘heUniform’|‘identity’|‘leCunNormal’|‘leCunUniform’|‘ones’|‘orthogonal’|‘randomNormal’|‘randomUniform’| ‘truncatedNormal’|‘varianceScaling’|‘zeros’| string |tf.initializers.Initializer) 偏置向量的初始化器。
- inputDim (number) 如果指定,则将 inputShape 定义为[inputDim]。
- kernelConstraint (‘maxNorm’|‘minMaxNorm’|‘nonNeg’|‘unitNorm’| string |tf.constraints.Constraint) 限制内核权重。
- biasConstraint (‘maxNorm’|‘minMaxNorm’|‘nonNeg’|‘unitNorm’| string |tf.constraints.Constraint) 偏向向量的约束。
- kernelRegularizer (‘l1l2’| string | Regularizer)正则化函数应用于密集的内核权重矩阵。
- biasRegularizer (‘l1l2’| string | Regularizer)正则化函数应用于偏置向量。
- activityRegularizer (‘l1l2’| string | Regularizer) 正则化函数应用于激活。
- inputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果inputShape和batchInputShape同时定义, batchInputShape将使用。此参数仅适用于输入层(模型的第一层)。
- batchInputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果inputShape和batchInputShape同时定义, batchInputShape将使用。此参数仅适用于输入层(模型的第一层)。
- batchSize (number) 如果inputShape被指定并且batchInputShape被未指定, batchSize被用于构造batchInputShape:[batchSize, …inputShape]
- dtype (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 此层的数据类型。默认为’float32’。此参数仅适用于输入层(模型的第一层)。
- name (string) 此层的名称。
- trainable (boolean) 此层的权重是否可更新 fit。默认为true。
- weights ((tf.Tensor[]) 图层的初始权重值。
- inputDType (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 旧版支持。不要用于新代码。
返回: tf.layers.Layer
tfvis.visor().surface (options)
- tfjs-vis API 的 VISOR & SURFACES part 的 Visor Methods 部分
- 在 surface 上创建一个曲面,tfjs-vis 中大多数采用 surface 的方法也采用 SurfaceInfo,因此除非您要进行自定义绘图,否则几乎不需要调用此方法。
- 参数:
- options (Object)
- name (string) 此表面的名称/标签
- tab (string) 此表面应出现在的选项卡的名称
- styles (StyleOptions) 显示曲面的样式
- 返回:{ container: any; label: any; drawArea: any; }
- 代码示例如下:
tfvis.visor().surface({name: 'Custom Height', tab: 'My Tab', styles: {
height: 500
}})
tf.tidy (nameOrFn, fn?)
- API Reference 的 PERFORMANCE part 的 Memory 部分
- 执行提供的函数 fn,执行完之后,清除 fn 分配的所有中间张量( fn 除外). fn 不得返回 Promise(不允许使用异步功能)。返回的结果可以是一个复杂的对象。使用此方法有助于避免内存泄漏。通常,将对操作的调用包装在 tf.tidy() 中以自动清除内存。
- 注意:在 tidy() 中时不会清除变量。如果要处理变量,请使用 tf.disposeVariables() 或直接对变量调用 dispose()。
- 参数:
- nameOrFn (string | Function) 闭包的名称或要执行的函数。如果提供了名称,则第二个参数应为函数。如果打开了调试模式,将使用提供的名称跟踪并显示该功能的时间和内存使用情况。
- fn (Function) 要执行的功能。 Optional
- 示例代码如下:
const y = tf.tidy(() => {
const one = tf.scalar(1);
const a = tf.scalar(2);
const b = a.square();
console.log('numTensors (in tidy): ' + tf.memory().numTensors);
return b.add(one);
});
console.log('numTensors (outside tidy): ' + tf.memory().numTensors);
y.print();
tf.slice (x, begin, size?)
- API Reference 的 Tensors part 的 Slicing and Joining 部分
- 从tf.Tensor中提取一个切片,该切片从坐标开始begin ,大小为size。
- 也可以使用更严格的特定于等级的方法,该方法具有与此方法相同的签名,可以断言x具有给定等级的方法:
- tf.slice1d
- tf.slice2d
- tf.slice3d
- tf.slice4d
- 参数:
- x (tf.Tensor|TypedArray|Array) tf.Tensor 切片的开始位置。
- begin (number | number []) 起始切片的坐标。该长度可以小于 x 的秩-其余轴将以隐式 0 作为起点。也可以是单个数字,在这种情况下,它指定第一个轴。
- size (number | number []) 切片的大小。该长度可以小于 x 的秩-其余轴将具有隐式 -1。值 -1 要求轴上其余尺寸。也可以是单个数字,在这种情况下,它指定第一个轴的大小。 可选的
- 返回:tf.Tensor
- 示例代码如下:
const x = tf.tensor2d([1, 2, 3, 4], [2, 2]);
x.slice([1, 0], [1, 2]).print();
tf.reshape (newShape)
- API Reference 的 Tensors part 的 Transformations 部分
- 将张量重塑为提供的形状。有关更多详细信息,请参见tf.reshape()。
- 参数:
- newShape (number []) 定义输出张量形状的整数数组。
返回值: tf.Tensor
tf.browser.toPixels (img, canvas?)
- API Reference 的 BROWSER part
- 将 tf.tensor 像素值绘制到字节数组或画布上。当输入的 dtype 为 ‘float32’ 时,我们假定值在 [0-1] 范围内。否则,当输入为 ‘int32’ 时,我们假定值在 [0-255] 范围内。返回一个将在画布绘制时解析的promise。
- 参数:
- img (tf.Tensor2D|tf.Tensor3D|TypedArray|Array) 2或3阶张量。如果为等级2,则绘制灰度。如果为等级3,则深度必须为1、3或4。当深度为1时,绘制灰度。当深度为3时,我们绘制深度尺寸的前三个分量对应于 r,g,b 和 alpha=1。当深度为4时,深度尺寸的所有四个分量对应于 r,g,b,a。
- canvas (HTMLCanvasElement) 要绘制的画布。 可选的
- 返回: Promise
- 示例代码如下:
for (let i = 0; i < 20; i += 1) {
const imageTensor = tf.tidy(() => {
return examples.xs
.slice([i, 0], [1, 784])
.reshape([28, 28, 1]);
});
const canvas = document.createElement('canvas');
canvas.width = 28;
canvas.height = 28;
canvas.style = 'margin: 4px';
await tf.browser.toPixels(imageTensor, canvas);
surface.drawArea.appendChild(canvas);
}
tf.layers.conv2d (args)
- API Reference 的 LAYERS part 的 Convolutional 部分
- 2D 卷积层(例如图像上的空间卷积)。该层创建一个卷积内核,该卷积内核与该层输入进行卷积以产生输出张量。如果 useBias 为 True,则会创建一个偏差矢量并将其添加到输出中。如果 activation 不是 null,则它也将应用于输出。当将此层用作模型的第一层时,请提供关键字参数 inputShape(整数数组,不包括采样轴),例如:对于 dataFormat=‘channelsLast’ 尺寸为 128x128 RGB 图片的 inputShape=[128, 128, 3] 。
- 参数:
- args (Object)
- filters (number) 输出空间的维数(即卷积中的过滤器数量)
- kernelSize (number|number[]) 卷积窗口的尺寸。如果 kernelSize 是一个数字,则卷积窗口将为正方形。
- strides (number|number[]) 在每个维度中卷积的步幅。如果步幅是数字,则两个维度上的步幅相等。指定任何 strides !=1 与指定任何 dilationRate 值 !=1 不兼容
- padding (‘valid’|‘same’|‘causal’) 填充模式。
- dataFormat (‘channelsFirst’|‘channelsLast’) 数据的格式,确定输入维度的顺序。
- channels_last 对应于具有形状的输入 (batch, …, channels)
- channels_first 对应于形状为的输入(batch, channels, …)。
- 默认为channels_last。
- dilationRate (number|[number]|[number, number]|[number, number, number]) 在每个维度上用于膨胀卷积的膨胀率。应该是整数或两个或三个整数的数组。当前,指定任何 dilationRate 值 != 1 与指定任何 strides 值 != 1 不兼容。
- activation (‘elu’|‘hardSigmoid’|‘linear’|‘relu’|‘relu6’| ‘selu’|‘sigmoid’|‘softmax’|‘softplus’|‘softsign’|‘tanh’) 激活函数层,如果不指定激活函数,则不应用任何激活函数。
- useBias (boolean) 图层是否使用偏差矢量。默认为true。
- kernelInitializer (‘constant’|‘glorotNormal’|‘glorotUniform’|‘heNormal’|‘heUniform’|‘identity’| ‘leCunNormal’|‘leCunUniform’|‘ones’|‘orthogonal’|‘randomNormal’| ‘randomUniform’|‘truncatedNormal’|‘varianceScaling’|‘zeros’|string|tf.initializers.Initializer) 卷积核权重矩阵的初始化程序
- biasInitializer (‘constant’|‘glorotNormal’|‘glorotUniform’|‘heNormal’|‘heUniform’|‘identity’| ‘leCunNormal’|‘leCunUniform’|‘ones’|‘orthogonal’|‘randomNormal’| ‘randomUniform’|‘truncatedNormal’|‘varianceScaling’|‘zeros’|string|tf.initializers.Initializer) 偏置向量的初始化器。
- kernelConstraint (‘maxNorm’|‘minMaxNorm’|‘nonNeg’|‘unitNorm’|string|tf.constraints.Constraint) 约束卷积核的权重。
- biasConstraint (‘maxNorm’|‘minMaxNorm’|‘nonNeg’|‘unitNorm’|string|tf.constraints.Constraint) 偏向向量的约束。
- kernelRegularizer (‘l1l2’|string|Regularizer) 正则化函数应用于内核权重矩阵。
- biasRegularizer (‘l1l2’|string|Regularizer) 正则化函数应用于偏置向量
- activityRegularizer (‘l1l2’|string|Regularizer) 正则化函数应用于激活。
- inputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
- batchInputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
- batchSize (number) 如果 inputShape 被指定并且 batchInputShape 未被指定,batchSize 被用于构造 batchInputShape:[batchSize, …inputShape]
- dtype (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 此层的数据类型。默认为’float32’。此参数仅适用于输入层(模型的第一层)。
- name (string) 此层的名称。
- trainable (boolean) 此层的权重是否可更新fit。默认为true。
- weights (tf.Tensor[]) 图层的初始权重值。
- inputDType (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 旧版支持。不要用于新代码。
- 返回: tf.layers.Layer
- 示例代码如下:
const model = tf.sequential();
model.add(tf.layers.conv2d({
inputShape: [28, 28, 1],
kernelSize: 5,
filters: 8,
strides: 1,
activation: 'relu',
kernelInitializer: 'varianceScaling'
}));
tf.layers.maxPool2d (args)
- API Reference 的 LAYERS part 的 Pooling 部分
- 空间数据的最大池化操作
- 输入形状:
- 如果dataFormat === CHANNEL_LAST:具有形状的4D张量: [batchSize, rows, cols, channels]
- 如果dataFormat === CHANNEL_FIRST:具有形状的4D张量: [batchSize, channels, rows, cols]
- 输出形状:
- 如果dataFormat=CHANNEL_LAST:具有形状的4D张量: [batchSize, pooleRows, pooledCols, channels]
- 如果dataFormat=CHANNEL_FIRST:具有形状的4D张量: [batchSize, channels, pooleRows, pooledCols]
- 参数:
- args (Object)
- poolSize (number|[number, number]) 在每个维度[垂直,水平]上要缩小的因子。需要一个整数或2个整数的数组。
- 例如,[2, 2]将两个维度的输入减半。如果仅指定一个整数,则两个尺寸将使用相同的窗口长度
- strides (number|[number, number]) 在池化窗口的各个维度中步幅的大小。需要一个整数或2个整数的数组。整数,2个整数的元组或无。如果为 null,则默认为poolSize。
- padding (‘valid’|‘same’|‘causal’) 用于池化层的填充类型。
- dataFormat (‘channelsFirst’|‘channelsLast’) 用于池层的数据格式。
- inputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
- batchInputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
- batchSize (number) 如果 inputShape 被指定并且 batchInputShape 未被指定,batchSize 被用于构造 batchInputShape:[batchSize, …inputShape]
- dtype (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 此层的数据类型。默认为’float32’。此参数仅适用于输入层(模型的第一层)。
- name (string) 此层的名称。
- trainable (boolean) 此层的权重是否可更新fit。默认为true。
- weights (tf.Tensor[]) 图层的初始权重值。
- inputDType (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 旧版支持。不要用于新代码。
- 返回: tf.layers.Layer
- 代码示例如下:
const model = tf.sequential();
model.add(tf.layers.conv2d({
inputShape: [28, 28, 1],
kernelSize: 5,
filters: 8,
strides: 1,
activation: 'relu',
kernelInitializer: 'varianceScaling'
}));
model.add(tf.layers.maxPool2d({
poolSize: [2, 2],
strides: [2, 2]
}));
tf.layers.flatten (args?)
- API Reference 的 LAYERS part 的 Basic 部分
- 展平输入。不影响批量大小。
- 参数:
- args (Object) Optional
- dataFormat (‘channelsFirst’|‘channelsLast’) 用于池层的数据格式。
- inputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
- batchInputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
- batchSize (number) 如果 inputShape 被指定并且 batchInputShape 未被指定,batchSize 被用于构造 batchInputShape:[batchSize, …inputShape]
- dtype (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 此层的数据类型。默认为’float32’。此参数仅适用于输入层(模型的第一层)。
- name (string) 此层的名称。
- trainable (boolean) 此层的权重是否可更新fit。默认为true。
- weights (tf.Tensor[]) 图层的初始权重值。
- inputDType (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 旧版支持。不要用于新代码。
- 返回: tf.layers.Layer