TensorFlow训练Music_RNN_RBM生成三类ckpt文件,调用生成脚本报错求助
解决Music_RNN_RBM生成脚本的AttributeError问题
看起来你遇到的问题是因为对TensorFlow检查点文件的理解有点偏差,我来帮你理清一下:
问题根源
TensorFlow保存的检查点(ckpt)其实是由.data、.index、.meta三个文件组成的集合,你不需要单独传入其中某一个文件。当你传入单个文件路径时,脚本里的tf.train.get_checkpoint_state()函数无法识别有效的检查点结构,返回了None,所以才会出现'NoneType' object has no attribute 'model_checkpoint_path'的错误。
具体解决方案
你有两种正确的方式运行生成脚本:
直接传入检查点的前缀(不带后缀)
只需要传入去掉.data/.index/.meta后缀的文件名即可,TensorFlow会自动关联对应的三个文件。比如你有model.ckpt-151800.data-00000-of-00001等文件,运行命令:python3 rnn_rbm_generate.py model.ckpt-151800传入检查点所在的目录路径
如果你的训练目录下有TensorFlow自动生成的checkpoint文件(这个文件记录了最新的检查点信息),直接传入目录路径即可,脚本会自动找到最新的检查点。比如检查点都在当前目录,运行:python3 rnn_rbm_generate.py ./
额外验证步骤
- 确认你的训练目录下存在
checkpoint文件,这个文件是TensorFlow在训练时自动生成的,内容类似:
如果有这个文件,用目录路径的方式会更省心。model_checkpoint_path: "model.ckpt-151800" all_model_checkpoint_paths: "model.ckpt-xxxxxx" - 如果脚本里的
saver.restore是直接接收检查点路径而不是通过get_checkpoint_state,那直接传入前缀路径就可以正常工作。
内容的提问来源于stack exchange,提问作者Nico_See
相关产品推荐
相关产品推荐

