他说,对于卷积层,通过参数共享,它会为每个过滤器引入F x F x D
个权重,总共(F x F x D) x K
个权重和K
个偏差。
在我的张量流代码中,我有一个这样的架构(其中D = 1)
conv1:F = 3,K = 32,S = 1,P = 1.
pool1:
CONV2 等等...
根据公式,
对于conv1,用F = 3生成的模型应该具有9K权重,即。 较小型号和
使用F = 5生成的模型应具有25K权重,即更大模型
问题
在我的代码中,当我为这两种情况写出模型文件时,我发现.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"