文章 "深度神经网络 (第五部分)。 DNN 超参数的贝叶斯优化" - 页 3 123 新评论 Aleksei Kuznetsov 2018.06.04 12:36 #21 Vladimir Perervenko:对于贝叶斯法,您不仅需要考虑传球次数,还需要考虑点数。你必须寻找更快的方案。这非常繁琐为了加快速度,可以在调用 BayesianOptimisation 时添加以下参数maxit = 1 #1 而不是 100 - 用于超平面预测的 GP_fit 的重复次数 我没有注意到 100 次重复比 1 次重复有任何改进,所以我现在使用 1。 Ie. BayesianOptimization(все как у вас , maxit = 1)maxit=1 via ...将传递给GPfit:: GP_fit,优化将运行 1 次,而不是 100 次。 您也可以传递: control = c(20*d, 10*d, 2*d);#default - control = c(200*d, 80*d, 2*d) - 从 200*d 中选择 80*d 最佳值并构建 2*d 簇 - 其中 d 是要优化的参数数。此处对这些参数的描述https://github.com/cran/GPfit/blob/master/R/GP_fit.R弗拉基米尔-佩列文科PS.你不切换到 TensorFlow 吗?它只是一个更高的级别。 看来,使用 Darch 30% 的训练和 36% 的测试我都能做到。 虽然 Darch 的支持很差,但他们还是纠正和改进了一些东西,但在 1 月份,它因为没有修复错误(有一个错误是在训练模式下的验证评估)而被从 CRAN 发到了存档中。5 月,他们发布了第 13 版,但又退回到了第 12 版。现在,第 13 版又出现了--显然,它已经完成了。 Discussion of article "Deep 可控优化: 模拟退火 ZUP - 派斯温托通用锯齿形调整浪模式。第 2 Vladimir Perervenko 2018.06.04 12:45 #22 elibrarius:为了加快速度,在调用贝叶斯优化时,可以添加参数maxit = 1 #1 而不是 100 - 用于超平面预测的 GP_fit 的重复次数 没有发现重复 100 次比重复 1 次有任何改进,所以我使用 1。 Ie. maxit=1 via ...将传递给GPfit:: GP_fit,优化将运行 1 次,而不是 100 次。 您也可以传递: control = c(20*d, 10*d, 2*d);#default - control = c(200*d, 80*d, 2*d) - 从 200*d 中选择 80*d 最佳,并建立 2*d 簇 - 其中 d 是要优化的参数数 是的,Darch 的训练率为 30%,测试率为 36%,似乎是有效的。 虽然 Darch 的支持很差,但他们还是纠正和改进了一些问题,但在 1 月份,它因未能修复错误(其中一个错误是在训练模式下的错误估计值与验证)而被从 CRAN 发到存档中。5 月,他们发布了第 13 版,但又退回到了第 12 版。现在第 13 版又出现了--显然他们已经完成了。感谢您提供的信息。我将使用您提供的参数进行尝试。 我已经很久没有在 Github 上访问过他们了。我得写一份建议。darch 软件包提供了 GPU 的使用,但他们从 CRAN(3.4.4 版)上删除了用于 GPU 的软件包。而且 GPU 对速度和质量的影响也很有趣。 祝您好运 Aleksei Kuznetsov 2018.06.04 12:47 #23 这里还有一个制动器 https://github.com/yanyachen/rBayesianOptimization/blob/master/R/Utility_Max.R 我还设置了maxit = 1,而不是 100。 通过 ...不能传递,你可以直接将 Utility_Max 函数加载到 R 中并使用修正后的版本。 Vladimir Perervenko 2018.06.05 12:03 #24 elibrarius:这里还有一个弱智https://github.com/yanyachen/rBayesianOptimization/blob/master/R/Utility_Max.R我还设置了maxit = 1,而不是 100。通过 ...不能传递,你可以直接将 Utility_Max 函数加载到 R 中,然后使用修正后的版本。我在优化 PartVI 文章中的神经网络集合时检查了它。maxit 和 control 对计算时间都没有明显影响。影响最大的是隐藏层的神经元数量。我把它改成这样 OPT_Res <- BayesianOptimization(fitnes, bounds = bonds, init_grid_dt = NULL, init_points = 20, n_iter = 20, acq = "ucb", kappa = 2.576, eps = 0.0, verbose = TRUE, maxit = 100, control = c(100, 50, 8)) elapsed = 14.42 Round = 1 numFeature = 9.0000 r = 7.0000 nh = 36.0000 fact = 9.0000 Value = 0.7530 elapsed = 42.94 Round = 2 numFeature = 4.0000 r = 8.0000 nh = 46.0000 fact = 6.0000 Value = 0.7450 elapsed = 9.50 Round = 3 numFeature = 11.0000 r = 5.0000 nh = 19.0000 fact = 5.0000 Value = 0.7580 elapsed = 14.17 Round = 4 numFeature = 10.0000 r = 4.0000 nh = 35.0000 fact = 4.0000 Value = 0.7480 elapsed = 12.36 Round = 5 numFeature = 8.0000 r = 4.0000 nh = 23.0000 fact = 6.0000 Value = 0.7450 elapsed = 25.61 Round = 6 numFeature = 12.0000 r = 8.0000 nh = 44.0000 fact = 7.0000 Value = 0.7490 elapsed = 8.03 Round = 7 numFeature = 12.0000 r = 9.0000 nh = 9.0000 fact = 2.0000 Value = 0.7470 elapsed = 14.24 Round = 8 numFeature = 8.0000 r = 4.0000 nh = 45.0000 fact = 2.0000 Value = 0.7620 elapsed = 9.05 Round = 9 numFeature = 7.0000 r = 8.0000 nh = 20.0000 fact = 10.0000 Value = 0.7390 elapsed = 17.53 Round = 10 numFeature = 12.0000 r = 9.0000 nh = 20.0000 fact = 6.0000 Value = 0.7410 elapsed = 4.77 Round = 11 numFeature = 9.0000 r = 2.0000 nh = 7.0000 fact = 2.0000 Value = 0.7570 elapsed = 8.87 Round = 12 numFeature = 6.0000 r = 1.0000 nh = 40.0000 fact = 8.0000 Value = 0.7730 elapsed = 14.16 Round = 13 numFeature = 8.0000 r = 6.0000 nh = 41.0000 fact = 10.0000 Value = 0.7390 elapsed = 21.61 Round = 14 numFeature = 9.0000 r = 6.0000 nh = 47.0000 fact = 7.0000 Value = 0.7620 elapsed = 5.14 Round = 15 numFeature = 13.0000 r = 3.0000 nh = 3.0000 fact = 5.0000 Value = 0.7260 elapsed = 5.66 Round = 16 numFeature = 6.0000 r = 9.0000 nh = 1.0000 fact = 9.0000 Value = 0.7090 elapsed = 7.26 Round = 17 numFeature = 9.0000 r = 2.0000 nh = 25.0000 fact = 1.0000 Value = 0.7550 elapsed = 32.09 Round = 18 numFeature = 11.0000 r = 7.0000 nh = 38.0000 fact = 6.0000 Value = 0.7600 elapsed = 17.18 Round = 19 numFeature = 5.0000 r = 3.0000 nh = 46.0000 fact = 6.0000 Value = 0.7500 elapsed = 11.08 Round = 20 numFeature = 6.0000 r = 4.0000 nh = 20.0000 fact = 6.0000 Value = 0.7590 elapsed = 4.47 Round = 21 numFeature = 6.0000 r = 2.0000 nh = 4.0000 fact = 2.0000 Value = 0.7390 elapsed = 5.27 Round = 22 numFeature = 6.0000 r = 2.0000 nh = 21.0000 fact = 10.0000 Value = 0.7520 elapsed = 7.96 Round = 23 numFeature = 7.0000 r = 1.0000 nh = 41.0000 fact = 7.0000 Value = 0.7730 elapsed = 12.31 Round = 24 numFeature = 7.0000 r = 3.0000 nh = 41.0000 fact = 3.0000 Value = 0.7730 elapsed = 7.64 Round = 25 numFeature = 8.0000 r = 4.0000 nh = 16.0000 fact = 7.0000 Value = 0.7420 elapsed = 6.24 Round = 26 numFeature = 13.0000 r = 5.0000 nh = 6.0000 fact = 1.0000 Value = 0.7600 elapsed = 8.41 Round = 27 numFeature = 11.0000 r = 8.0000 nh = 8.0000 fact = 7.0000 Value = 0.7420 elapsed = 8.48 Round = 28 numFeature = 6.0000 r = 7.0000 nh = 15.0000 fact = 2.0000 Value = 0.7580 elapsed = 10.11 Round = 29 numFeature = 12.0000 r = 6.0000 nh = 17.0000 fact = 4.0000 Value = 0.7310 elapsed = 6.03 Round = 30 numFeature = 8.0000 r = 3.0000 nh = 12.0000 fact = 1.0000 Value = 0.7540 elapsed = 8.58 Round = 31 numFeature = 13.0000 r = 5.0000 nh = 18.0000 fact = 2.0000 Value = 0.7300 elapsed = 6.78 Round = 32 numFeature = 13.0000 r = 2.0000 nh = 15.0000 fact = 8.0000 Value = 0.7320 elapsed = 9.54 Round = 33 numFeature = 10.0000 r = 3.0000 nh = 37.0000 fact = 9.0000 Value = 0.7420 elapsed = 8.19 Round = 34 numFeature = 6.0000 r = 1.0000 nh = 42.0000 fact = 3.0000 Value = 0.7630 elapsed = 12.34 Round = 35 numFeature = 7.0000 r = 2.0000 nh = 43.0000 fact = 8.0000 Value = 0.7570 elapsed = 20.47 Round = 36 numFeature = 7.0000 r = 8.0000 nh = 39.0000 fact = 2.0000 Value = 0.7670 elapsed = 11.51 Round = 37 numFeature = 5.0000 r = 9.0000 nh = 18.0000 fact = 3.0000 Value = 0.7540 elapsed = 32.71 Round = 38 numFeature = 7.0000 r = 7.0000 nh = 40.0000 fact = 6.0000 Value = 0.7540 elapsed = 28.33 Round = 39 numFeature = 7.0000 r = 9.0000 nh = 38.0000 fact = 5.0000 Value = 0.7550 elapsed = 22.87 Round = 40 numFeature = 12.0000 r = 6.0000 nh = 48.0000 fact = 3.0000 Value = 0.7580 Best Parameters Found: Round = 12 numFeature = 6.0000 r = 1.0000 nh = 40.0000 fact = 8.0000 Value = 0.7730 maxit = 100, control = c(100, 50, 8)) 最佳 10 OPT_Res %$% History %>% dp$arrange(desc(Value)) %>% head(10) %>% dp$select(-Round) -> best.init best.init numFeature r nh fact Value 1 6 1 40 8 0.773 2 7 1 41 7 0.773 3 7 3 41 3 0.773 4 7 8 39 2 0.767 5 6 1 42 3 0.763 6 8 4 45 2 0.762 7 9 6 47 7 0.762 8 11 7 38 6 0.760 9 13 5 6 1 0.760 10 6 4 20 6 0.759 值 - 平均 F1。性能还不错。 为了加快计算速度,我们需要重写软件包中的一些函数。首先是用 dim()[1]、dim()[2] 代替所有 ncol()、nrow(),因为这些函数很多。它们的执行速度要快几十倍。此外,由于只有矩阵操作,可能还需要使用 GPU(gpuR 软件包)。我自己做不了,能建议开发人员 吗? 祝你好运 Aleksei Kuznetsov 2018.06.05 12:11 #25 Vladimir Perervenko:在对 PartVI 论文中的神经网络组合进行优化时对其进行了检查。无论是 maxit 还是 control,都没有明显的执行时间。影响最大的是隐藏层的神经元数量。我是这样设置的最佳 10值 - 平均 F1。表现不俗。为了加快计算速度,我们需要重写软件包中的一些函数。首先是用 dim()[1], dim()[2] 代替所有 ncol(), nrow() 函数。它们的执行速度要快几十倍。另外,由于只有矩阵操作,可能需要使用 GPU(gpuR 软件包)。我自己做不了,能向开发人员提出建议 吗?祝你好运你只需优化几个参数,我优化了 20 个点,当已知点变成 20-40 个点时,只计算 GPfit 就需要几十分钟,在这种情况下你会看到加速。 神经元数量只影响 NS 本身的计算时间。 Vladimir Perervenko 2018.06.05 12:16 #26 elibrarius:只需优化几个参数,我优化了 20 个点,当已知点变成 20-40 个点时,仅计算 GPfit 就需要几十分钟,在这种条件下,你会看到加速度。而神经元数量只影响 NS 本身的计算时间。我想是的。 -whkh18- 2018.09.06 02:09 #27 具体怎么使用呢,怎么把我的交易系统也整理成神经网络 或者一个比较复杂的EA自动化交易 [删除] 2019.09.24 08:11 #28 MetaQuotes Software Corp.:新文章:深度神经网络(第五部分)。DNN 超参数的贝叶斯优化》已出版:作者:Vladimir Perervenko弗拉基米尔-佩列文科 你好,弗拉基米尔、我正在为安卓手机开发 MACD 衍生工具,需要帮助我编写一个关于属性参数填写表格的精确算法。谢谢、保罗 123 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
对于贝叶斯法,您不仅需要考虑传球次数,还需要考虑点数。你必须寻找更快的方案。这非常繁琐
为了加快速度,可以在调用 BayesianOptimisation 时添加以下参数
maxit = 1 #1 而不是 100 - 用于超平面预测的 GP_fit 的重复次数
我没有注意到 100 次重复比 1 次重复有任何改进,所以我现在使用 1。
Ie.
maxit=1 via ...将传递给GPfit:: GP_fit,优化将运行 1 次,而不是 100 次。
您也可以传递:
control = c(20*d, 10*d, 2*d);#default - control = c(200*d, 80*d, 2*d) - 从 200*d 中选择 80*d 最佳值并构建 2*d 簇 - 其中 d 是要优化的参数数。
此处对这些参数的描述https://github.com/cran/GPfit/blob/master/R/GP_fit.R
PS.你不切换到 TensorFlow 吗?它只是一个更高的级别。
虽然 Darch 的支持很差,但他们还是纠正和改进了一些东西,但在 1 月份,它因为没有修复错误(有一个错误是在训练模式下的验证评估)而被从 CRAN 发到了存档中。5 月,他们发布了第 13 版,但又退回到了第 12 版。现在,第 13 版又出现了--显然,它已经完成了。
为了加快速度,在调用贝叶斯优化时,可以添加参数
maxit = 1 #1 而不是 100 - 用于超平面预测的 GP_fit 的重复次数
maxit=1 via ...将传递给GPfit:: GP_fit,优化将运行 1 次,而不是 100 次。没有发现重复 100 次比重复 1 次有任何改进,所以我使用 1。
Ie.
您也可以传递:
control = c(20*d, 10*d, 2*d);#default - control = c(200*d, 80*d, 2*d) - 从 200*d 中选择 80*d 最佳,并建立 2*d 簇 - 其中 d 是要优化的参数数
是的,Darch 的训练率为 30%,测试率为 36%,似乎是有效的。
虽然 Darch 的支持很差,但他们还是纠正和改进了一些问题,但在 1 月份,它因未能修复错误(其中一个错误是在训练模式下的错误估计值与验证)而被从 CRAN 发到存档中。5 月,他们发布了第 13 版,但又退回到了第 12 版。现在第 13 版又出现了--显然他们已经完成了。
感谢您提供的信息。我将使用您提供的参数进行尝试。
我已经很久没有在 Github 上访问过他们了。我得写一份建议。darch 软件包提供了 GPU 的使用,但他们从 CRAN(3.4.4 版)上删除了用于 GPU 的软件包。而且 GPU 对速度和质量的影响也很有趣。
祝您好运
这里还有一个制动器
https://github.com/yanyachen/rBayesianOptimization/blob/master/R/Utility_Max.R
我还设置了maxit = 1,而不是 100。
通过 ...不能传递,你可以直接将 Utility_Max 函数加载到 R 中并使用修正后的版本。
这里还有一个弱智
https://github.com/yanyachen/rBayesianOptimization/blob/master/R/Utility_Max.R
我还设置了maxit = 1,而不是 100。
通过 ...不能传递,你可以直接将 Utility_Max 函数加载到 R 中,然后使用修正后的版本。
我在优化 PartVI 文章中的神经网络集合时检查了它。maxit 和 control 对计算时间都没有明显影响。影响最大的是隐藏层的神经元数量。我把它改成这样
OPT_Res <- BayesianOptimization(fitnes, bounds = bonds, init_grid_dt = NULL, init_points = 20, n_iter = 20, acq = "ucb", kappa = 2.576, eps = 0.0, verbose = TRUE, maxit = 100, control = c(100, 50, 8)) elapsed = 14.42 Round = 1 numFeature = 9.0000 r = 7.0000 nh = 36.0000 fact = 9.0000 Value = 0.7530 elapsed = 42.94 Round = 2 numFeature = 4.0000 r = 8.0000 nh = 46.0000 fact = 6.0000 Value = 0.7450 elapsed = 9.50 Round = 3 numFeature = 11.0000 r = 5.0000 nh = 19.0000 fact = 5.0000 Value = 0.7580 elapsed = 14.17 Round = 4 numFeature = 10.0000 r = 4.0000 nh = 35.0000 fact = 4.0000 Value = 0.7480 elapsed = 12.36 Round = 5 numFeature = 8.0000 r = 4.0000 nh = 23.0000 fact = 6.0000 Value = 0.7450 elapsed = 25.61 Round = 6 numFeature = 12.0000 r = 8.0000 nh = 44.0000 fact = 7.0000 Value = 0.7490 elapsed = 8.03 Round = 7 numFeature = 12.0000 r = 9.0000 nh = 9.0000 fact = 2.0000 Value = 0.7470 elapsed = 14.24 Round = 8 numFeature = 8.0000 r = 4.0000 nh = 45.0000 fact = 2.0000 Value = 0.7620 elapsed = 9.05 Round = 9 numFeature = 7.0000 r = 8.0000 nh = 20.0000 fact = 10.0000 Value = 0.7390 elapsed = 17.53 Round = 10 numFeature = 12.0000 r = 9.0000 nh = 20.0000 fact = 6.0000 Value = 0.7410 elapsed = 4.77 Round = 11 numFeature = 9.0000 r = 2.0000 nh = 7.0000 fact = 2.0000 Value = 0.7570 elapsed = 8.87 Round = 12 numFeature = 6.0000 r = 1.0000 nh = 40.0000 fact = 8.0000 Value = 0.7730 elapsed = 14.16 Round = 13 numFeature = 8.0000 r = 6.0000 nh = 41.0000 fact = 10.0000 Value = 0.7390 elapsed = 21.61 Round = 14 numFeature = 9.0000 r = 6.0000 nh = 47.0000 fact = 7.0000 Value = 0.7620 elapsed = 5.14 Round = 15 numFeature = 13.0000 r = 3.0000 nh = 3.0000 fact = 5.0000 Value = 0.7260 elapsed = 5.66 Round = 16 numFeature = 6.0000 r = 9.0000 nh = 1.0000 fact = 9.0000 Value = 0.7090 elapsed = 7.26 Round = 17 numFeature = 9.0000 r = 2.0000 nh = 25.0000 fact = 1.0000 Value = 0.7550 elapsed = 32.09 Round = 18 numFeature = 11.0000 r = 7.0000 nh = 38.0000 fact = 6.0000 Value = 0.7600 elapsed = 17.18 Round = 19 numFeature = 5.0000 r = 3.0000 nh = 46.0000 fact = 6.0000 Value = 0.7500 elapsed = 11.08 Round = 20 numFeature = 6.0000 r = 4.0000 nh = 20.0000 fact = 6.0000 Value = 0.7590 elapsed = 4.47 Round = 21 numFeature = 6.0000 r = 2.0000 nh = 4.0000 fact = 2.0000 Value = 0.7390 elapsed = 5.27 Round = 22 numFeature = 6.0000 r = 2.0000 nh = 21.0000 fact = 10.0000 Value = 0.7520 elapsed = 7.96 Round = 23 numFeature = 7.0000 r = 1.0000 nh = 41.0000 fact = 7.0000 Value = 0.7730 elapsed = 12.31 Round = 24 numFeature = 7.0000 r = 3.0000 nh = 41.0000 fact = 3.0000 Value = 0.7730 elapsed = 7.64 Round = 25 numFeature = 8.0000 r = 4.0000 nh = 16.0000 fact = 7.0000 Value = 0.7420 elapsed = 6.24 Round = 26 numFeature = 13.0000 r = 5.0000 nh = 6.0000 fact = 1.0000 Value = 0.7600 elapsed = 8.41 Round = 27 numFeature = 11.0000 r = 8.0000 nh = 8.0000 fact = 7.0000 Value = 0.7420 elapsed = 8.48 Round = 28 numFeature = 6.0000 r = 7.0000 nh = 15.0000 fact = 2.0000 Value = 0.7580 elapsed = 10.11 Round = 29 numFeature = 12.0000 r = 6.0000 nh = 17.0000 fact = 4.0000 Value = 0.7310 elapsed = 6.03 Round = 30 numFeature = 8.0000 r = 3.0000 nh = 12.0000 fact = 1.0000 Value = 0.7540 elapsed = 8.58 Round = 31 numFeature = 13.0000 r = 5.0000 nh = 18.0000 fact = 2.0000 Value = 0.7300 elapsed = 6.78 Round = 32 numFeature = 13.0000 r = 2.0000 nh = 15.0000 fact = 8.0000 Value = 0.7320 elapsed = 9.54 Round = 33 numFeature = 10.0000 r = 3.0000 nh = 37.0000 fact = 9.0000 Value = 0.7420 elapsed = 8.19 Round = 34 numFeature = 6.0000 r = 1.0000 nh = 42.0000 fact = 3.0000 Value = 0.7630 elapsed = 12.34 Round = 35 numFeature = 7.0000 r = 2.0000 nh = 43.0000 fact = 8.0000 Value = 0.7570 elapsed = 20.47 Round = 36 numFeature = 7.0000 r = 8.0000 nh = 39.0000 fact = 2.0000 Value = 0.7670 elapsed = 11.51 Round = 37 numFeature = 5.0000 r = 9.0000 nh = 18.0000 fact = 3.0000 Value = 0.7540 elapsed = 32.71 Round = 38 numFeature = 7.0000 r = 7.0000 nh = 40.0000 fact = 6.0000 Value = 0.7540 elapsed = 28.33 Round = 39 numFeature = 7.0000 r = 9.0000 nh = 38.0000 fact = 5.0000 Value = 0.7550 elapsed = 22.87 Round = 40 numFeature = 12.0000 r = 6.0000 nh = 48.0000 fact = 3.0000 Value = 0.7580 Best Parameters Found: Round = 12 numFeature = 6.0000 r = 1.0000 nh = 40.0000 fact = 8.0000 Value = 0.7730 maxit = 100, control = c(100, 50, 8))最佳 10
值 - 平均 F1。性能还不错。
为了加快计算速度,我们需要重写软件包中的一些函数。首先是用 dim()[1]、dim()[2] 代替所有 ncol()、nrow(),因为这些函数很多。它们的执行速度要快几十倍。此外,由于只有矩阵操作,可能还需要使用 GPU(gpuR 软件包)。我自己做不了,能建议开发人员 吗?
祝你好运
在对 PartVI 论文中的神经网络组合进行优化时对其进行了检查。无论是 maxit 还是 control,都没有明显的执行时间。影响最大的是隐藏层的神经元数量。我是这样设置的
最佳 10
值 - 平均 F1。表现不俗。
为了加快计算速度,我们需要重写软件包中的一些函数。首先是用 dim()[1], dim()[2] 代替所有 ncol(), nrow() 函数。它们的执行速度要快几十倍。另外,由于只有矩阵操作,可能需要使用 GPU(gpuR 软件包)。我自己做不了,能向开发人员提出建议 吗?
祝你好运
你只需优化几个参数,我优化了 20 个点,当已知点变成 20-40 个点时,只计算 GPfit 就需要几十分钟,在这种情况下你会看到加速。
神经元数量只影响 NS 本身的计算时间。
只需优化几个参数,我优化了 20 个点,当已知点变成 20-40 个点时,仅计算 GPfit 就需要几十分钟,在这种条件下,你会看到加速度。
而神经元数量只影响 NS 本身的计算时间。
我想是的。
新文章:深度神经网络(第五部分)。DNN 超参数的贝叶斯优化》已出版:
作者:Vladimir Perervenko弗拉基米尔-佩列文科