使用 tf.nn.*
比 tf.layers.*
有什么优势吗?
例如,文档中的大多数示例都使用 tf.nn.conv2d
,但不清楚为什么要这样做。
原文由 jul 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 tf.nn.*
比 tf.layers.*
有什么优势吗?
例如,文档中的大多数示例都使用 tf.nn.conv2d
,但不清楚为什么要这样做。
原文由 jul 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如 GBY 提到的,它们使用相同的实现。
参数略有不同。
对于 tf.nn.conv2d:
filter: A Tensor. Must have the same type as input. A 4-D tensor of shape [filter_height, filter_width, in_channels, out_channels]
对于 tf.layers.conv2d:
filters: Integer, the dimensionality of the output space (i.e. the number of filters in the convolution).
我会在加载预训练模型时使用 tf.nn.conv2d(示例代码: https ://github.com/ry/tensorflow-vgg16),而 tf.layers.conv2d 用于从头开始训练的模型。
原文由 Mircea 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答846 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
对于卷积,它们是相同的。更准确地说,
tf.layers.conv2d
(实际上_Conv
)使用tf.nn.convolution
作为后端。您可以遵循以下调用链:tf.layers.conv2d>Conv2D>Conv2D.apply()>_Conv>_Conv.apply()>_Layer.apply()>_Layer.__call__()>_Conv.call()>nn.convolution()...