Ich fange gerade an, TensorFlow zu lernen, und ich habe einige Probleme damit. Ich lese das Papier - DEEP COMPRESSION: TIEFE NEURAL NETZWERKE MIT PRUNING, TRAINED QUANTIZATION UND HUFFMAN CODING vor ein paar Tagen. Beim Beschneiden beginnen die Autoren mit dem Erlernen der Konnektivität über normales Netzwerktraining. Als nächstes werden die Verbindungen mit geringem Gewicht abgeschnitten: Alle Verbindungen mit Gewichten unterhalb eines Schwellenwerts werden aus dem Netzwerk entfernt. Schließlich trainieren sie das Netzwerk neu, um die endgültigen Gewichte für die verbleibenden spärlichen Verbindungen zu lernen.Wie ändere ich den Wert eines Tensors beim Entwurf des Netzwerks in TensorFlow
Ich möchte alle Gewichte jeder Schicht erhalten und an die Schwelle einer nach dem anderen zu vergleichen, und stellen Sie die kleinen Gewichte zero.Here mein Code und es gibt eine Ausnahme Typeerror ("eine tf.Tensor
als Python bool
nicht ist dürfen."). Wie kann ich den Wert des Gewichtstensors erhalten, wenn ich das Netzwerk entwerfe? Hat jemand diesen Code noch implementiert oder eine andere vorgeschlagene Methode? Danke im Voraus!
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))
ich sehr dankbar bin für Ihre reply.It sehr hilfreich ist. Aber die letzte Anweisung scheint nicht ausgeführt zu werden. Ich weiß nicht, wie sie zu beheben it.Here ist mein Code: 'compare_matrix = tf.constant (RATIO, Form = [CONV1_SIZE, CONV1_SIZE, NUM_CHANNELS, CONV1_DEEP]) compare_bool = tf.less (conv1_weights, compare_matrix) conv1_weights.assign (tf.where (compare_bool, tf.zeros_like (conv1_weights), conv1_weights)) ' –
Die Anweisung 'session.run' ist in einer anderen Datei definiert, gibt es ein Problem? –
Ich habe dieses Problem gelöst. Vielen Dank! –