层的“规格”(layer specification):一个被延迟创建的层描述。
CNNLayerArguments
00 Remarks
存在的意义是支持用流式写法来搭建网络:由 CNNLayers 里的工厂函数产出规格对象, 再由 LayerBuilder 的 + 运算符在正确的时机把它实例化并追加进层列表:
Dim cnn As LayerBuilder = New LayerBuilder() +
input_layer({28, 28}, 1) +
conv_layer(5, 32, 1, 2) +
pool_layer(2, 2, 0) +
relu_layer() +
full_connected_layer(10) +
softmax_layer()
之所以必须“延迟创建”,是因为本库的层在构造时就需要拿到 OutputDefinition (它保存着上一层的输出尺寸,用来推算本层的输入尺寸),而那个对象是 LayerBuilder 的内部状态,在链式表达式求值之前无法被引用。
与 R# 的 MLkit(studio\Rsharp_kit\MLkit\MachineLearning\CNNLayerArguments.vb)中同名类型的 差异:那里用 type 字符串加 args 字典来携带参数,是因为 R# 需要在脚本层以弱类型的 方式传递这些对象;在 VB 里直接用委托表达更类型安全——参数在编译期就被捕获, 也不存在“未知层类型”这种运行期分支。
01 Syntax
Microsoft.VisualBasic.MachineLearning.CNN.CNNLayerArguments
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| CreateLayer | 1 | 在该构建器上创建并追加本规格所描述的层。 |
| ToString | 1 |
03 Properties
| Name | Overloads | Summary |
|---|---|---|
| Name | 1 | 可读的规格描述,例如 conv_layer(sx=5, filters=32, stride=1, padding=2) |
04 Fields
| Name | Overloads | Summary |
|---|---|---|
| factory | 1 | 真正把层实例化并追加到构建器上的动作 |
05 Members
CreateLayer(LayerBuilder)
在该构建器上创建并追加本规格所描述的层。
Parameters
| Name | Type | Description |
|---|---|---|
builder | LayerBuilder | 正在被构建的网络 |
Name
可读的规格描述,例如 conv_layer(sx=5, filters=32, stride=1, padding=2)
factory
真正把层实例化并追加到构建器上的动作
ToString()