我最近遇到了将模型保存到更大尺寸的问题.我正在使用tensorflow 1.4
以前,我用过
tf.train.string_input_producer() 和 tf.train.batch()
从文本文件加载图像.在训练中,
tf.train.start_queue_runners() 和 tf.train.Coordinator()
用于向网络提供数据.在这种情况下,每次我使用保存模型
saver.save(sess, checkpoint_path, global_step=iters)
只给了我一个小尺寸的文件,即一个名为model.ckpt-1000.data-00000-of-00001且1.6MB的文件.
现在,我用
tf.data.Dataset.from_tensor_slices()
将图像提供给输入placeholder,保存的模型变为290MB.但我不知道为什么.我怀疑张量流也saver将数据集保存到模型中.如果是这样,如何删除它们以使其变小,并且仅保存网络的权重.
这不是网络依赖,因为我尝试了两个网络,他们都是这样的.
我用谷歌搜索,但遗憾的是没有看到任何与此问题相关的灵感.(或者这不是问题,只是我不知道怎么办?)
非常感谢您的任何想法和帮助!
我初始化数据集的方法是:
1.First生成的numpy.array数据集:
self.train_hr, self.train_lr = cifar10.load_dataset(sess)
Run Code Online (Sandbox Code Playgroud)
例如,初始数据集是numpy.array [8000,32,32,3].我传入sess这个函数是因为在函数中,我做了tf.image.resize_images()并sess.run()用来生成numpy.array.回报self.train_hr和self.train_lr是numpy.array在形状[8000,64,64,3].
然后我创建了数据集:
self.img_hr = tf.placeholder(tf.float32)
self.img_lr = tf.placeholder(tf.float32)
dataset = tf.data.Dataset.from_tensor_slices((self.img_hr, self.img_lr))
dataset = dataset.repeat(conf.num_epoch).shuffle(buffer_size=conf.shuffle_size).batch(conf.batch_size)
self.iterator = dataset.make_initializable_iterator()
self.next_batch = self.iterator.get_next()
Run Code Online (Sandbox Code Playgroud)
然后我初始化了网络和数据集,做了培训并保存了模型:
self.labels = tf.placeholder(tf.float32, …Run Code Online (Sandbox Code Playgroud)