Tensorflow版本= 1.8.0
我正在尝试使用Tensorflow中的中间检查点文件之一还原我的模型。默认情况下,Tensorflow将采用最后保存的检查点文件。 例如,该文件夹包含以下文件:
检查点 model-56000.index model-56000.data-00000-of-00001 model-56000.meta model-57000.index model-57000.data-00000-of-00001 model-57000.meta
默认情况下,Tensorflow会加载最后一个57K检查点,但是由于某些原因,我想加载56K检查点的权重。 以下是我用于恢复模型的代码:
def load_G(self, checkpoint_dir):
print(" [*] Reading checkpoints of G...")
ckpt = tf.train.get_checkpoint_state(checkpoint_dir)
if ckpt and ckpt.model_checkpoint_path:
ckpt_name = os.path.basename(ckpt.model_checkpoint_path)
self.saver_gen.restore(self.sess, os.path.join(checkpoint_dir, ckpt_name))
return True
else:
return False
从Tensorflow的页面上,我读到tf.train.get_checkpoint_state()可以指定tf.train.get_checkpoint_state(checkpoint_dir,latest_filename = None)。但是我不知道应该为last_filename写什么。我试着写了latest_filename = model-56000 但这并没有加载模型。
我还尝试编写了latest_filename = model-56000.meta。那也不起作用。
那么,在Tensorflow中加载一些中间检查点文件的正确方法是什么。
答案 0 :(得分:0)
ckpt文件名将为import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
form: FormGroup;
ngOnInit() {
this.form = new FormGroup({
'searchBox': new FormControl(null, Validators.required)
});
}
addText(value) {
this.form.setValue({
'searchBox': value
});
}
}
model-56000.ckpt
指向ckpt的元信息
model-56000.meta
是ckpt,数据文件或元文件的文件名
答案 1 :(得分:0)
好的,因此可以修改 checkpoint protobuf文件,并将该文件的第一行从 model_checkpoint_path:“ model-57000” 更改为 model_checkpoint_path:“ model-56000” 广告现在会加载56K检查点。 寻找一些更好的方法来做到这一点。