将tensorflow的ckpt模型存储为npy

#coding=gbk
import numpy as np
import tensorflow as tf
from tensorflow.python import pywrap_tensorflow

checkpoint_path='model.ckpt-5000'#your ckpt path
reader=pywrap_tensorflow.NewCheckpointReader(checkpoint_path)
var_to_shape_map=reader.get_variable_to_shape_map()

alexnet={}
alexnet_layer = ['conv1','conv2','conv3','conv4','conv5','fc6','fc7','fc8']
add_info = ['weights','biases']

alexnet={'conv1':[[],[]],'conv2':[[],[]],'conv3':[[],[]],'conv4':[[],[]],'conv5':[[],[]],'fc6':[[],[]],'fc7':[[],[]],'fc8':[[],[]]}


for key in var_to_shape_map:
    #print ("tensor_name",key)

    str_name = key
    # 因为模型使用Adam算法优化的,在生成的ckpt中,有Adam后缀的tensor
    if str_name.find('Adam') > -1:
        continue

    print('tensor_name:' , str_name)

    if str_name.find('/') > -1:
        names = str_name.split('/')
        # first layer name and weight, bias
        layer_name = names[0]
        layer_add_info = names[1]
    else:
        layer_name = str_name
        layer_add_info = None

    if layer_add_info == 'weights':
        alexnet[layer_name][0]=reader.get_tensor(key)
    elif layer_add_info == 'biases':
        alexnet[layer_name][1] = reader.get_tensor(key)
    else:
        alexnet[layer_name] = reader.get_tensor(key)

# save npy
np.save('alexnet_pointing04.npy',alexnet)
print('save npy over...')
#print(alexnet['conv1'][0].shape)
#print(alexnet['conv1'][1].shape)

参考文献:
http://blog.csdn.net/weiguanqun/article/details/78673620

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值