我有一个CNN,我在python中使用keras API on tensorflow,我想在JavaScript中实现。但是对于js API 0.15.3的tf,我找不到为卷积层添加步幅和填充的选项。
我的Python代码看起来像这样。
X = Conv2D(64, (2, 2), strides = (1, 1), name = 'conv0')(X_input)
在Js API ref。
tf.layers.conv2d(args)函数源
2D卷积层(例如,图像上的空间卷积)。
该层创建一个卷积内核,该卷内核与层输入卷积以产生一个输出张量。
如果useBias为True,则创建偏置向量并将其添加到输出。
如果激活不为null,则它也会应用于输出。
将此图层用作模型中的第一个图层时,请提供关键字参数inputShape(整数数组,不包括示例轴),例如inputShape = [128,128,3],用于dataFormat ='channelsLast'中的128x128 RGB图片。参数:
args(对象)
filters(number)输出空间的维数(即卷积中的滤波器数)。
如果有人能提供帮助,真的很感激。我应该使用像0.9.0这样的旧API吗?
刚刚发现即使他们没有提到我们可以提供步幅和填充作为参数。我们实际上可以,根据源代码。
constructor(rank: number, args: BaseConvLayerArgs) {
super(args as LayerArgs);
BaseConv.verifyArgs(args);
this.rank = rank;
if (this.rank !== 1 && this.rank !== 2) {
throw new NotImplementedError(
`Convolution layer for rank other than 1 or 2 (${this.rank}) is ` +
`not implemented yet.`);
}
this.kernelSize = normalizeArray(args.kernelSize, rank, 'kernelSize');
this.strides = normalizeArray(
args.strides == null ? 1 : args.strides, rank, 'strides');
this.padding = args.padding == null ? 'valid' : args.padding;
checkPaddingMode(this.padding);
this.dataFormat =
args.dataFormat == null ? 'channelsLast' : args.dataFormat;
checkDataFormat(this.dataFormat);
this.activation = getActivation(args.activation);
this.useBias = args.useBias == null ? true : args.useBias;
this.biasInitializer =
getInitializer(args.biasInitializer || this.DEFAULT_BIAS_INITIALIZER);
this.biasConstraint = getConstraint(args.biasConstraint);
this.biasRegularizer = getRegularizer(args.biasRegularizer);
this.activityRegularizer = getRegularizer(args.activityRegularizer);
this.dilationRate = normalizeArray(
args.dilationRate == null ? 1 : args.dilationRate, rank,
'dilationRate');