实例如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#coding=gbk
import numpy as np
import tensorflow as tf
from tensorflow.python import pywrap_tensorflow
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)
|
以上这篇将tensorflow的ckpt模型存储为npy的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/raby_gyl/article/details/79075716