设置张量流量运算的权重和偏置张量

我已经在火炬中获得了训练有素的神经网络,并且我需要以张量流形式重建它。 我相信我已经在tensorflow中正确定义了网络的体系结构,但我无法转移权重和偏置张量。 使用第三方软件包,我将火炬网络中的所有重量和偏差张量转换为numpy数组,然后将它们写入磁盘。 我可以将它们加载回我的python程序中,但我无法找到一种方法将它们分配到我的tensorflow网络中的相应图层。

例如,我有一个在tensorflow中定义的卷积层

kernel_1 = tf.Variable(tf.truncated_normal([11,11,3,64], stddev=0.1))
conv_kernel_1 = tf.nn.conv2d(input, kernel_1, [1,4,4,1], padding='SAME')
biases_1 = tf.Variable(tf.zeros[64])
bias_layer_1 = tf.nn_add(conv_kernel_1, biases_1)

根据tensorflow文档,tf.nn.conv2d操作使用kernel_1变量中定义的形状来构造权重张量。 但是,我不知道如何访问该重量张量以将其设置为我从文件加载的重量数组。

是否可以明确设定权重张量? 如果是这样,怎么样?

(同样的问题适用于偏倚张量。)


如果你在NumPy数组中有权重和偏差,应该很容易将它们连接到你的TensorFlow网络中:

weights_1_array = ...  # ndarray of weights for layer 1
biases_1_array = ...  # ndarray of biases for layer 1

conv_kernel_1 = tf.nn.conv2d(input, weights_1_array, [1, 4, 4, 1], padding='SAME')
bias_layer_1 = tf.nn.bias_add(conv_kernel_1, biases_1_array)

请注意,您必须确保weights_1_arraybiases_1_array的数据格式正确。 有关所需过滤器形状的说明,请参阅tf.nn.conv2d()的文档。

链接地址: http://www.djcxy.com/p/32097.html

上一篇: Set weight and bias tensors of tensorflow conv2d operation

下一篇: What does tf.nn.conv2d do in tensorflow?