C3D实现ucf101人体行为识别代码知识总结

C3D实现ucf101人体行为识别代码知识总结

    with tf.name_scope('accuracy'):
    accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.argmax(logits, 1), tf.argmax(batch_labels, 1)), np.float32))
    tf.summary.scalar('accuracy', accuracy)
  1. tf.argmax(logits, 1)是按行取出logits矩阵中最大值对应的索引(index)值,最后会生成一个向量
    0是按照列取出最大值的索引,若第一个参数为向量,最后的值为一个数值
  2. tf.equal(A,B)是比较两个两个向量对应元素是否相等,相等为1,反之为0,生成一个和向量长度一样的元组,看到资料用的是小括号
  3. tf.cast(data_1,dtype)将data_1(可以为int,bool,float,python列表,python元组【输出转换后的数据,原数据不变】)转换成指定dtype类型 这里强制转化成浮点型
  4. tf.reduce_mean(),求均值
  5. with tf.name_scope(‘loss’): 定义一块名为loss的区域,并在其中工作,只是规定了对象和操作属于哪个区域,但这并不意味着他们的作用域也只限于该区域(with的这种写法很容易让人产生这种误会),不要将其和“全局变量、局部变量”的概念搞混淆,两者完全不是一回事。在name_scope中定义的对象,从被定义的位置开始,直到后来某个地方对该对象重新定义,中间任何地方都可以使用该对象。本质上name_scope只对对象的name属性进行圈定,并不会对其作用域产生任何影响。这就好比甲、乙、丙、丁属于陈家,这里“陈家”就是一个name_scope划定的区域,虽然他们只属于陈家,但他们依然可以去全世界的任何地方,并不会只将他们限制在陈家范围。
  6. tf.summary.scalar(
    name,
    tensor,
    collections=None,
    family=None)
    name:生成的节点的名称。也将作为TensorBoard中的系列名称。
    tensor:包含单个值的实数数值型张量。
    collections:图表集合键的可选列表。新summary op将添加到这些集合中。默认为[GraphKeys.SUMMARIES]。
    family: 可选的; 如果提供,则用作摘要标记名称的前缀,该名称用于控制在Tensorboard上显示的选项卡名称。

返回:
string类型的标量Tensor。其中包含一个Summary协议缓冲区,一般用第一和第二两个参数

你可能感兴趣的:(C3D实现ucf101人体行为识别代码知识总结)