zoukankan      html  css  js  c++  java
  • tensorflow API _ 6 (tf.gfile)

    一、gfile模块是什么

    tf.gfile模块的主要角色是:
    1.提供一个接近Python文件对象的API,以及
    2.提供基于TensorFlow C ++ FileSystem API的实现。 

    C ++ FileSystem API支持多种文件系统实现,包括本地文件,谷歌云存储(以gs://开头)和HDFS(以hdfs:/开头)。 TensorFlow将它们导出为tf.gfile,以便我们可以使用这些实现来保存和加载检查点,编写TensorBoard log以及访问训练数据(以及其他用途)。但是,如果所有文件都是本地文件,则可以使用常规的Python文件API而不会造成任何问题。

    二、gfile API介绍

    下面将分别介绍每一个gfile API!

    2-1)tf.gfile.Copy(oldpath, newpath, overwrite=False)

    拷贝源文件并创建目标文件,无返回,其形参说明如下:

    oldpath:带路径名字的拷贝源文件;

    newpath:带路径名字的拷贝目标文件;

    overwrite:目标文件已经存在时是否要覆盖,默认为false,如果目标文件已经存在则会报错

    2-2)tf.gfile.MkDir(dirname)

    创建一个目录,dirname为目录名字,无返回。

    2-3)tf.gfile.Remove(filename)

    删除文件,filename即文件名,无返回。

    2-4)tf.gfile.DeleteRecursively(dirname)

    递归删除所有目录及其文件,dirname即目录名,无返回。

    2-5)tf.gfile.Exists(filename)

    判断目录或文件是否存在,filename可为目录路径或带文件名的路径,有该目录则返回True,否则False。

    2-6)tf.gfile.Glob(filename)

    查找匹配pattern的文件并以列表的形式返回,filename可以是一个具体的文件名,也可以是包含通配符的正则表达式。

    2-7)tf.gfile.IsDirectory(dirname)

    判断所给目录是否存在,如果存在则返回True,否则返回False,dirname是目录名。

    2-8)tf.gfile.ListDirectory(dirname)

    罗列dirname目录下的所有文件并以列表形式返回,dirname必须是目录名。

    2-9)tf.gfile.MakeDirs(dirname)

    以递归方式建立父目录及其子目录,如果目录已存在且是可覆盖则会创建成功,否则报错,无返回。

    2-10)tf.gfile.Rename(oldname, newname, overwrite=False)

    重命名或移动一个文件或目录,无返回,其形参说明如下:

    oldname:旧目录或旧文件;

    newname:新目录或新文件;

    overwrite:默认为false,如果新目录或新文件已经存在则会报错,否则重命名或移动成功。

    2-11)tf.gfile.Stat(filename)

    返回目录的统计数据,该函数会返回FileStatistics数据结构,以dir(tf.gfile.Stat(filename))获取返回数据的属性如下:

    2-12)tf.gfile.Walk(top, in_order=True)

    递归获取目录信息生成器,top是目录名,in_order默认为True指示顺序遍历目录,否则将无序遍历,每次生成返回如下格式信息(dirname, [subdirname, subdirname, ...], [filename, filename, ...])。

    2-13)tf.gfile.GFile(filename, mode)

    获取文本操作句柄,类似于python提供的文本操作open()函数,filename是要打开的文件名,mode是以何种方式去读写,将会返回一个文本操作句柄。

    tf.gfile.Open()是该接口的同名,可任意使用其中一个!

    2-14)tf.gfile.FastGFile(filename, mode)

    该函数与tf.gfile.GFile的差别仅仅在于“无阻塞”,即该函数会无阻赛以较快的方式获取文本操作句柄。

    举例两个作用:

    pb文件保存:

        output_graph_def = convert_variables_to_constants(sess, sess.graph_def, ["output2"])
        with tf.gfile.FastGFile('./models/emotion_resnet_graph.pb',mode='wb') as f:
            f.write(output_graph_def.SerializeToString())

    图像编码解码:

    tf.gfile.FastGFile(path,decodestyle) 
    函数功能:实现对图片的读取。 
    函数参数:(1)path:图片所在路径 (2)decodestyle:图片的解码方式。(‘r’:UTF-8编码; ‘rb’:非UTF-8编码)

    import matplotlib.pyplot as plt
    import tensorflow as tf

    #tf.gfileGFile()函数:读取图像 
    image_jpg = tf.gfile.FastGFile('dog.jpg','rb').read() 
    image_png = tf.gfile.FastGFile('lizard.png','rb').read() 

    with tf.Session() as sess: 

        image_jpg = tf.image.decode_jpeg(image_jpg) #图像解码
        print(sess.run(image_jpg))#打印解码后的图像(即为一个三维矩阵[w,h,3])
        image_jpg = tf.image.convert_image_dtype(image_jpg,dtype=tf.uint8) #改变图像数据类型 

        image_png = tf.image.decode_png(image_png)
        print(sess.run(image_jpg))
        image_png = tf.image.convert_image_dtype(image_png,dtype=tf.uint8) 

        plt.figure(1) #图像显示 
        plt.imshow(image_jpg.eval()) 
        plt.figure(2) 
        plt.imshow(image_png.eval()) 

  • 相关阅读:
    java
    GO学习Day2
    GO学习Day1
    APS定时任务框架
    用微信每天给女朋友说晚安
    人生苦短,我用python
    Python 捕获terminate信号优雅关闭进程
    Python 多线程及多进程结合使用
    Python API 接口权限控制思路
    Docker runC 严重安全漏洞CVE-2019-5736 导致容器逃逸
  • 原文地址:https://www.cnblogs.com/Libo-Master/p/8926338.html
Copyright © 2011-2022 走看看