Set*_*hen 9 machine-learning convolution azure-machine-learning-studio net#
有人应该添加"net#"作为标签.我正在尝试通过使用本教程将其转换为卷积神经网络来改进Azure机器学习工作室中的神经网络:
https://gallery.cortanaintelligence.com/Experiment/Neural-Network-Convolution-and-pooling-deep-net-2
我和教程之间的差异是我正在使用35个功能和1个标签进行回归,他们正在使用28x28功能和10个标签进行分类.
我从基本和第二个例子开始,让他们使用:
input Data [35];
hidden H1 [100]
from Data all;
hidden H2 [100]
from H1 all;
output Result [1] linear
from H2 all;
Run Code Online (Sandbox Code Playgroud)
现在转变为卷积我误解了.在这里的教程和文档中:https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-azure-ml-netsharp-reference-guide它没有提到节点元组值的方式计算隐藏层.教程说:
hidden C1 [5, 12, 12]
from Picture convolve {
InputShape = [28, 28];
KernelShape = [ 5, 5];
Stride = [ 2, 2];
MapCount = 5;
}
hidden C2 [50, 4, 4]
from C1 convolve {
InputShape = [ 5, 12, 12];
KernelShape = [ 1, 5, 5];
Stride = [ 1, 2, 2];
Sharing = [ F, T, T];
MapCount = 10;
}
Run Code Online (Sandbox Code Playgroud)
看起来像[5,12,12]和[50,4,4]弹出了没有位置的KernalShape,Stride和MapCount.我如何知道哪些值对我的示例有效?我尝试使用相同的值,但它没有工作,我有一种感觉,因为他有一个[28,28]输入和我有[35],我需要2个整数不是3元组.
我只是尝试使用似乎与教程相关的随机值:
const { T = true; F = false; }
input Data [35];
hidden C1 [7, 23]
from Data convolve {
InputShape = [35];
KernelShape = [7];
Stride = [2];
MapCount = 7;
}
hidden C2 [200, 6]
from C1 convolve {
InputShape = [ 7, 23];
KernelShape = [ 1, 7];
Stride = [ 1, 2];
Sharing = [ F, T];
MapCount = 14;
}
hidden H3 [100]
from C2 all;
output Result [1] linear
from H3 all;
Run Code Online (Sandbox Code Playgroud)
现在似乎无法调试,因为Azure机器学习工作室提供的唯一错误代码是:
Exception":{"ErrorId":"LibraryException","ErrorCode":"1000","ExceptionType":"ModuleException","Message":"Error 1000: TLC library exception: Exception of type 'Microsoft.Numerics.AFxLibraryException' was thrown.","Exception":{"Library":"TLC","ExceptionType":"LibraryException","Message":"Exception of type 'Microsoft.Numerics.AFxLibraryException' was thrown."}}}Error: Error 1000: TLC library exception: Exception of type 'Microsoft.Numerics.AFxLibraryException' was thrown. Process exited with error code -2
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
小智 1
对于给定内核和步长的 35 列长度输入,正确的网络定义如下:
const { T = true; F = false; }
input Data [35];
hidden C1 [7, 15]
from Data convolve {
InputShape = [35];
KernelShape = [7];
Stride = [2];
MapCount = 7;
}
hidden C2 [14, 7, 5]
from C1 convolve {
InputShape = [ 7, 15];
KernelShape = [ 1, 7];
Stride = [ 1, 2];
Sharing = [ F, T];
MapCount = 14;
}
hidden H3 [100]
from C2 all;
output Result [1] linear
from H3 all;
Run Code Online (Sandbox Code Playgroud)
首先,C1 = [7,15]。第一个维度就是 MapCount。对于第二个维度,内核形状定义了用于扫描输入列的“窗口”的长度,步幅定义了它在每一步移动的距离。因此,内核窗口将覆盖第 1-7、3-9、5-11、...、29-35 列,当您计算窗口时,会产生第二个维度 15。
接下来,C2 = [14,7,5]。第一个维度仍然是 MapCount。对于第二维和第三维,1×7 内核“窗口”必须覆盖 7×15 的输入大小,沿相应维度使用步骤 1 和 2。
请注意,如果您想展平输出,您可以指定 C2 隐藏层形状为 [98,5] 甚至 [490]。
| 归档时间: |
|
| 查看次数: |
1006 次 |
| 最近记录: |