如何计算tensorflow计算model的大小size(2)
1,加adam优化器,保存模型
import os
import tensorflow as tf
import tensorflow.contrib.slim as slim
from tensorflow.python import pywrap_tensorflow
CURRENT_DIR = os.getcwd()
train_dir = CURRENT_DIR + '/logs/'
lr =0.01
a = tf.placeholder(tf.float32, shape=[None, 6, 512], name='a')
print a.shape
b = slim.fully_connected(a, 1 * 512, activation_fn=tf.nn.relu, weights_initializer=slim.variance_scaling_initializer(), scope='fc1')
print b.shape
y = tf.placeholder(tf.float32, [None, 10])
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=b, labels=y))
optimizer = tf.train.AdamOptimizer(lr).minimize(cost)
# optimizer = tf.train.GradientDescentOptimizer(lr).minimize(cost)
for tv in tf.trainable_variables():
print (tv.name)
w = tf.get_default_graph().get_tensor_by_name("fc1/weights:0")
b = tf.get_default_graph().get_tensor_by_name("fc1/biases:0")
with tf.Session() as sess:
tf.global_variables_initializer().run()
print(sess.run(b))
print(sess.run(w))
print(sess.run(b).shape)
print(sess.run(w).shape)
print(type(sess.run(b)))
print(type(sess.run(w)[0,0]))
checkpoint_path = os.path.join(train_dir,'abc.ckpt')
saver = tf.train.Saver()
saver.save(sess, checkpoint_path)
print '********* model saved *********'
模型比上一个增加了大概3倍
2,原因 是加了adam优化器增大了3倍
通过读model来测试
model_dir = train_dir
ckpt = tf.train.get_checkpoint_state(model_dir)
ckpt_path = ckpt.model_checkpoint_path
reader = pywrap_tensorflow.NewCheckpointReader(ckpt_path)
param_dict = reader.get_variable_to_shape_map()
for key, val in param_dict.items():
try:
print key, val
except:
pass
输出:
fc1/weights/Adam [512, 512]
fc1/biases/Adam [512]
fc1/weights [512, 512]
beta2_power []
fc1/weights/Adam_1 [512, 512]
fc1/biases/Adam_1 [512]
beta1_power []
fc1/biases [512]
比上一个Model增加了三倍。
而tf.train.GradientDescentOptimizer就没有这种影响
所以,肯定是Adam的原因。至于细节,谁能提供一下。