精华内容
下载资源
问答
  • PB写的财务格式pb财务格式pb财务格式pb财务格式
  • PB读写JSON格式数据

    2015-07-17 11:16:32
    PB写的对JSON数据格式的控制,解决WEB上rest接口问题
  • PB Excel原格式导出.rar

    2019-12-16 15:23:16
    PB格式导出datawindow,包含导出的方法、对象、函数等,可以选择导出路径,可以选择保存的位置
  • PB日期转换 PB格式转换 日期、时间函数 打印函数
  • PB格式化代码插件

    2018-12-24 12:47:35
    PB格式化代码插件;加载后可用自动格式化代码,可用增加格式化注释
  • PB动态报表格式自由定义的实现.pdf
  • PB 解析xml格式

    热门讨论 2012-03-13 22:10:10
    我写的很详细,代码是从网上摘的,但注释是我加的。
  • pb数据库编程 pdg格式

    2008-11-24 22:37:44
    pb数据库编程 pdg格式 经典的好资料 共享了 大家看看吧
  • 数据窗口pb9转成pb7格式:在pb9窗口的源文件件中删除文中的文字后保存,即可在pb7中打开使用
  • PB11.5版 将二维码生成的图片,转换成jpg后,即可以用PB自带的PIC控件来打开了。代码实现BMP与JPG格式互相转换。
  • PB资料全CHM格式.rar

    2019-08-01 15:02:36
    PB资料全CHM格式,各种学习资料,可当字典使用,碰到问题时再来有目的的查找资料
  • PB(CAD2007格式).rar

    2019-09-22 19:38:49
    PB(CAD2007格式)rar,PB(CAD2007格式
  • 在通常的Server/Client方式...PB(PowerBuilder)有一种以PSR结尾的特殊的保存报表的文件格式(本文简称作PSR文件)。根据数据窗口可以直接读取PSR文件生成报表的原理,程序通过生成PSR文件,实现动态报表格式的保存。
  • PB函数大全,html格式

    2010-10-27 11:34:28
    PB函数大全,html格式.本人所发的系列PB资料为多年来学习、应用时收集而得,对初学和中级使用者非常有用,PB学习时遇到的问题基本都有答案。
  • TensorFlow2.0模型格式转换为.pb格式

    千次阅读 2020-04-24 18:14:59
    本文主要介绍如何将tensorflow2.0模型转化为.pb格式

    版本要求:

    Tensorflow 2.0.0+

    tensorflow原生保存的模型不适用于多平台使用,将模型转化为.pb格式,可以更加方便的转化为别的格式,本文主要介绍如何转化.pb格式。

    以mnist数据集为例进行讲解:

    1. 创建网络模型,训练,保存模型:

    inputs = tf.keras.Input(shape=(28,28,1), name='input')
    # [28, 28, 1] => [28, 28, 64]
    input = tf.keras.layers.Flatten(name="flatten")(inputs)
    fc_1 = tf.keras.layers.Dense(512, activation='relu', name='fc_1')(input)
    fc_2 = tf.keras.layers.Dense(256, activation='relu', name='fc_2')(fc_1)
    pred = tf.keras.layers.Dense(10, activation='softmax', name='output')(fc_2)
    
    model = tf.keras.Model(inputs=inputs, outputs=pred, name='mnist')
    model.summary()
    

     将网络搭建出来后,进行训练,然后保存模型,训练过程不再赘述,训练完保存模型,有两种保存方式:

    方式1:

    from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2
    import tensorflow as tf
    
    # training code -----------------
    tf.saved_model.save(obj=model, export_dir="./model")
    # Convert Keras model to ConcreteFunction
    # 注意这个Input,是自己定义的输入层名
    full_model = tf.function(lambda Input: model(Input))
    full_model = full_model.get_concrete_function(
        tf.TensorSpec(model.inputs[0].shape, model.inputs[0].dtype))
    
    # Get frozen ConcreteFunction
    frozen_func = convert_variables_to_constants_v2(full_model)
    frozen_func.graph.as_graph_def()
    
    layers = [op.name for op in frozen_func.graph.get_operations()]
    print("-" * 50)
    print("Frozen model layers: ")
    for layer in layers:
        print(layer)
    
    print("-" * 50)
    print("Frozen model inputs: ")
    print(frozen_func.inputs)
    print("Frozen model outputs: ")
    print(frozen_func.outputs)
    
    # Save frozen graph from frozen ConcreteFunction to hard drive
    tf.io.write_graph(graph_or_graph_def=frozen_func.graph,
                      logdir="./frozen_models",
                      name="mnist.pb",
                      as_text=False)

    这种方式是训练完,然后使用tf.saved_model.save()函数保存模型,然后将模型转化为.pb格式.


    方式2:

    # training code--------------------
    model.save("./mnist.h5")

    将模型保存为.h5格式,然后再另外创建一个文件将.h5模型转为.pb模型:

    import tensorflow as tf
    from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2
    
    def convert_h5to_pb():
        model = tf.keras.models.load_model("../mnist.h5",compile=False)
        model.summary()
        full_model = tf.function(lambda Input: model(Input))
        full_model = full_model.get_concrete_function(tf.TensorSpec(model.inputs[0].shape, model.inputs[0].dtype))
    
        # Get frozen ConcreteFunction
        frozen_func = convert_variables_to_constants_v2(full_model)
        frozen_func.graph.as_graph_def()
    
        layers = [op.name for op in frozen_func.graph.get_operations()]
        print("-" * 50)
        print("Frozen model layers: ")
        for layer in layers:
            print(layer)
    
        print("-" * 50)
        print("Frozen model inputs: ")
        print(frozen_func.inputs)
        print("Frozen model outputs: ")
        print(frozen_func.outputs)
    
        # Save frozen graph from frozen ConcreteFunction to hard drive
        tf.io.write_graph(graph_or_graph_def=frozen_func.graph,
                          logdir="./frozen_models",
                          name="mnist.pb",
                          as_text=False)

     这种方式的好处是可以将别人训练好的.h5模型文件拿来转.pb模型


    2. 测试.pb模型:

    测试转化的.pb模型是否转化成功,能否加载

    def wrap_frozen_graph(graph_def, inputs, outputs, print_graph=False):
        def _imports_graph_def():
            tf.compat.v1.import_graph_def(graph_def, name="")
    
        wrapped_import = tf.compat.v1.wrap_function(_imports_graph_def, [])
        import_graph = wrapped_import.graph
    
        print("-" * 50)
        print("Frozen model layers: ")
        layers = [op.name for op in import_graph.get_operations()]
        if print_graph == True:
            for layer in layers:
                print(layer)
        print("-" * 50)
    
        return wrapped_import.prune(
            tf.nest.map_structure(import_graph.as_graph_element, inputs),
            tf.nest.map_structure(import_graph.as_graph_element, outputs))
    
    
    def main():
        # 测试数据集,
        (train_images, train_labels), (test_images,
                                       test_labels) = tf.keras.datasets.mnist.load_data()
    
        # Load frozen graph using TensorFlow 1.x functions
        with tf.io.gfile.GFile("./model/frozen_models/mnist.pb", "rb") as f:
            graph_def = tf.compat.v1.GraphDef()
            loaded = graph_def.ParseFromString(f.read())
    
        # Wrap frozen graph to ConcreteFunctions
        frozen_func = wrap_frozen_graph(graph_def=graph_def,
                                        inputs=["Input:0"],
                                        outputs=["Identity:0"],
                                        print_graph=True)
    
        print("-" * 50)
        print("Frozen model inputs: ")
        print(frozen_func.inputs)
        print("Frozen model outputs: ")
        print(frozen_func.outputs)
    
        # Get predictions for test images
        predictions = frozen_func(Input=tf.constant(test_images))[0]
    
        # Print the prediction for the first image
        print("-" * 50)
        print("Example prediction reference:")
        print(predictions[0].numpy())
    
    
    if __name__ == "__main__":
    
        main()

    至此 模型转化结束。

    def freeze_graph(input_checkpoint, output_graph):
        '''
        :param input_checkpoint:
        :param output_graph: PB模型保存路径
        :return:
        '''
        # checkpoint = tf.train.get_checkpoint_state(model_folder) #检查目录下ckpt文件状态是否可用
        # input_checkpoint = checkpoint.model_checkpoint_path #得ckpt文件路径
    
        # 指定输出的节点名称,该节点名称必须是原模型中存在的节点
        # output_node_names = "clone_0/block3_box/Reshape:0,clone_0/block3_box/Reshape_1:0,clone_0/block4_box/Reshape:0,clone_0/block4_box/Reshape_1:0," \
        #                     "clone_0/block5_box/Reshape:0,clone_0/block5_box/Reshape_1:0,clone_0/block6_box/Reshape:0,clone_0/block6_box/Reshape_1:0," \
        #                     "clone_0/block7_box/Reshape:0,clone_0/block7_box/Reshape_1:0,clone_0/block8_box/Reshape:0,clone_0/block8_box/Reshape_1:0"
    
        saver = tf.train.import_meta_graph(input_checkpoint + '.meta', clear_devices=True)
        output_node_names = "block3_box/Reshape,block3_box/Reshape_1,block4_box/Reshape,block4_box/Reshape_1,block5_box/Reshape,block5_box/Reshape_1,block6_box/Reshape,block6_box/Reshape_1,block7_box/Reshape,block7_box/Reshape_1,block8_box/Reshape,block8_box/Reshape_1,seg_argmax"
        # output_node_names = "seg_argmax"
        with tf.Session() as sess:
            saver.restore(sess, input_checkpoint)  # 恢复图并得到数据
            output_graph_def = graph_util.convert_variables_to_constants(  # 模型持久化,将变量值固定
                sess=sess,
                input_graph_def=sess.graph_def,  # 等于:sess.graph_def
                output_node_names=output_node_names.split(","))  # 如果有多个输出节点,以逗号隔开
            # for node in output_graph_def.node:
            #     if node.op == 'RefSwitch':
            #         node.op = 'Switch'
            #         for index in range(len(node.input)):
            #             if 'moving_' in node.input[index]:
            #                 node.input[index] = node.input[index] + '/read'
            #     elif node.op == 'AssignSub':
            #         node.op = 'Sub'
            #         if 'use_locking' in node.attr:
            #             del node.attr['use_locking']
            with tf.gfile.GFile(output_graph, "wb") as f:  # 保存模型
                f.write(output_graph_def.SerializeToString())  # 序列化输出
            print("%d ops in the final graph." % len(output_graph_def.node))  # 得到当前图有几个操作节点
    
            # for op in sess.graph.get_operations():
            #     print(op.name, op.values())
    
    def show_Node_Name(varible_name=None):
        # ckpt = tf.train.get_checkpoint_state(model_path + '/')
        ckpt='../inference_model_rt/seg_model'
        saver = tf.train.import_meta_graph(ckpt + '.meta',clear_devices=True)
        with tf.Session() as sess:
            # saver.restore(sess, ckpt.model_checkpoint_path)
            saver.restore(sess, ckpt)
            graph = tf.get_default_graph()
    
            tensor_name_list = [tensor.name for tensor in tf.get_default_graph().as_graph_def().node]
            if varible_name==None:
                for tensor_name in tensor_name_list:
                    print(tensor_name)
            else:
                for tensor_name in tensor_name_list:
                    if varible_name in tensor_name.split("/"):
                        print(tensor_name)

     

     

     

     

     

     

    展开全文
  • tensorflow保存数据为.pb格式和加载pb文件

    万次阅读 多人点赞 2018-05-16 21:49:54
    最近接触了tensorflow的object detection API发现里面读取的预先训练模型都是pb格式。谷歌推荐的保存模型的方式是保存模型为 PB 文件,它具有语言独立性,可独立运行,封闭的序列化...

    最近接触了tensorflow的object detection API发现里面读取的预先训练模型都是pb格式。

    谷歌推荐的保存模型的方式是保存模型为 PB 文件,它具有语言独立性,可独立运行,封闭的序列化格式,任何语言都可以解析它,它允许其他语言和深度学习框架读取、继续训练和迁移 TensorFlow 的模型。

    它的主要使用场景是实现创建模型与使用模型的解耦, 使得前向推导 inference的代码统一。

    另外的好处是保存为 PB 文件时候,模型的变量都会变成固定的,导致模型的大小会大大减小,适合在手机端运行。

    还有一个就是,真正离线测试使用的时候,pb格式的数据能够保证数据不会更新变动,就是不会进行反馈调节啦。

    保存 PB 文件的代码:

    import tensorflow as tf
    import os
    from tensorflow.python.framework import graph_util
    
    pb_file_path = os.getcwd()
    
    with tf.Session(graph=tf.Graph()) as sess:
        x = tf.placeholder(tf.int32, name='x')
        y = tf.placeholder(tf.int32, name='y')
        b = tf.Variable(1, name='b')
        xy = tf.multiply(x, y)
        # 这里的输出需要加上name属性
        op = tf.add(xy, b, name='op_to_store')
    
        sess.run(tf.global_variables_initializer())
    
        # convert_variables_to_constants 需要指定output_node_names,list(),可以多个
        constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph_def, ['op_to_store'])
    
        # 测试 OP
        feed_dict = {x: 10, y: 3}
        print(sess.run(op, feed_dict))
    
        # 写入序列化的 PB 文件
        with tf.gfile.FastGFile(pb_file_path+'model.pb', mode='wb') as f:
            f.write(constant_graph.SerializeToString())
    
        # 输出
        # INFO:tensorflow:Froze 1 variables.
        # Converted 1 variables to const ops.
        # 31
    

    加载 PB 模型文件典型代码:

    from tensorflow.python.platform import gfile
    
    sess = tf.Session()
    with gfile.FastGFile(pb_file_path+'model.pb', 'rb') as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
        sess.graph.as_default()
        tf.import_graph_def(graph_def, name='') # 导入计算图
    
    # 需要有一个初始化的过程    
    sess.run(tf.global_variables_initializer())
    
    # 需要先复原变量
    print(sess.run('b:0'))
    # 1
    
    # 输入
    input_x = sess.graph.get_tensor_by_name('x:0')
    input_y = sess.graph.get_tensor_by_name('y:0')
    
    op = sess.graph.get_tensor_by_name('op_to_store:0')
    
    ret = sess.run(op,  feed_dict={input_x: 5, input_y: 5})
    print(ret)
    # 输出 26
    


    保存为 save model 格式也可以生成模型的 PB 文件,并且更加简单。

    保存好以后到saved_model_dir目录下,会有一个saved_model.pb文件以及variables文件夹。顾名思义,variables保存所有变量,saved_model.pb用于保存模型结构等信息。

    import tensorflow as tf
    import os
    from tensorflow.python.framework import graph_util
    
    pb_file_path = os.getcwd()
    
    with tf.Session(graph=tf.Graph()) as sess:
        x = tf.placeholder(tf.int32, name='x')
        y = tf.placeholder(tf.int32, name='y')
        b = tf.Variable(1, name='b')
        xy = tf.multiply(x, y)
        # 这里的输出需要加上name属性
        op = tf.add(xy, b, name='op_to_store')
    
        sess.run(tf.global_variables_initializer())
    
        # convert_variables_to_constants 需要指定output_node_names,list(),可以多个
        constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph_def, ['op_to_store'])
    
        # 测试 OP
        feed_dict = {x: 10, y: 3}
        print(sess.run(op, feed_dict))
    
        # 写入序列化的 PB 文件
        with tf.gfile.FastGFile(pb_file_path+'model.pb', mode='wb') as f:
            f.write(constant_graph.SerializeToString())
    
        # INFO:tensorflow:Froze 1 variables.
        # Converted 1 variables to const ops.
        # 31
        
        
        # 官网有误,写成了 saved_model_builder  
        builder = tf.saved_model.builder.SavedModelBuilder(pb_file_path+'savemodel')
        # 构造模型保存的内容,指定要保存的 session,特定的 tag, 
        # 输入输出信息字典,额外的信息
        builder.add_meta_graph_and_variables(sess,
                                           ['cpu_server_1'])
    
    
    # 添加第二个 MetaGraphDef 
    #with tf.Session(graph=tf.Graph()) as sess:
    #  ...
    #  builder.add_meta_graph([tag_constants.SERVING])
    #...
    
    builder.save()  # 保存 PB 模型
    

    这种方法对应的导入模型的方法:

    with tf.Session(graph=tf.Graph()) as sess:
        tf.saved_model.loader.load(sess, ['cpu_1'], pb_file_path+'savemodel')
        sess.run(tf.global_variables_initializer())
    
        input_x = sess.graph.get_tensor_by_name('x:0')
        input_y = sess.graph.get_tensor_by_name('y:0')
    
        op = sess.graph.get_tensor_by_name('op_to_store:0')
    
        ret = sess.run(op,  feed_dict={input_x: 5, input_y: 5})
        print(ret)
    # 只需要指定要恢复模型的 session,模型的 tag,模型的保存路径即可,使用起来更加简单
    

    这样和之前的导入 PB 模型一样,也是要知道tensor的name。那么如何可以在不知道tensor name的情况下使用呢,实现彻底的解耦呢? 给add_meta_graph_and_variables方法传入第三个参数,signature_def_map即可。


    参考:

    https://zhuanlan.zhihu.com/p/32887066



    展开全文
  • pb8.0中文参考手册pdf格式
  • Python 转化成 PB 格式数据.pdf
  • PB 判断图片格式属于那种图片

    千次阅读 2017-12-25 13:50:13
    If long(BlobMid(lb_data,1,4)) = 944130375 Then  ls_temp = 'gif' ElseIf long(BlobMid(lb_data,7,4)) = 1179207242 Then ls_temp = 'jpg' ElseIf integer(BlobMid(lb_data,1,4)) = 19778 Then
    If long(BlobMid(lb_data,1,4)) = 944130375 Then  
    	ls_temp = 'gif'
    ElseIf long(BlobMid(lb_data,7,4)) = 1179207242 Then  
    	ls_temp = 'jpg'
    ElseIf integer(BlobMid(lb_data,1,4)) = 19778 Then  
    	ls_temp = 'bmp'  
    ElseIf long(BlobMid(lb_data,1,4)) = 1196314761 and long(BlobMid(lb_data,5,4)) = 169478669 Then  
    	ls_temp = 'png' 
    Else   
    	ls_temp = 'none' 
    End If  

    展开全文
  • PB XP格式的动态库

    2012-03-13 00:02:51
    PB中使用数据窗口的格式变成xp风格的样式。
  • PB脚本格式化 V1.2

    2006-02-23 09:05:59
    PB脚本格式化工具
  • 主要介绍了使用keras和tensorflow保存为可部署的pb格式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 转tensorflow模型pb格式

    2020-09-02 11:14:20
    一、模型格式 Tensorflow的保存分为三种:1. checkpoint模式;2. pb模式;3. saved_model模式。 Tensorflow中模型的保存一般使用tf.train.Saver()定义的存储器对象来保存魔心那个,并得到如下的文件: ...

    一、模型格式

    Tensorflow的保存分为三种:1. checkpoint模式;2. pb模式;3. saved_model模式。

    Tensorflow中模型的保存一般使用tf.train.Saver()定义的存储器对象来保存魔心那个,并得到如下的文件:

    checkpoint
    model.ckpt.data-00000-of-00001
    model.ckpt.index
    model.ckpt.meta
    
    # "model.ckpt" 是文件名
    #保存时候生成三个文件,data对应的权重,meta是深度学习结构图,index对应的图和权重的索引,
    # checkpoint是所有保存的model.ckpt的总括
    # ckpt是一个模型快照
    

     二、意义

    pb文件格式与语言无关,好使用,其次只有一个文件。空间也小。

    三、ckpt转pb格式

    原理就是根据输出节点(重点节点不是张量),保存所有子图。

    tensorflow 1.15版本

    with tf.Session(config=config) as sess:
        #加载ckpt格式模型
        model_file = tf.train.latest_checkpoint(FLAGS.model_path)
        saver = tf.train.import_meta_graph("{}.meta".format(model_file))
        saver.restore(sess, model_file)
        
        def frozen():
            graph = tf.get_default_graph()
            input_graph_def = graph.as_graph_def()
    
            frozen_graph_def = tf.graph_util.convert_variables_to_constants(sess, input_graph_def, ["representation/qs_y_raw","representation/q_y_raw"])
      
    
           # 保存模型
            output_graph="pb_model/frozen_model.pb"
            with tf.gfile.GFile(output_graph, "wb") as f:
                    f.write(frozen_graph_def.SerializeToString())  # 序列化输出
                # 得到当前图有几个操作节点
            print("%d ops in the final graph." % len(frozen_graph_def.node))
    
        #     for op in graph.get_operations():
        #             print(op.name,"op.values:",op.values())
            print("model have been frozen... ...")

     

     

    展开全文
  • PB技术精粹(chm格式)

    2010-10-04 14:10:26
    chm格式pb资料,想学习就下吧(十多个文件).
  • PB常见问题集,html格式,本人所发的系列PB资料为多年来学习、应用时收集而得,对初学和中级使用者非常有用,PB学习时遇到的问题基本都有答案。
  • PB常见问题集,chm格式,本人所发的系列PB资料为多年来学习、应用时收集而得,对初学和中级使用者非常有用,PB学习时遇到的问题基本都有答案。
  • PB经典入门课件PPT格式.思路清晰,量又足,是入门和整理提高的好帮手!
  • PB动态报表格式自由定义的实现

    千次阅读 2015-01-18 23:15:55
    在通常的Server/Client方式MIS开发中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能...PB(PowerBuilder)有一种以PSR结尾的特殊的保存报表的文件格式(本文简称作PSR文件)。根据数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,895
精华内容 20,358
关键字:

pb是什么格式