我刚开始学习TensorFlow,我遇到了一些问题。我读了几天前的论文 - DEEP COMPRESSION:压缩深度神经网络与修剪,训练量化和HUFFMAN编码。在修剪部分,作者首先通过正常的网络培训学习连接。接下来,他们修剪小权重连接:从网络中删除权重低于阈值的所有连接。最后,他们重新训练网络以了解剩余稀疏连接的最终权重。
我想得到每一层的所有权重并逐个比较阈值并将小权重设置为零。这是我的代码,并且存在异常TypeError(“使用tf.Tensor
作为Python不允许bool
。“)。在设计网络时如何获得权重张量的值?有没有人实现过此代码或建议的任何其他方法?提前谢谢!
with tf.variable_scope('layer1-conv1'):
conv1_weights = tf.get_variable(
"weight", [CONV1_SIZE, CONV1_SIZE, NUM_CHANNELS, CONV1_DEEP],
initializer = tf.truncated_normal_initializer(stddev=0.1)
)
shapeDim=CONV1_SIZE*CONV1_SIZE*NUM_CHANNELS*CONV1_DEEP
reshape_w=tf.reshape(conv1_weights,[-1])
i=0
if step != 0 and step != 1:
while i < shapeDim:
if reshape_w[i] < RATIO:
reshape_w[i] = 0
conv1_weights=tf.reshape(reshape_w, [CONV1_SIZE, CONV1_SIZE, NUM_CHANNELS, CONV1_DEEP])
conv1_biases = tf.get_variable("bias", [CONV1_DEEP], initializer=tf.constant_initializer(0.0))
conv1 = tf.nn.conv2d(input_tensor, conv1_weights, strides=[1, 1, 1, 1], padding='SAME')
relu1 = tf.nn.relu(tf.nn.bias_add(conv1, conv1_biases))
答案 0 :(得分:0)
您可以使用tf.less
一次比较整个矩阵,然后根据布尔矩阵进行分配,而不是逐个元素地进行。
以下答案可以让您更好地了解如何执行此操作: