Conv2d卷积层多用于图像识别,使用过滤器提取图像中的特征。
构造器
两种方法构造一个新建一个层,输入参数都是必要的。
〔方法一〕使用 filters , kernelSize 和 strides 参数进行构造(支持两种不同的核形状和步进长度)
正方形(长宽相等)
TSP.layers.Conv2d( { filters : Int, kernelSize: Int, strides: Int } );
长宽不等的核和步进长度使用一个数组两个值来表示(第一个是宽,第二个是长)
TSP.layers.Conv2d( { filters : Int, kernelSize: [Int, Int], strides: [Int, Int] } );
〔方法二〕使用 shape 参数进行构造
TSP.layers.Conv2d( { shape : [ Int, Int, Int ] } );

Fig. 1 - Conv2d层示意图(左:收缩 | 右:展开)
参数列表
参数名 标签 |
类型 |
简介 |
具体用法细节和例子 |
---|---|---|---|
filters |
Int | 特征提取过滤器的数量 | filters: 16 |
name |
String | 层的命名 建议添加 |
name: “layerName” |
padding |
String | 是否使用padding |
valid [default] 不使用padding,丢弃无法提取特征的部分,会改变输出的形状 same 使用padding,在不够的位置补零 ,输出的形状不变 |
shape |
Int[] | 当前层的输出形状 | dataFormat默认通道值在最后,例如,shape = [ 28, 28, 6 ],则表示输出为6个特征图,每幅图大小28*28 |
kernelSize |
Int | 卷积核的尺寸 | 2d卷积核为正方形,kernelSize: 3 |
strides |
Int | 卷积移动框的移动步长 | 在不同方向的步长相等,默认情况自动推断 strides = [1, 1] |
color |
color format | 层的颜色 | Conv2d默认颜色是亮黄色 #FFFF2E |
closeButton |
Dict | 层关闭按钮外观控制列表, 查看详情 | display : Boolean. true [default] 显示按钮, false 隐藏按钮 ratio : Int 为正常大小的几倍,默认为1倍 例如,设为2为正常大小的2倍大 |
initStatus |
String | 初始化时,本层是否收缩 | close[default] : 收缩 |
animation- |
Int | 张开和伸缩的调整速度,呈倍速关系 | 例如2就是2倍,数字越大速度越快 |
属性
.inputShape : Int[]
filter_center_focus本层输入Tensor的形状,dataFormat默认通道值在最后,例如inputShape = [ 28, 28, 3 ] 表示输入为3个特征图,每个图大小为28*28。
filter_center_focus在 model.init() 后才可拿到数据,否则为undefined。
.outputShape : Int[]
filter_center_focus本层输出Tensor的形状为3维 3️⃣
filter_center_focusdataFormat默认通道值在最后,例如outputShape = [ 32, 32, 4 ] 表示经过此层处理后,有4个特征图,每个图大小为32*32。
filter_center_focus在 model.init() 后才可拿到数据,否则为undefined。
.neuralValue : Int[]
filter_center_focus本层层间输出值数组。
filter_center_focus载入模型,在 model.predict() 后才可以拿到数据,否则为undefined。
.name : String
filter_center_focus本层的自定义名称。
filter_center_focus创建后即可取到。
.layerType : String
filter_center_focus本层的类型,返回一个定值,字符串Conv2d。
filter_center_focus创建后即可取到。
方法
.apply( layer ) : void
filter_center_focus此方法只在 Functional Model 中使用(非序列型,图结构)。
filter_center_focus将此层连接到layer上,layer即此层的上一层。
filter_center_focus使用此方法来建立一个连接。在 Sequential Model 中不需要专门使用此方法来建立链接,参照 Keras or TensorFlow.js 构建模型语法,直接添加层即可。
let inputLayer = new TSP.layers.GreyscaleInput( {
shape: [28, 28]
} );
let convLayer = new TSP.layers.Conv2d( {
kernelSize: 2,
filters: 16,
strides: 1
} );
convLayer.apply( inputLayer );
.openLayer() : void
filter_center_focus通过直接和3d场景中物体交互直接点击层打开。

Fig. 2 - 点击打开Conv2d层
filter_center_focus代码中通过调用方法打开。
let conv2dLayer = new TSP.layers.Conv2d( {
// 配置Conv2d。
} );
model.add( conv2dLayer );
// ... 给模型添加更多的layer。
model.init();
// 调用openLayer API来打开layer。
conv2dLayer.openLayer();
.closeLayer() : void
filter_center_focus通过直接和3d场景中物体交互点击按钮关闭。

Fig. 3 - 点击关闭按钮关闭Conv2d层
filter_center_focus代码中通过调用方法打开。
let conv2dLayer = new TSP.layers.Conv2d( {
// 配置Conv2d。
} );
model.add( conv2dLayer );
// ... 给模型添加更多的layer。
model.init();
// 如果layer已经是打开状态,调用closeLayer API来关闭layer。
conv2dLayer.closeLayer();
使用样例
filter_center_focus声明一个Conv2D的实例,方便复用
let convLayer = new TSP.layers.Conv2d( {
kernelSize: 5,
filters: 6,
strides: 1,
animationTimeRatio: 2,
name: "conv2d1",
initStatus: "open"
} );
model.add( convLayer );
filter_center_focus直接添加Conv2D
model.add(new TSP.layers.Conv2d( {
kernelSize: 5,
filters: 16,
strides: 1,
name: "conv2d2"
} ));
什么时候用
如果你熟悉Keras | TensorFlow | tfjs 框架,构建模型时使用了卷积层Conv2D(下表列出了可能的使用情景)。一一对应的,在TensorSpace中,你应该使用此API。
框架名称 | 对应框架中新建对象代码段 |
---|---|
Keras️ | keras.layers.Conv2D(filters, kernel_size, strides=(1, 1)) |
TensorFlow | tf.nn.conv2d(input, filter, strides, padding) |
TensorFlow.js️ | tf.layers.conv2d(filters, inputShape) |
标签详情
符号 | 参数性质 | 说明 |
---|---|---|
⭐️ | 必要 | 使用时必须提供,不能为空,只要提供了这些参数,就能正常创建实例,控制参数使用默认值。 |
🔧 | 推荐 | 使用时推荐给定,未给定也可以运行,但在体验和易用性上有隐患。 |
⚙️ | 可选 | 根据模型配置参数选择性添加,这里的参数对于层的结构(3D可视化外观)没有影响。 |
📦 | 模型 | 配置卷积层的相关属性,并对输出特征图形状有影响。 |
🎨 | 外观 | 可覆盖TSP.model下的属性进行细调(查看详情) |
🎦 | 动画控制 | 可覆盖TSP.model下的属性进行细调(查看详情) |
源码