Mi è stata fornita una rete neurale addestrata nella torcia e ho bisogno di ricostruirla esattamente in tensorflow. Credo di aver correttamente definito l'architettura della rete in tensorflow ma sto riscontrando problemi nel trasferire il peso e i tensori di polarizzazione. Usando un pacchetto di terze parti, ho convertito tutti i pesi e i tensori di polarizzazione dalla rete della torcia in array numpy, quindi li ho scritti su disco. Posso caricarli di nuovo nel mio programma python ma non riesco a trovare un modo per assegnarli ai livelli corrispondenti nella mia rete tensorflow.Tensori di peso e di polarizzazione impostati per il funzionamento con tens2dflusso
Ad esempio, ho uno strato convoluzione definita come 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)
Secondo la documentazione tensorflow, l'operazione tf.nn.conv2d utilizza la forma definita nella variabile kernel_1 per costruire il tensore peso. Tuttavia, non riesco a capire come accedere a quel tensore di peso per impostarlo sull'array di pesi che ho caricato dal file.
È possibile impostare in modo esplicito il tensore del peso? E se sì, come?
(La stessa domanda vale per polarizzare tensore.)
Ho provato questo approccio e mi dà un errore ValueError: Shape (64, 363) deve avere rank 4. La mia comprensione è che il parametro filter definisce come viene costruito il tensore del peso – bdawson1
Oppure devo rimodellare il caricato tensore del peso? Conserverebbe i valori durante l'esecuzione? – bdawson1
Sì, potrebbe essere necessario rimodellare il tensore del peso. L'operazione 'tf.nn.conv2d()' richiede che sia 4-D, con le dimensioni '[filter_height, filter_width, in_channels, out_channels]'. – mrry