为什么我的 h2o 自动编码器有这么多输入节点?
Why does my h2o auto-encoder have so many input nodes?
我正在尝试使用 h2o 在 R 中训练自动编码器模型以检测数据集中的异常:
这是我的代码:
df <- read.csv(file=inputFile) # extract dataframe
feature_names <- names(df)
train_df <- df # Use whole dataset for training for this example
# -- Now train auto-encoder model --
library(h2o)
localH2O = h2o.init()
h2o.removeAll() # Close clusters that were already running
train_h2o <- as.h2o(train_df) # Put data in h2o dataframe
# Create deep learning model
result_model = h2o.deeplearning(x = feature_names, training_frame = train_h2o,
autoencoder = TRUE,
hidden = c(6,5,6),
epochs = 50)
然后模型训练成功后,我输入result_model
得到:
layer units type dropout l1 l2 mean_rate rate_rms momentum
1 1 798 Input 0.00 % NA NA NA NA NA
2 2 6 Rectifier 0.00 % 0.000000 0.000000 0.018308 0.110107 0.000000
3 3 5 Rectifier 0.00 % 0.000000 0.000000 0.002325 0.001377 0.000000
4 4 6 Rectifier 0.00 % 0.000000 0.000000 0.001975 0.001191 0.000000
5 5 798 Rectifier NA 0.000000 0.000000 0.010888 0.064831 0.000000
层单位是:
798, 6, 5, 6, 798,尽管它应该有 7 个输入节点。
有人可以帮忙吗?将不胜感激。
DNN 中的第一层是输入层 -- 即您在训练集中拥有的变量(或编码变量)的数量。
总结以上评论,您的训练框架正在针对您拥有的任何分类列进行扩展(默认情况下,单热编码)。鉴于您的数据集的屏幕截图,您似乎几乎拥有所有分类列(并且它们的类别总数必须约为 798)。所以你看到的是合理的。由于它是一个自动编码器,输出层与输入层的大小相同,这就是为什么最后一层也是 798 个单位。
我正在尝试使用 h2o 在 R 中训练自动编码器模型以检测数据集中的异常:
这是我的代码:
df <- read.csv(file=inputFile) # extract dataframe
feature_names <- names(df)
train_df <- df # Use whole dataset for training for this example
# -- Now train auto-encoder model --
library(h2o)
localH2O = h2o.init()
h2o.removeAll() # Close clusters that were already running
train_h2o <- as.h2o(train_df) # Put data in h2o dataframe
# Create deep learning model
result_model = h2o.deeplearning(x = feature_names, training_frame = train_h2o,
autoencoder = TRUE,
hidden = c(6,5,6),
epochs = 50)
然后模型训练成功后,我输入result_model
得到:
layer units type dropout l1 l2 mean_rate rate_rms momentum
1 1 798 Input 0.00 % NA NA NA NA NA
2 2 6 Rectifier 0.00 % 0.000000 0.000000 0.018308 0.110107 0.000000
3 3 5 Rectifier 0.00 % 0.000000 0.000000 0.002325 0.001377 0.000000
4 4 6 Rectifier 0.00 % 0.000000 0.000000 0.001975 0.001191 0.000000
5 5 798 Rectifier NA 0.000000 0.000000 0.010888 0.064831 0.000000
层单位是: 798, 6, 5, 6, 798,尽管它应该有 7 个输入节点。
有人可以帮忙吗?将不胜感激。
DNN 中的第一层是输入层 -- 即您在训练集中拥有的变量(或编码变量)的数量。
总结以上评论,您的训练框架正在针对您拥有的任何分类列进行扩展(默认情况下,单热编码)。鉴于您的数据集的屏幕截图,您似乎几乎拥有所有分类列(并且它们的类别总数必须约为 798)。所以你看到的是合理的。由于它是一个自动编码器,输出层与输入层的大小相同,这就是为什么最后一层也是 798 个单位。