精华内容
下载资源
问答
  • 就是需要多次访问磁盘加载索引文件,会严重降低查找的速度,一次磁盘IO需要10ms左右,对于一个有上亿数据量的数据查找,需要大概20次左右的磁盘IO,就是200ms,所以真的是很...
  • 不管一个多么大的程序最基本的单元是变量,任何数值运算表达等离不开...建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量的值可在之后模型训练和分析是被加载。 创建 当创建一个变...

    不管一个多么大的程序最基本的单元都是变量,任何数值运算表达等都离不开变量,所以我们从变量开始介绍。


    当训练模型时,用变量来存储和更新参数。变量包含张量 (Tensor)存放于内存的缓存区。建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量的值可在之后模型训练和分析是被加载。

    创建

    tf.Variable

    tf.Variable(initial_value=None, trainable=True,collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None)
    

    函数功能:创建一个新的变量,变量的值是initial_value,创建的变量会被添加到默认的计算图列表中,如果trainable被设置为True,这个变量还会被添加到计算图的集合中。

    参数 含义
    initial_value 默认值是None,张量或者是一个python对象可以转成张量,这个initial_value是初始化变量的值。它必须有一个特殊的shape,除非validate_shape设置为False
    trainable 默认的是True,变量还会被添加到GraphKeys.TRAINABLE_VARIABLES计算图集合中
    collections 变量会被添加到这个集合中,默认的集合是[GraphKeys.GLOBAL_VARIABLES]
    validate_shape 如果是False,允许这个变量被初始化一个不知道shape。默认的是True,这个initial_value的shape必须是知道的
    name 变量的名字
    dypte 变量的类型,小数的默认是float32,整数默认是int32
    weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35), name="weights")
    biases = tf.Variable(tf.zeros([200]), name="biases")
    

    如上边的程序所示,使用tf.Variable()函数创建变量时,大多时间都是借助TensorFlow一些别的函数进行创建。

    调用tf.Variable()添加一些操作(Op, operation)到graph:

    • 一个Variable操作存放变量的值。
    • 一个初始化op将变量设置为初始值。这事实上是一个tf.assign操作.
    • 初始值的操作,例如示例中对biases变量的zeros操作也被加入了graph。

    tf.Variable的返回值是Python的tf.Variable类的一个实例。

    初始化

    全部变量初始化

    init_op = tf.initialize_all_variables()
    

    上边的程序就是对所有变量进行初始化的操作,方便快捷,但是应该注意,初始化操作必须是在完全构建好模型以后在进行这个操作,不然在后边进行新建的变量不会再进行初始化操作,使用位置如下边程序所示

    # 创建两个变量
    weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),
                          name="weights")
    biases = tf.Variable(tf.zeros([200]), name="biases")
    ...
    # 添加变量初始化的操作
    init = tf.initialize_all_variables()
    
    with tf.Session() as sess:
      sess.run(init)
      ...
      ...
    

    由另一个变量初始化

    有些时候我们需要借助一个变量的初始化对另一个变量进行初始化,initialized_value()函数是对某一个变量进行初始化,不会对所用的变量进行操作。以直接把已初始化的值作为新变量的初始值,或者把它当做tensor计算得到一个值赋予新变量。

    # Create a variable with a random value.
    weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),
                          name="weights")
    # Create another variable with the same value as 'weights'.
    w2 = tf.Variable(weights.initialized_value(), name="w2")
    # Create another variable with twice the value of 'weights'
    w_twice = tf.Variable(weights.initialized_value() * 0.2, name="w_twice")
    

    自定义初始化

    tf.initialize_variables(var_list, name='init')
    

    使用上边的程序我们能初始化列表里边的所有变量。
    在会话中启动图形后,可以运行返回的op来初始化var_列表中的所有变量。此操作并行运行var_列表中变量的所有初始值设定项。如果var_list为空,函数仍然返回一个可以运行的op。那次行动没有效果。

    参数 含义
    var_list 要初始化的变量对象列表
    name 返回操作的可选名称

    保存和加载

    最简单的保存和恢复模型的方法是使用tf.train.Saver对象。构造器给graph的所有变量,或是定义在列表里的变量,添加save和restoreops。saver对象提供了方法来运行这些ops,定义检查点文件的读写路径。

    检查点文件

    变量存储在二进制文件里,主要包含从变量名到tensor值的映射关系。
    当你创建一个Saver对象时,你可以选择性地为检查点文件中的变量挑选变量名。默认情况下,将每个变量Variable.name属性的值。

    保存变量

    saver = tf.train.Saver()
    

    上边的程序是创建
    用tf.train.Saver()创建一个Saver来管理模型中的所有变量。

    # Create some variables.
    v1 = tf.Variable(..., name="v1")
    v2 = tf.Variable(..., name="v2")
    ...
    # Add an op to initialize the variables.
    init_op = tf.initialize_all_variables()
    
    # Add ops to save and restore all the variables.
    saver = tf.train.Saver()
    
    # Later, launch the model, initialize the variables, do some work, save the
    # variables to disk.
    with tf.Session() as sess:
      sess.run(init_op)
      # Do some work with the model.
      ..
      # Save the variables to disk.
      save_path = saver.save(sess, "/tmp/model.ckpt")
      print "Model saved in file: ", save_path
    

    恢复变量

    用同一个Saver对象来恢复变量。注意,当你从文件中恢复变量时,不需要事先对它们做初始化。

    # Create some variables.
    v1 = tf.Variable(..., name="v1")
    v2 = tf.Variable(..., name="v2")
    ...
    # Add ops to save and restore all the variables.
    saver = tf.train.Saver()
    
    # Later, launch the model, use the saver to restore variables from disk, and
    # do some work with the model.
    with tf.Session() as sess:
      # Restore variables from disk.
      saver.restore(sess, "/tmp/model.ckpt")
      print "Model restored."
      # Do some work with the model
      ...
    

    选择存储和恢复哪些变量

    如果你不给tf.train.Saver()传入任何参数,那么saver将处理graph中的所有变量。其中每一个变量都以变量创建时传入的名称被保存。

    有时候在检查点文件中明确定义变量的名称很有用。举个例子,你也许已经训练得到了一个模型,其中有个变量命名为"weights",你想把它的值恢复到一个新的变量"params"中。

    有时候仅保存和恢复模型的一部分变量很有用。再举个例子,你也许训练得到了一个5层神经网络,现在想训练一个6层的新模型,可以将之前5层模型的参数导入到新模型的前5层中。

    你可以通过给tf.train.Saver()构造函数传入Python字典,很容易地定义需要保持的变量及对应名称:键对应使用的名称,值对应被管理的变量。

    注意:

    如果需要保存和恢复模型变量的不同子集,可以创建任意多个saver对象。同一个变量可被列入多个saver对象中,只有当saver的restore()函数被运行时,它的值才会发生改变。
    如果你仅在session开始时恢复模型变量的一个子集,你需要对剩下的变量执行初始化op。详情请见tf.initialize_variables()。

    # Create some variables.
    v1 = tf.Variable(..., name="v1")
    v2 = tf.Variable(..., name="v2")
    ...
    # Add ops to save and restore only 'v2' using the name "my_v2"
    saver = tf.train.Saver({"my_v2": v2})
    # Use the saver object normally after that.
    ...
    
    import tensorflow as tf
    import numpy as np
    
    # 使用 NumPy 生成假数据(phony data), 总共 100 个点.
    x_data = np.float32(np.random.rand(2, 100))  # 随机输入
    y_data = np.dot([0.100, 0.200], x_data) + 0.300
    
    # 构造一个线性模型
    #
    b = tf.Variable(tf.zeros([1]))
    W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
    y = tf.matmul(W, x_data) + b
    
    # 最小化方差
    loss = tf.reduce_mean(tf.square(y - y_data))
    optimizer = tf.train.GradientDescentOptimizer(0.5)
    train = optimizer.minimize(loss)
    
    # 初始化变量
    # init = tf.initialize_all_variables()
    # 添加操作保存变量
    saver = tf.train.Saver()
    
    # with tf.Session() as sess:
    #     # Restore variables from disk.
    #     saver.restore(sess, "./Model/model.ckpt")
    #     print("Model restored.")
    
    # 启动图 (graph)
    sess = tf.Session()
    # Restore variables from disk.
    saver.restore(sess, "./Model/model.ckpt")
    print("Model restored.")
    print(sess.run(b))
    
    
    # # 拟合平面
    for step in range(0, 201):
        sess.run(train)
        if step % 20 == 0:
            print(step, sess.run(W), sess.run(b))
            save_model_name = "./Model/" + str(step) + "_model.ckpt"
            save_path = saver.save(sess, save_model_name)
            print("Model saved in file: ", save_model_name)
    
    
    
    展开全文
  • 红黑树: 在平衡二叉树稳定性的基础上,再优化一下,减少旋转次数特性:1、每个...二叉树特点:查找速度和比较次数最小,但是磁盘IO,当数据量过大的时候,索引大小可能有几个G,不可能全都加载到内存引出下面的树更...

    红黑树: 在平衡二叉树稳定性的基础上,再优化一下,减少旋转次数

    特性:

    1、每个节点要么是红色,要么是黑色。

    2、根节点必须是黑色。

    3、红色节点不能连续(也即是,红色节点的孩子和父亲都不能是红色)。

    4、对于每个节点,从该点至null(树尾端)的任何路径,都含有相同个数的黑色节点。

    213ce1ee95d9f421fde8e0a49fecff1f.png

    二叉树特点:查找速度和比较次数最小,但是磁盘IO,当数据量过大的时候,索引大小可能有几个G,不可能全都加载到内存

    引出下面的树更稳

    B树与B+树

    B树 、B - 树都读B树。

    B树与B+树区别:

    B树每个节点都存储数据,所有节点组成这棵树。B+树只有叶子节点存储数据(B+数中有两个头指针:一个指向根节点,另一个指向关键字最小的叶节点),叶子节点包含了这棵树的所有数据,所有的叶子结点使用链表相连,便于区间查找和遍历,所有非叶节点起到索引作用。

    B树中叶节点包含的关键字和其他节点包含的关键字是不重复的,B+树的索引项只包含对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。

    B树中每个节点(非根节点)关键字个数的范围为[m/2(向上取整)-1,m-1](根节点为[1,m-1]),并且具有n个关键字的节点包含(n+1)棵子树。B+树中每个节点(非根节点)关键字个数的范围为[m/2(向上取整),m](根节点为[1,m]),具有n个关键字的节点包含(n)棵子树。

    B+树中查找,无论查找是否成功,每次都是一条从根节点到叶节点的路径。

    B树的优点:B树的每一个节点都包含key和value,因此经常访问的元素可能离根节点更近,因此访问也更迅速。

    M阶B+数特点

    有n棵子树的非叶子结点中含有n个关键字(b树是n-1个),这些关键字不保存数据,只用来索引,所有数据都保存在叶子节点(b树是每个关键字都保存数据)。

    所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接(叶子节点组成一个链表)。

    所有的非叶子结点可以看成是索引部分,结点中仅含其子树中的最大(或最小)关键字。

    通常在b+树上有两个头指针,一个指向根结点,一个指向关键字最小的叶子结点。

    同一个数字会在不同节点中重复出现,根节点的最大元素就是b+树的最大元素。

    B+树的优点

    所有的叶子结点使用链表相连,便于区间查找和遍历。B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。

    b+树的中间节点不保存数据,能容纳更多节点元素。

    B树和B+树的共同优点

    考虑磁盘IO的影响,它相对于内存来说是很慢的。数据库索引是存储在磁盘上的,当数据量大时,就不能把整个索引全部加载到内存了,只能逐一加载每一个磁盘页(对应索引树的节点)。所以我们要减少IO次数,对于树来说,IO次数就是树的高度,而“矮胖”就是b树的特征之一,m的大小取决于磁盘页的大小。

    虽然查询次数比二叉树多,尤其当单一节点元素多时,但是相比磁盘IO速度,内存中的比较耗时几乎可以忽略

    所以只要树的高度是够低,IO次数是足够少,就可以提升查找性能

    IO:每一次读取的数据称之为一页.

    B树示意图:

    f1f49cf2a27779668057b17ffe833a78.png

    以下为 B+树示意图:

    818e066a1c58669e2c39135d5020dc29.png

    3a4f9cd11800d50aea3784f29ecb60e9.png

    在MySQL中,最常用的两个存储引擎是MyISAM和InnoDB,它们对索引的实现方式是不同的

    MyISAM : data存的是数据地址。索引是索引,数据是数据。索引放在XX.MYI文件中,数据放在XX.MYD文件中,所以也叫非聚集索引

    bb0771226980b3c9d9d3415e77aabd44.png

    InnoDB: data存的是数据本身。索引也是数据。数据和索引存在一个XX.IDB文件中,所以也叫聚集索引。

    430cc6439112cbaed70c327b30dbfe4f.png

    我们的Mysql数据库用的InnoDB。

    了解了数据结构再看索引,一切都不费解了,只是顺着逻辑推而已。另加两种存储引擎的区别:

    1、MyISAM是非事务安全的,而InnoDB是事务安全的

    2、MyISAM锁的粒度是表级的,而InnoDB支持行级锁

    3、MyISAM支持全文类型索引,而InnoDB不支持全文索引

    4、MyISAM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyISAM

    5、MyISAM表保存成文件形式,跨平台使用更加方便

    6、MyISAM管理非事务表,提供高速存储和检索以及全文搜索能力,如果在应用中执行大量select操作可选择

    7、InnoDB用于事务处理,具有ACID事务支持等特性,如果在应用中执行大量insert和update操作,可选择。

    展开全文
  • 因为windows对磁盘读写的规律,一般是缓存系统缓冲中,不会实时刷新到磁盘扇区中。 目前还没找到办法如何把数据实时刷新到磁盘扇区中。 8,速度损失。经过xFsRedir软件重定向的速度肯定会有一定的损失,...
  • 4.任何程序都必须加载到( C )中才能被 CPU 执行。 A. 磁盘 B. 硬盘 C. 内 存 D. 外存 5.下列设备中,属于输出设备的是( A )。 A.显示器 B.键盘 C.鼠标 D.手字板 6.计算机信息计量单位中的 K 代表( B )...
  • 最后,优化磁盘区算法可让您手动指定的文件类型,或者甚至是单个文件应被写入到磁盘的更快的一部分。 脱机碎片整理脱机碎片整理 新的脱机碎片整理引擎,使得它可以进行碎片整理重要的系统文件,通常锁定在Windows...
  • windows蓝屏错误代码

    2010-11-18 22:27:50
    138 0×0000008A 系统尝试将磁盘驱动器结合已经结合过之磁盘驱动器的目录。 139 0×0000008B 系统尝试将磁盘驱动器替换成已经替换过之磁盘驱动器的目录。 140 0×0000008C 系统尝试将磁盘驱动器替换成已经替换过之...
  • ③要运行光盘上的程序必须在启动时选择加载光驱驱动,否则无法转换光驱的盘符。 你需要的文件加好之后,就可以刻录光盘了(如下图):   完成后你就有了一张自己的DOS启动光盘喽。 5、将该光盘放入...
  • 请确认所有需要的文件系统驱动程序已经加载,而且卷没有任何损坏。  1006 某文件的卷已在外部改变,因而打开的文件不再有效。  1007 要求的操作无法以全屏幕模式执行。  1008 试图引用并不存在的符号。 ...
  • MaxDOS_71PXE_G115.rar

    2009-03-02 19:12:34
    Satacd.bat 任何菜单任何位置下快速加载SATA光驱驱动. Loadiso.bat Dos下载入iso光盘镜像.只能读取.不能引导.但可装2k/xp/2k3系统. 先切换存放iso的目录.输入 Loadiso Xx.iso (xx为镜像文件名). Uniso.bat 卸载上...
  • 注:①测试使用小米9手机,单表数据量从最小100条最大200W条,字段为30个String+一个自增ID,每个字符串长度在2030长度的随机字符,测试过程没有严格做到控制变量法,所以测试并不是很严谨,仅供参考;...
  • AIX常用命令://查看机器序列号,IBM的基本信息可以通过该命令查询得到 #prtconf #oslevel -r == uname -a //操作系统版本 #oslevel //查看操作系统版本ex :5.1.0.0 #oslevel -r //ex:5100-04 == oslevel -q //...
  • 除了一些全局配置和主 Activity 之外,不包含任何业务代码。有的也叫做空壳app 业务组件: 最上层的业务,每个组件表示一条完整的业务线,彼此之间互相独立。 该案例中分为:干活集中营,玩Android,知乎日报,...
  • windows 程序设计

    2011-07-24 21:16:30
    任何Windows的历史介绍都必须包括一些OS/2的说明,OS/2是对DOS和Windows的另一种选择,最初是由Microsoft和IBM合作开发的。OS/2版本1.0(只有文字模式)在Intel 286(或者后来的)微处理器上运行,在1987年末发布。...
  • 在Windows XP拷贝完文件硬盘,第一次重新启动计算机前,必须把光盘从光驱中取出,否则系统仍会 从光盘启动并会循环执行安装程序。 方法2: 然后,按任意键进入光驱启动模式,加载Mini版本的操作系统。 然后,按...
  • 本书分10章,共有1000多个实例,编写时从产生电脑故障的各个方面入手,涉及硬件、软件等各方面的内容,其中包括开/关机中的问题、操作中的问题、软件运用的故障、外设故障以及病毒防治等等,这些是个人电脑使用...
  • 5、再次重申,原版Win7的Syprep.exe 3.14在运行时同样具有一定的失败率,别将所有责任ES3身上 6、更改XP部署模式,最后加入一个强制重启功能,避免系统因程序执行完毕判定失误而造成的部署后无法自动重启的...
  • 【取唯一值】 能瞬间取任意存储格区域的内容为不含重复值的唯一值清单,加载到工具中并提供随时随地调用,具有重复加载与读写的特点。 【添加注解】 可视化地窗体添加与修改注解功能。提供50种美观大方的批注样式供...
  •  硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序经常会使用,所以系统需要经常对主存储器作大量的数据存取,因此存取这个档案的速度便构成影响计算机快慢的非常重要因素...
  • 14.5.1 并行DDL和使用外部表的数据加载 567 14.5.2 并行DDL和区段截断 568 14.6 并行恢复 576 14.7 过程并行化 577 14.7.1 并行管道函数 578 14.7.2 DIY并行化 580 14.7.3 老式DIY并行化 583 14.8 小结 587 ...
  • 本书第1章强调不要把数据库当成一个黑盒,讨论了开发人员必须了解的数据库的基本特性和功能。第2章提供了一个创建Oracle数据库的绝好例子,从中你将深入地了解数据库和实例的概念。第3章介绍了各种类型的文件,特别...
  • 【取唯一值】 能瞬间取任意存储格区域的内容为不含重复值的唯一值清单,加载到工具中并提供随时随地调用,具有重复加载与读写的特点。 【添加注解】 可视化地窗体添加与修改注解功能。提供50种美观大方的批注样式供...
  • 【取唯一值】 能瞬间取任意存储格区域的内容为不含重复值的唯一值清单,加载到工具中并提供随时随地调用,具有重复加载与读写的特点。 【添加注解】 可视化地窗体添加与修改注解功能。提供50种美观大方的批注样式供...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    在使用mount这个指令时,至少要先知道下列三种信息:要加载对象的文件系统类型、要加载对象的设备名称及要将设备加载到哪个目录下。 (1)Linux可以识别的文件系统 ◆ Windows 95/98常用的FAT 32文件系统:vfat ;...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【取唯一值】 能瞬间取任意存储格区域的内容为不含重复值的唯一值清单,加载到工具中并提供随时随地调用,具有重复加载与读写的特点。 【添加注解】 可视化地窗体添加与修改注解功能。提供50种美观大方的批注样式供...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    2.11 从XcodeiPhone:Organizer Interface 54 2.11.1 Projects and Sources列表 54 2.11.2 Devices列表 55 2.11.3 iPhone Development Tools列表 55 2.11.4 Summary选项卡 55 2.11.5 Console选项卡 56 ...
  •  (4)启用启动日志:启动Windows XP,同时将由系统加载的所有驱动程序 和服务记录文件中。文件名为ntbtlog.txt,位于Windir目录中。该日志对 确定系统启动问题的准确原因很有用。  (5)启用VGA模式:使用基本...
  • 用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后以goto end将程序跳end标号处,然后程序将显示good bye,...
  • tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exec:server.exe 登陆后,将“IP”的server.exe下载目标主机c:server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送...
  • bug report

    2020-12-02 02:24:18
    必须包含.exe.如果要运行批处理.bat, 可以使用 cmd.exe /c或者cmd.exe /k. * 2. 所有的路径必须要是C:\Windows这样的双斜杠分割,这是json的字符串规定。 * 3. 所有的路径可以是相对路径,比如 .......

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

任何磁盘都必须加载到