create_module_spec - tfhub - PullRequest
       7

create_module_spec - tfhub

0 голосов
/ 05 ноября 2018

Я пытаюсь создать простое распознавание звука , чтобы определить ключевые слова. Так как мой набор данных мал, я выполняю трансферное обучение. Вот так выглядит график . По этой ссылке я создал модуль. А вот и код

import tensorflow_hub as hub
import tensorflow as tf

# pylint: disable=unused-import
from tensorflow.contrib.framework.python.ops import audio_ops as contrib_audio
# pylint: enable=unused-import

def module_fn():
    input_name = "Reshape:0"
    output_name = "Reshape_2:0"
    graph_def = tf.GraphDef()
    with open('my_frozen_graph.pb', "rb") as f:
        graph_def.ParseFromString(f.read())

    input_ten=tf.placeholder(tf.float32, shape = (1, 98, 40))
    output_ten,=tf.import_graph_def(graph_def, input_map = {input_name: input_ten}, return_elements = [output_name])
    hub.add_signature(inputs = input_ten, outputs = output_ten)


spec = hub.create_module_spec(module_fn)
module = hub.Module(spec)
with tf.Session() as session:
    module.export('test_module',session)

Хотя он выполнил и создал папку 'test_module'.

test_module
    |--> assets
    |--> variables
    |--> saved_model.pb
    |--> tfhub_module.pb

Как только у меня есть несколько вопросов

  1. Папка переменных пуста. Не уверен, что так и должно быть?

  2. input_ten=tf.placeholder(tf.float32, shape = (1, 98, 40)) Это правильно ? 98X48 - размер изображения, и первый кортеж обычно представляет размер пакета. Должно ли оно быть «1» или для неизвестного размера партии «Нет»?

  3. После загрузки модуля в скрипт

    высота, ширина = hub.get_expected_image_size ('test_module')

    выдает ошибку.

1 Ответ

0 голосов
/ 09 ноября 2018

Позвольте мне постараться ответить на ваши вопросы по очереди.

  1. Если график def, из которого вы строите свою модель, действительно заморожен (то есть все переменные были заменены константами), то нет переменных, требующих записи в контрольную точку, которая обычно находится в переменных / переменных *. Так что это выглядит объяснимо для меня. - Тем не менее, модули Hub дадут вам возможность избежать зависания определений графа: вызовите исходный код построения графа в module_fn и восстановите предварительно обученные переменные в сеансе перед вызовом Module.export ().

  2. Для вашего типа модуля вы должны установить правила. ;-) Модули-концентраторы могут работать со всеми видами входных и выходных фигур, включая частично или полностью неизвестные формы. Заполнитель ввода, подобный приведенному выше, должен иметь форму, совместимую с графиком, к которому он подключен. В этом графике, в свою очередь, будут использоваться фигуры, которые работают с извилинами, которые он делает. Вообще говоря, часто полезно использовать начальный размер для размера партии и оставить его неуказанным (None).

  3. hub.get_expected_image_size () предназначен для использования с входами изображений. Я бы избежал этого здесь.

...