Torch - 神经网络的大输入和输出大小
Torch - Large input and output sizes into neural network
我是机器学习的新手,正在寻求帮助。
我想训练一个网络来预测我期望的下一个值如下:
参考:[val1 val2 ... val 15]
val = 0 如果不存在,1 如果存在。
输入:[1 1 1 0 0 0 0 0 1 1 1 0 0 0 0]
输出:[1 1 1 0 0 0 0 0 1 1 1 0 0 1 1](出现最后两个值)
所以我的神经网络会有 15 个输入和 15 个输出
我想知道是否有更好的方法来进行这种预测。我的数据也需要规范化吗?
现在的问题是,我没有 15 个值,但实际上有 600'000 个值。神经网络能否处理如此大的张量,而且我听说我需要两倍数量的隐藏层单元。
非常感谢您的帮助,您是机器学习专家!
最佳
这不是神经网络概念的问题:问题在于您的计算配置和框架实现是否提供了所需的内存。由于您尚未描述您的拓扑结构,因此我们无能为力帮助您确定范围。你有什么参数和重量计数?其中每一个至少是一个短浮点数(4 字节)。例如,直接 FC(全连接)层会给你 (6e5)^2 权重,或 3.6e11 * 4 字节 => 1.44e12 字节。是的,这为该层的权重增加了 1.5 TB。
您可以使用您选择的 NN 样式来解决一些问题。例如,拆分成单独的通道(例如,60 个通道,每个通道 1000 个特征)可以显着节省内存,尽管以训练速度(更多层)和可能的一些准确性为代价(尽管交叉可以解决很多问题) .卷积还可以节省您的整体内存,同样是以训练速度为代价的。
600K => 4 => 600K
这一说明解决了我的主要担忧:您在两个地方各有 600,000 * 4 个权重:1,200,004 个参数和 4.8M 权重。这是 6M 的总浮点数,这不会对任何现代通用计算机的 RAM 造成压力。
通道的想法是当你试图在层之间建立更胖的连接时,例如 600K => 600K FC。在这种情况下,您将数据分成更小的组(通常只有 2-12 个),并形成一堆并行的全连接流。例如,您可以输入并创建 10 个流,每个流都是 60K => 60K FC。在你的下一层,你交换组织,"dealing out" 每组 60K,这样 1/10 进入每个下一个通道。
这样,你只有 10 * 60K * 60K 的权重,只有以前的 10% ...但是现在有 3 层。尽管如此,它仍然节省了 5 倍的权重所需的内存,这就是组合爆炸的地方。
我是机器学习的新手,正在寻求帮助。 我想训练一个网络来预测我期望的下一个值如下:
参考:[val1 val2 ... val 15]
val = 0 如果不存在,1 如果存在。
输入:[1 1 1 0 0 0 0 0 1 1 1 0 0 0 0]
输出:[1 1 1 0 0 0 0 0 1 1 1 0 0 1 1](出现最后两个值)
所以我的神经网络会有 15 个输入和 15 个输出
我想知道是否有更好的方法来进行这种预测。我的数据也需要规范化吗?
现在的问题是,我没有 15 个值,但实际上有 600'000 个值。神经网络能否处理如此大的张量,而且我听说我需要两倍数量的隐藏层单元。
非常感谢您的帮助,您是机器学习专家!
最佳
这不是神经网络概念的问题:问题在于您的计算配置和框架实现是否提供了所需的内存。由于您尚未描述您的拓扑结构,因此我们无能为力帮助您确定范围。你有什么参数和重量计数?其中每一个至少是一个短浮点数(4 字节)。例如,直接 FC(全连接)层会给你 (6e5)^2 权重,或 3.6e11 * 4 字节 => 1.44e12 字节。是的,这为该层的权重增加了 1.5 TB。
您可以使用您选择的 NN 样式来解决一些问题。例如,拆分成单独的通道(例如,60 个通道,每个通道 1000 个特征)可以显着节省内存,尽管以训练速度(更多层)和可能的一些准确性为代价(尽管交叉可以解决很多问题) .卷积还可以节省您的整体内存,同样是以训练速度为代价的。
600K => 4 => 600K
这一说明解决了我的主要担忧:您在两个地方各有 600,000 * 4 个权重:1,200,004 个参数和 4.8M 权重。这是 6M 的总浮点数,这不会对任何现代通用计算机的 RAM 造成压力。
通道的想法是当你试图在层之间建立更胖的连接时,例如 600K => 600K FC。在这种情况下,您将数据分成更小的组(通常只有 2-12 个),并形成一堆并行的全连接流。例如,您可以输入并创建 10 个流,每个流都是 60K => 60K FC。在你的下一层,你交换组织,"dealing out" 每组 60K,这样 1/10 进入每个下一个通道。
这样,你只有 10 * 60K * 60K 的权重,只有以前的 10% ...但是现在有 3 层。尽管如此,它仍然节省了 5 倍的权重所需的内存,这就是组合爆炸的地方。