Python 2.7 Tensorflow深度学习-模型大小和参数
根据Andrej的博客- 他说,对于卷积层,在参数共享的情况下,它引入了每个滤波器的Python 2.7 Tensorflow深度学习-模型大小和参数,python-2.7,tensorflow,neural-network,deep-learning,conv-neural-network,Python 2.7,Tensorflow,Neural Network,Deep Learning,Conv Neural Network,根据Andrej的博客- 他说,对于卷积层,在参数共享的情况下,它引入了每个滤波器的fxfd权重,总共(fxfd)xk权重和K偏差 在我的tensorflow代码中,我有这样一个体系结构(其中D=1) conv1:F=3,K=32,S=1,p=1 池1: conv2 等等 根据公式, 为conv1生成的F=3的模型应具有9K权重,即较小的模型,以及 F=5生成的模型应具有25K权重,即更大的模型 问题 在我的代码中,当我写出这两种情况下的模型文件时,我看到.ckpt文件大约是380MB(F=3
fxfd
权重,总共(fxfd)xk
权重和K
偏差
在我的tensorflow代码中,我有这样一个体系结构(其中D=1)
.ckpt
文件大约是380MB(F=3)和340MB(F=5)。我错过什么了吗
代码:
下面是将变量保存到模型并打印其大小的参考代码
''' Run the session and save the model'''
#Add a saver here
saver = tf.train.Saver()
# Run session
sess.run(tf.initialize_all_variables())
for i in range(201):
batch = mnist.train.next_batch(50)
if i%100 == 0:
train_accuracy = accuracy.eval(feed_dict={x:batch[0], y_: batch[1], keep_prob: 1.0})
print("step %d, training accuracy %g"%(i, train_accuracy))
train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 1.0})
# Save model
save_path = saver.save(sess, "/Users/voladoddi/Desktop/dropmodel.ckpt")
print("Model saved in file: %s" % save_path)
# Test
print("test accuracy %g"%accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))
# Print model size.
vars = 0
for v in tf.all_variables():
vars += np.prod(v.get_shape().as_list())
print(vars*4)/(1024**2),"MB"
这些计算仅适用于卷积层,如果您的模型有一些完全连接的层,则较大的过滤器大小可能会产生较小的特征映射,减少FC层中的参数数量,并且根据具体的模型配置,这可能会导致参数数量减少。Hi@MatiasValdenegro,我猜根据这个链接-,我把“模型尺寸”和“参数数量”这两个词混在一起了。你的意思是说#parameters=/=模型大小。这是正确的吗?不,我说的是完全不同的东西。打印所有变量的名称和大小可以帮助您了解这里发生了什么(调试它比检查模型大小更容易)