h2o 深度学习权重和归一化
h2o deep learning weights and normalization
我正在通过 R 界面探索 h2o,我得到了一个奇怪的权重矩阵。我的任务很简单:给定 x,y 计算 x+y。
我有 214 行 3 列。第一列 (x) 从 (-1000, 1000) 统一绘制,第二列 (y) 从 (-100,100) 统一绘制。我只想将它们组合起来,这样我就有了一个带有单个神经元的隐藏层。
这是我的代码:
library(h2o)
localH2O = h2o.init(ip = "localhost", port = 54321, startH2O = TRUE)
train <- h2o.importFile(path = "/home/martin/projects/R NN Addition/addition.csv")
model <- h2o.deeplearning(1:2,3,train, hidden = c(1), epochs=200, export_weights_and_biases=T, nfolds=5)
print(h2o.weights(model,1))
print(h2o.weights(model,2))
结果是
> print(h2o.weights(model,1))
x y
1 0.5586579 0.05518193
[1 row x 2 columns]
> print(h2o.weights(model,2))
C1
1 1.802469
出于某种原因,y 的权重值比 x 低 0.055 - 10 倍。因此,最终神经网络将计算 x+y/10。但是,h2o.predict 实际上 returns 是正确的值(即使在测试集上)。
我猜有一个预处理步骤以某种方式扩展了我的数据。有什么方法可以重现模型产生的实际重量?我希望能够可视化一些非常简单的神经网络。
如果所有输入特征均值 0
和标准差 1
,则神经网络表现最佳。如果这些特征具有非常不同的标准差,神经网络的表现就会很差。因此 h20
会为您进行标准化。换句话说,在训练您的网络之前,它会计算您拥有的所有特征的均值和标准差,并将原始值替换为 (x - mean) / stddev
。在您的情况下,第二个特征的 stddev
比第一个特征小 10 倍,因此在归一化之后,就它们对总和的贡献程度以及指向隐藏的神经元需要取消它。这就是为什么第二个特征的权重小 10 倍的原因。
我正在通过 R 界面探索 h2o,我得到了一个奇怪的权重矩阵。我的任务很简单:给定 x,y 计算 x+y。
我有 214 行 3 列。第一列 (x) 从 (-1000, 1000) 统一绘制,第二列 (y) 从 (-100,100) 统一绘制。我只想将它们组合起来,这样我就有了一个带有单个神经元的隐藏层。
这是我的代码:
library(h2o)
localH2O = h2o.init(ip = "localhost", port = 54321, startH2O = TRUE)
train <- h2o.importFile(path = "/home/martin/projects/R NN Addition/addition.csv")
model <- h2o.deeplearning(1:2,3,train, hidden = c(1), epochs=200, export_weights_and_biases=T, nfolds=5)
print(h2o.weights(model,1))
print(h2o.weights(model,2))
结果是
> print(h2o.weights(model,1))
x y
1 0.5586579 0.05518193
[1 row x 2 columns]
> print(h2o.weights(model,2))
C1
1 1.802469
出于某种原因,y 的权重值比 x 低 0.055 - 10 倍。因此,最终神经网络将计算 x+y/10。但是,h2o.predict 实际上 returns 是正确的值(即使在测试集上)。
我猜有一个预处理步骤以某种方式扩展了我的数据。有什么方法可以重现模型产生的实际重量?我希望能够可视化一些非常简单的神经网络。
如果所有输入特征均值 0
和标准差 1
,则神经网络表现最佳。如果这些特征具有非常不同的标准差,神经网络的表现就会很差。因此 h20
会为您进行标准化。换句话说,在训练您的网络之前,它会计算您拥有的所有特征的均值和标准差,并将原始值替换为 (x - mean) / stddev
。在您的情况下,第二个特征的 stddev
比第一个特征小 10 倍,因此在归一化之后,就它们对总和的贡献程度以及指向隐藏的神经元需要取消它。这就是为什么第二个特征的权重小 10 倍的原因。