Я пытаюсь настроить BERT для NER. Я загрузил контрольную точку отсюда (https://storage.googleapis.com/bert_models/2018_10_18/uncased_L-12_H-768_A-12.zip)
Я загрузил сеанс и график, используя этот код:
model = "./cased_L-12_H-768_A-12/bert_model"
new_saver = tf.train.import_meta_graph(model + ".ckpt.meta")
new_saver.restore(sess, model + '.ckpt')
graph = tf.get_default_graph()
Теперь я пытаюсь получить заполнители ввода из этого графика, чтобы создать свой собственный feed_dict и определить свою собственную функцию потерь. Я исследую график, используя следующий код:
op = sess.graph.get_operations()
[m.values() for m in op]
и единственные заполнители, которые я нахожу, перечислены ниже:
[(<tf.Tensor 'Placeholder:0' shape=(1, 128) dtype=int32>,),
(<tf.Tensor 'Placeholder_1:0' shape=(1, 128) dtype=int32>,),
(<tf.Tensor 'Placeholder_2:0' shape=(1, 128) dtype=int32>,),
Эти заполнители кажутся мне некорректными по следующим причинам:
Я ожидал, что они будут иметь размер (None, 512), поскольку эта модель BERT принимает длину последовательности максимум 512, а размер batch_size не должен быть заранее определен. Основываясь на этом размере, который я вижу здесь, эта модель BERT принимает 1 последовательность за раз с максимальным размером 128. Почему это?
Я считаю, что мы должны кормить набор последовательностей, их длину и соответствующие метки. Какой из этих трех заполнителей?
hub.Module
и установитеtrainable=True
. - person gobrewers14   schedule 01.08.2019