Ввести Тензор в тензорный граф - PullRequest
0 голосов
/ 17 октября 2018

Я изучаю простое распознавание звука и сейчас редактирую label_wav.py .В оригинальном случае мы вводим волновой файл, и график предсказывает метку (между ними он вычисляет спектр, mfcc внутри графика).Теперь я ищу ввод mfcc напрямую, а не ввод волнового файла. Запустите график , введя тензор mfcc.

# mfccs:  Tensor("strided_slice:0", shape=(1, 98, 40), dtype=float32)
mfcc_input_layer_name = 'Reshape:0'
with tf.Session() as sess:
    predictions, = sess.run(softmax_tensor, {mfcc_input_layer_name: mfcc})

После небольшого поиска, я нашел некоторое обсуждение в git и создал session_handle .

# mfccs:  Tensor("strided_slice:0", shape=(1, 98, 40), dtype=float32)
mfcc_input_layer_name = 'Reshape:0'
with tf.Session() as sess:
      h = tf.get_session_handle(mfccs)
      h = sess.run(h)
      predictions, = sess.run(softmax_tensor, {mfcc_input_layer_name: h})

Код работает, как и ожидалось , но мне интересно, может ли быть лучший способ справиться с тензором, а не создавать дескриптор и затем передавать его?

1 Ответ

0 голосов
/ 17 октября 2018

Полагаю, вы хотите заменить промежуточный тензор значением на feed_dict.Если у вас есть объект Tensor, вы можете заменить его на feed_dict следующим образом

a = tf.constant(3, name="a")
b = tf.constant(4, name="b")
c = tf.add(a, b, name="c")
d = c * 3

with tf.Session() as sess:
    print(sess.run(d))    
    print(sess.run(d, feed_dict={c: 2}))

Даже если у вас нет объекта Tensor, вы можете получить его с помощью get_tensor_by_name

a = tf.constant(3, name="a")
b = tf.constant(4, name="b")
c = tf.add(a, b, name="c")
d = c * 3

with tf.Session() as sess:
    c_tensor = tf.get_default_graph().get_tensor_by_name("c:0")
    print(sess.run(d, feed_dict={c_tensor: 2}))
...