度量学习层特斯拉斯

tf-simple-metric-learning的Python项目详细描述


简单的度量学习via特斯拉斯在

该软件包仅提供了以下几个度量学习损失的指标

  • 弧面
  • 阿达科斯
  • 圆圈

我深受PyTorch Metric Learning的启发。在

安装

$ pip install tf-simple-metric-learning

使用

提供的层通过tf.keras.layers.LayerAPI实现,启用

^{pr2}$

示例笔记本在examples目录中。实现CircleLossCL(Class level label version)EfficientNet的顶层,并对其进行Cars196 dataset的培训

importtensorflowastffromtf_simple_metric_learning.layersimportArcFace,AdaCos,CircleLossCLinputs=tf.keras.layers.Input([*IMAGE_SIZE,3],dtype=tf.uint8)x=tf.cast(inputs,dtype=tf.float32)x=tf.keras.applications.efficientnet.preprocess_input(x)net=tf.keras.applications.EfficientNetB0(include_top=False,weights='imagenet',pooling='avg')embeds=net(x)labels=tf.keras.layers.Input([],dtype=tf.int32)labels_onehot=tf.one_hot(labels,depth=num_classes)# Create metric learning layer# metric_layer = ArcFace(num_classes=num_classes, margin=0.5, scale=64)# metric_layer = AdaCos(num_classes=num_classes)metric_layer=CircleLossCL(num_classes=num_classes,margin=0.25,scale=256)logits=metric_layer([embeds,labels_onehot])model=tf.keras.Model(inputs=[inputs,labels],outputs=logits)model.summary()

请注意,您应该在培训中将标签作为输入输入输入输入到模型中,因为这些层需要标签来转发。在

在评估或预测中,上述模型需要图像和标签,但在这些度量学习层中忽略了标签。我们只需要对目标图像使用虚拟标签(忽略),因为我们无法在评估或预测中访问标签。在

参考文献

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
序列化反序列化java。awt。颜色>java。木卫一。InvalidClassException   java禁用多个日期范围jDateChooser   java为什么我的特例apper会被扔进泽西/灰熊?   JavaIntelliJ比较两个覆盖率数据   java什么是servletsdefault。你怎么办?   单击几下libgdx后java按钮没有响应   使用java将字符串转换为JSONArray   文件系统在java中刷新fileSystemViewer   java如何在hibernate中避免脏检查   java奇怪的问题,带有分号和“无法解决…”   java将值从子面板传递到父面板   HTML JTextPane CSS的Java FontSizeAction   java文件代码神秘地变成了一堆(0000)