1 回答
TA贡献1876条经验 获得超7个赞
关于TensorFlow中的模型构建存在强烈的误解。建议您在官方指南中阅读有关TensorFlow的计算图和该API的其他低级详细信息的更多信息。
使用TensorFlow构建的操作未绑定到Python变量(假设对于此答案,我们不在Eager模式下)。当调用中的层构造函数之一tf.layers(或中的其他基本函数,例如中的tf.nn)时,这会将新操作添加到当前活动的图形中,并返回Tensor与该层的输出相对应的图。删除或更改用于保留这些张量的Python变量的内容时,这些操作不会消失。
该函数的dnn作用是迭代创建一系列密集层。在每个步骤中,该变量inputs都会更改为指向最新创建的图层的输出,从而可以将其“馈入”到下一个图层。是否使用与原始输入相同的变量或为此使用新的变量是一个意见问题(我经常net自己使用一个新变量)。默认情况下,这将导致5个完全连接的层的序列。在所有这一切中,只构建了图。此处实际没有应用网络训练或权重初始化过程。
这也可以通过视觉验证。以下代码会将图形的签名写入TensorFlow摘要文件:
he_init = tf.variance_scaling_initializer()
def dnn(inputs, n_hidden_layers=5, n_neurons=100, name=None,
activation=tf.nn.elu, initializer=he_init):
with tf.variable_scope(name, "dnn"):
for layer in range(n_hidden_layers):
inputs = tf.layers.dense(inputs, n_neurons, activation=activation,
kernel_initializer=initializer,
name="hidden%d" % (layer + 1))
return inputs
x = tf.placeholder(tf.float32, [32, 128])
y = dnn(x)
writer = tf.summary.FileWriter(logdir='mydnn', graph=tf.get_default_graph())
writer.flush()
通过使用TensorBoard打开相同的日志目录,我们得到下图:
添加回答
举报