首页 > 解决方案 > 使用 Tensorflow 迭代器加载 .npz 的有效方法

问题描述

我有一个大型.npznumpy 培训文件,我想更有效地阅读。我尝试遵循 Tensorflow 文档(https://www.tensorflow.org/guide/datasets#sumption_numpy_arrays)中的方法:

作为替代方案,您可以根据 tf.placeholder() 张量定义数据集,并在对数据集初始化迭代器时提供 NumPy 数组。

然而,在实现迭代器之后,我的模型甚至消耗了 2 倍以上的内存。你有什么线索这里可能有什么问题吗?

def model(batch_size):
    x = tf.placeholder(tf.float32,[None, IMGSIZE,IMGSIZE,1])
    y = tf.placeholder(tf.float32,[None, n_landmark * 2])
    z = tf.placeholder(tf.int32, [None, ])

    Ret_dict['x'] = x
    Ret_dict['y'] = y
    Ret_dict['z'] = z
    Ret_dict['iterator'] = iter_

   dataset = tf.data.Dataset.from_tensor_slices((x, y, z)).batch(batch_size)
   iter_ = dataset.make_initializable_iterator()
   InputImage, GroundTruth, GroundTruth_Em = iter_.get_next()

   Conv1a = tf.layers.conv2d(InputImage,64,3,1,..)
   (...)


def main():
    trainSet = np.load(args.datasetDir)
    Xtrain = trainSet['Image']
    Ytrain = trainSet['Label_1']
    Ytrain_em = trainSet['Label_2']

    with tf.Session() as sess:
        my_model = model(BATCH_SIZE)
        Saver = tf.train.Saver()
        Saver.restore(sess, args.pretrainedModel)

        sess.run(
            [model['Optimizer'], model['iterator'].initializer],
                    feed_dict={model['x']:Xtrain,    
                               model['y']:Ytrain,
                               model['z']:Ytrain_em})

标签: pythontensorflowneural-networkdeep-learningconv-neural-network

解决方案


推荐阅读