Depois de ler os documentos , salvei um modelo no TensorFlow
, aqui está meu código de demonstração:
# Create some variables.
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
...
# Add an op to initialize the variables.
init_op = tf.global_variables_initializer()
# Add ops to save and restore all the variables.
saver = tf.train.Saver()
# Later, launch the model, initialize the variables, do some work, save the
# variables to disk.
with tf.Session() as sess:
sess.run(init_op)
# Do some work with the model.
..
# Save the variables to disk.
save_path = saver.save(sess, "/tmp/model.ckpt")
print("Model saved in file: %s" % save_path)
mas depois disso, descobri que há 3 arquivos
model.ckpt.data-00000-of-00001
model.ckpt.index
model.ckpt.meta
E não posso restaurar o modelo restaurando o model.ckpt
arquivo, uma vez que tal arquivo não existe. Aqui está meu código
with tf.Session() as sess:
# Restore variables from disk.
saver.restore(sess, "/tmp/model.ckpt")
Então, por que existem 3 arquivos?
tensorflow
Indo à minha maneira
fonte
fonte
Respostas:
Experimente isto:
O método de salvamento do TensorFlow salva três tipos de arquivos porque armazena a estrutura do gráfico separadamente dos valores das variáveis . O
.meta
arquivo descreve a estrutura do gráfico salva, então você precisa importá-lo antes de restaurar o ponto de verificação (caso contrário, ele não sabe a quais variáveis os valores do ponto de verificação salvos correspondem).Como alternativa, você pode fazer o seguinte:
Mesmo que não haja nenhum arquivo nomeado
model.ckpt
, você ainda se refere ao ponto de verificação salvo com esse nome ao restaurá-lo. Dosaver.py
código-fonte :fonte
00000
e os00001
números significam? emvariables.data-?????-of-?????
arquivometa arquivo : descreve a estrutura gráfico guardado, inclui GraphDef, SaverDef, e assim por diante; em seguida
tf.train.import_meta_graph('/tmp/model.ckpt.meta')
, aplique , irá restaurarSaver
eGraph
.arquivo de índice : é uma tabela imutável string-string (tensorflow :: table :: Table). Cada chave é o nome de um tensor e seu valor é um BundleEntryProto serializado. Cada BundleEntryProto descreve os metadados de um tensor: qual dos arquivos de "dados" contém o conteúdo de um tensor, o deslocamento para esse arquivo, soma de verificação, alguns dados auxiliares, etc.
arquivo de dados : é a coleção TensorBundle, salve os valores de todas as variáveis.
fonte
Estou restaurando embeddings de palavras treinados de Word2Vec treinadas do tutorial Word2Vec.
Caso você tenha criado vários pontos de verificação:
por exemplo, os arquivos criados se parecem com este
tente isso
ao chamar restore_session ():
fonte
Se você treinou um CNN com abandono, por exemplo, você poderia fazer isto:
fonte