keras - 为什么在SpatialDropout1D和K.dropout上调用K.eval(),结果不一样
问题描述
我区分了关于 Droupout 和 SpatialDropout1D 的 keras.layer,但是,我调用 K.eval() 并发现这两个结果是不同的。
它在 tensorflow1.12.1 中运行
x = np.arange(2*4*3).reshape((2, 4, 3))
inputs = K.variable(x) # generate a variable
dropout_1 = K.eval(SpatialDropout1D(0.5)(inputs))
print(dropout_1)
noise_shape=(2, 4, 1)
dropout_2 = K.eval(K.dropout(inputs, 0.5, noise_shape))
print(dropout_2)
dropout_1:
[[[ 0. 1. 2.]
[ 3. 4. 5.]
[ 6. 7. 8.]
[ 9. 10. 11.]]
[[12. 13. 14.]
[15. 16. 17.]
[18. 19. 20.]
[21. 22. 23.]]]
dropout_2:
[[[ 0. 2. 4.]
[ 6. 8. 10.]
[ 0. 0. 0.]
[ 0. 0. 0.]]
[[24. 26. 28.]
[30. 32. 34.]
[36. 38. 40.]
[ 0. 0. 0.]]]
解决方案
推荐阅读
- python-3.x - 如何使用 Python 修改 ELF 文件
- php - 用于将 pdf 文件发送到服务器的 PHP 脚本
- r - 逻辑表的功能
- python - 无法从串口读取数据
- javascript - 具有动态对象属性的 ES6 解构
- java - 运行包含在 .jar 中的 python 脚本文件
- angular - 使用 Angular HttpClient 向 neo4j 发送请求时出错
- android - 如何通过单击另一个列表的项目来滚动粘滞列表
- java - 使用 SQL 查询在 CrudRepository 中显示 COUNT(variable) 时出错
- sql - 更新table1的列并在table2上获取