1
私はテンソルフロー内に、重みとドキュメントの埋め込みを持つクラスを持っています。トレーニングと検証の両方に使用します。私の質問は、テンソルフローセッションでは、訓練からの重みだけを再利用し、埋め込みではなく、有効なセットに対する新しい文書埋め込みを学習させることが可能であるということです。コードスニペット。テンソルフローでいくつかの変数のみを再利用するには?
Class NewModel(Object):
def __init__(self, is_training, vocabuary_size, embedding_size):
self.X = tf.placeholder("float", [None, 300])
self.doc_int = tf.placeholder(tf.int32, shape=[None])
self.embeddings=tf.get_variable("embedding", [vocabulary_size ,embedding_size],initializer=tf.random_uniform_initializer(-0.1, 0.1))
self.embedval = tf.nn.embedding_lookup(self.embeddings ,self.doc_int)
self.weights = tf.get_variable("weights",weight_shapeinitializer=tf.random_normal_initializer())
biases = tf.get_variable("biases", bias_shape,initializer=tf.constant_initializer(0.0))
# Some neural network with optimiser and loss that will train weight and embeddings..
with tf.Graph().as_default(), tf.Session() as sess:
initializer = tf.random_uniform_initializer()
with tf.variable_scope("foo", reuse=None, initializer=initializer):
train = NewModel(is_training=True, vocabulary_size=4000,\
embedding_size =50)
with tf.variable_scope("foo", reuse=True, initializer=initializer):
valid = NewModel(is_training=False, vocabulary_size= 1000, embedding_size = 50)
# Here is where I am confused. I want to use trained variable of weight but not embeddings and
want new embeddings to be trained for valid set.
tf.initialize_all_variables().run()
# will call some function to run epochs and stuff
さまざまなスコープ名を使用しても問題が解決しない場合がありますが、それでも解決するにはアドバイスが必要です。あるいは、再利用する変数のどこかに言及することは可能ですか?