(1)、TensorFlow的检查点的含义?
保存模型并不限于在训练之后,在训练之中也需要保存,因为TensorFlow训练模型时难免会出现中断的情况。我们自然希望能够将辛苦得到的中间参数保留下来,否则下次又要重新开始。这种在训练中保存模型,习惯上称之为保存检查点。
(2)、F1-score的计算方式?
F1分数(F1-score)是分类问题的一个衡量指标。一些多分类问题的机器学习竞赛,常常将F1-score作为最终测评的方法。它是精确率和召回率的调和平均数,最大为1,最小为0。
此外还有F2分数和F0.5分数。F1分数认为召回率和精确率同等重要,F2分数认为召回率的重要程度是精确率的2倍,而F0.5分数认为召回率的重要程度是精确率的一半。
(3)、神经网络中异或问题的含义?
异或运算直观来说就是如果两个输入的符号相同时(同时为正或者同时为负)则输出为0,否则(一个正一个负)输出为1。
(4)、为什么需要使用验证集?
使用测试数据来选取参数可能会导致神经网络过度拟合测试数据,从而失去对未知数据的判断能力。因为一个神经网络模型的最终目标是对未知数据提供判断,所以为了评估模型在未知数据上的效果,需要保证测试数据在训练过程中是不可见的。这有这样才能保证通过测试数据评估出来的效果和在真实应用场景下模型对未知数据预判的效果是接近的。于是,为了评测神经网络模型在不同参数下的效果,一般会从训练数据中抽取一部分作为验证数据。使用验证数据就可以判断不同参数取值下模型的表现。除了使用验证数据集,还可以采用交叉验证(cross validation)的方式来验证模型效果。但因为神经网络训练时间本身就比较长,采用cross validation会花费大量时间。所以在海量数据集的情况下,一般会更多的采用验证数据集的形式来评测模型的效果。
(5)、TensorFlow的模型文件?
模型保存后会生成三个文件,第一个文件为model.ckpt.meta,它保存了TensorFlow计算图的结构,可以简单理解为神经网络的网络结构,第二个文件为model.ckpt,这个文件保存了TensorFlow程序中每一个变量的取值。最后一个文件为ckeckpoint文件,这个文件中保存了一个目录下所有的模型文件列表。
(6)、TensorFlow模型持久化的数据格式
TensorFlow通过元图(MetaGraph)来记录计算图中节点的信息以及运行计算图中节点所需要的元数据。TensorFlow中元图是由MetaGraphDef Protocol Buffer定义的。MetaGraphDef中的内容就构成了TensorFlow持久化时的第一个文件。meta_info_def属性是通过MetaInfoDef定义的,它记录了TensorFlow计算图中的元数据以及TensorFlow程序中所有使用到的运算方法的信息。graph_def属性主要记录了TensorFlow计算图上的节点信息。TensorFlow计算图的每一个节点对应了TensorFlow程序中的一个运算。因为在meta_info_def属性中已经包含了所有运算的具体信息,所以graph_def属性值关注运算的连接结构。graph_def属性是通过GraphDef Protocol Buffer定义的,GraphDef主要包含了一个NodeDef类型的列表。saver_def属性中记录了持久化模型时需要用到的参数,比如保存到文件的文件名、保存操作和加载操作的名称以及保存频率、清除历史记录等。在TensorFlow的计算图(tf.Graph)中可以维护不同的集合,而维护这些集合的底层实现就是通过collection_def这个属性。collection_def属性是一个从集合名称到集合内容的映射,其中集合名称为字符串,而集合内容为CollectionDef Protocol Buffer。