最近TensorFlow(TF)の使用を開始しました。私はいくつかの助けが必要な問題に遭遇しました。基本的には、事前に訓練されたモデルを復元しました。その精度を再テストする前に、レイヤの1つのウェイトとバイアスを変更する必要があります。今、私の問題は次のとおりです: TFのassign
メソッドを使用して重みと偏りを変更するにはどうすればよいですか? TFで復元されたモデルの重みを修正することも可能ですか?ここでTensorFlowで復元されたCNNモデルの重みと偏りを修正する
は私のコードです:
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data # Imports the MINST dataset
# Data Set:
# ---------
mnist = input_data.read_data_sets("/home/frr/MNIST_data", one_hot=True)# An object where data is stored
ImVecDim = 784# The number of elements in a an image vector (flattening a 28x28 2D image)
NumOfClasses = 10
g = tf.get_default_graph()
with tf.Session() as sess:
LoadMod = tf.train.import_meta_graph('simple_mnist.ckpt.meta') # This object loads the model
LoadMod.restore(sess, tf.train.latest_checkpoint('./'))# Loading weights and biases and other stuff to the model
# (Here I'd like to modify the weights and biases of layer 1, set them to one for example, before I go ahead and test the accuracy) #
# Testing the acuracy of the model:
X = g.get_tensor_by_name('ImageIn:0')
Y = g.get_tensor_by_name('LabelIn:0')
KP = g.get_tensor_by_name('KeepProb:0')
Accuracy = g.get_tensor_by_name('NetAccuracy:0')
feed_dict = { X: mnist.test.images[:256], Y: mnist.test.labels[:256], KP: 1.0 }
print('Model Accuracy = ')
print(sess.run(Accuracy, feed_dict))
ありがとうございます。私はちょうど1つのフォローアップの質問があります。私はこれらの変数の名前を知っています。重みはwc1、バイアスはbc1ですが、どのようにアクセスできますか? wc1 = g.get_tensor_by_name( 'wc1:0')は、変数ではなくテンソルを返します。したがって、assignメソッドは適用できません(例:sess.run(wc1.assign(..))! – Muhammad
@Muhammadは変数名で 'tf.get_variable'を呼び出し、可変スコープで' reuse = True'を設定します。 –