Tensorflow acemi burada. Bir RNN kurmaya çalışıyorum. Giriş verilerim, her zaman adımında bir parçacık kümesinin (x, y) konumlarını temsil eden instance_size
boyutundaki bir dizi vektör örneğidir. (Örnekler zaten anlamsal içeriğe sahip olduklarından, bir gömülme gerektirmezler.) Amaç, bir sonraki adımda parçacıkların konumlarını tahmin etmeyi öğrenmektir.Gerçekte kayıtlı bir TensorFlow modelini nasıl yürütürüm?
RNN tutorial ardından ve biraz dahil RYSA kodunu adapte, ben az çok böyle (bazı bilgileri vermemek) bir model oluşturmak:
Sonrainputs, self._input_data = tf.placeholder(tf.float32, [batch_size, num_steps, instance_size])
self._targets = tf.placeholder(tf.float32, [batch_size, num_steps, instance_size])
with tf.variable_scope("lstm_cell", reuse=True):
lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_size, forget_bias=0.0)
if is_training and config.keep_prob < 1:
lstm_cell = tf.nn.rnn_cell.DropoutWrapper(
lstm_cell, output_keep_prob=config.keep_prob)
cell = tf.nn.rnn_cell.MultiRNNCell([lstm_cell] * config.num_layers)
self._initial_state = cell.zero_state(batch_size, tf.float32)
from tensorflow.models.rnn import rnn
inputs = [tf.squeeze(input_, [1])
for input_ in tf.split(1, num_steps, inputs)]
outputs, state = rnn.rnn(cell, inputs, initial_state=self._initial_state)
output = tf.reshape(tf.concat(1, outputs), [-1, hidden_size])
softmax_w = tf.get_variable("softmax_w", [hidden_size, instance_size])
softmax_b = tf.get_variable("softmax_b", [instance_size])
logits = tf.matmul(output, softmax_w) + softmax_b
loss = position_squared_error_loss(
tf.reshape(logits, [-1]),
tf.reshape(self._targets, [-1]),
)
self._cost = cost = tf.reduce_sum(loss)/batch_size
self._final_state = state
Veri onu eğitmek için üzerinde saver = tf.train.Saver()
, yineleme oluşturmak Verilen run_epoch()
yöntemini kullanarak ve parametreleri saver.save()
ile yazın. Çok uzak çok iyi.
Ancak, 'u eğitimli modelde nasıl kullanırım? Eğitici bu noktada durur. the docs on tf.train.Saver.restore()
'dan, değişkenleri tekrar okumak için değişkenleri kaydettiğimde veya belirli değişkenleri seçerek geri yüklediğimde tam olarak aynı grafiği ayarlamam gerekiyor. Her iki durumda da bu, yeni modelimin batch_size x num_steps x instance_size
boyutundaki girişleri gerektireceği anlamına gelir. Bununla birlikte, şimdi tek istediğim model üzerinden num_steps x instance_size
boyutunda tek bir ileri geçiş yapmak ve tek bir instance_size
-boyutlandırılmış sonucu okumak (bir sonraki zaman adımı için tahmin); Başka bir deyişle, üzerinde çalıştığımdan farklı bir tensörü kabul eden bir model oluşturmak istiyorum. Varolan modeli benim verdiğim veriyi batch_size
kez geçirerek harcayabilirim ama bu en iyi uygulama gibi görünmüyor. Bunu yapmanın en iyi yolu nedir?
Grafiğinizdeki girdileri değişken olarak kaydediyor musunuz? Değişken parti büyüklüğü ile ilgili bir problem olurdu. Normalde sadece parametre değişkenlerini kaydedersiniz ve sonuçta oluşan grafik modifikasyon olmaksızın parti değişken seri boyutunda çalışabilir. Bu soru için –
toplam +1 !!! İşte şu an bu noktada olduğum yer: http://stackoverflow.com/questions/38966346/tensorflow-tf-nn-rnn-function-how-to-use-the-results-of-your-training-to -do/38972510 # 38972510 – rikkitikkitumbo