问题标签 [siamese-network]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
47 浏览

tensorflow - 为什么 Siamese Network 中的验证准确率没有超过 0.5,但训练准确率却变得 >0.9?

我试图在这个数据集中实现连体网络。正如我在标题中所写,无论我如何更改代码,验证准确度在 6-7 个 epoch 内将达到 0.9,但测试准确度或损失并没有提高。我应该怎么办?

生成我的网络的代码:

负极和正极对交替排列。我正在训练 8000 张图像。我尝试了 40000 张图像,但仍然得到相同的结果我更改了层数、每层中的单元数、数据集的大小,将彩色图像转换为灰度,以便我可以将更多图像放入我的 ram 中进行训练,更改了学习率等,但结果是一样的。该模型训练良好,但验证准确率始终在 0.5 左右。我应该怎么办?

0 投票
1 回答
46 浏览

python - 暹罗网络中的欧几里得距离

我遇到了一个暹罗网络的代码,其中欧几里得距离计算为:

在这段代码中,为什么我们取 sum_square 和 epsilon 的最大值?

0 投票
0 回答
43 浏览

deep-learning - 用于人脸识别的 Triplet Loss 不适用于测试数据集

我在 Siamese 网络上使用 Triplet Loss 创建了一个人脸识别模型。

  1. 该模型在使用小数据集进行训练时过拟合。(看起来模型工作正常)
  2. 损失正在完美减少。

问题是当我在测试数据上使用这个模型时它不能正常工作。也许问题出在训练数据集上。我的训练数据的总大小是 11,000,其中只有 2000 - 2500 是唯一图像。单个数据包含(锚、正、负)图像。

我可以做些什么来提高模型的性能吗?(请帮帮我)

损失类

0 投票
1 回答
29 浏览

python - 第一个 epoch 后训练损失显着减少,验证损失不稳定

我使用 EfficientNet-B0 作为连体网络中的子网,并使用对比损失作为图像相似性任务的损失函数。我的数据集非常大(27550 张图像用于训练),有 2 个类。在第一个 epoch 之后,训练损失显着减少,而验证损失不稳定。过拟合能这么早发生吗?还是我的数据有问题而令人困惑?这是我用 100 个 epoch 训练我的模型后得到的图表

0 投票
1 回答
25 浏览

pytorch - print(target.size()s_history) SyntaxError: 无效的语法

SyntaxError:无效的语法

0 投票
0 回答
10 浏览

deep-learning - 连体网络评估不比较图像,而是比较嵌入向量

我有一个关于在连体网络上测试图像对的问题。我想训练一个连体网络,以便我可以将嵌入向量存储在内存中,这样我就不必与数据集中的所有图像进行比较,如果数据集很大,这需要时间。是否有可能做到这一点?如果是,如何。

如果有人知道这种方法的明确解释/实现,请分享描述与我的要求类似的工作的链接或已发表的论文。

0 投票
1 回答
46 浏览

tensorflow - 如何在 Colab 中免费训练大型数据集

我必须在 google colab 免费上为我的面部验证项目训练 70,000 张图像。首先,它卡在第一个 epoch,然后即使它开始训练,一段时间后它也会抛出 RAM 错误。我使用的代码是:

如果我必须对我的数据集进行小批量处理以将其放入 colab 的 GPU 内存中,那么我该怎么做呢?另外,我想训练整个数据集,因为它包含 5 个不同人的图像作为锚点和正例。

0 投票
0 回答
51 浏览

python - RuntimeError:张量 a (2) 的大小必须与非单维 2 的张量 b (100) 的大小相匹配

在 _call_impl(self, *input, **kwargs) 1100 如果不是 (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks 1101 or _global_forward_hooks or _global_forward_pre_hooks): -> 1102 return forward_call(*input, **kwargs) 1103 # 使用jit时不要调用函数 1104 full_backward_hooks, non_full_backward_hooks = [], []

0 投票
1 回答
19 浏览

python - 如何使用 Keras 构建字符级连体网络

我正在尝试使用 Keras 在字符级别上构建连体神经网络,以了解两个名称是否相似。

所以我的两个输入 X1X2是一个 3-D 矩阵:
X[number_of_cases, max_length_of_name, total_number_of_chars_in_DB]

在实际情况下:

  • number_of_cases = 5000
  • max_length_of_name = 50
  • total_number_of_chars_in_DB = 38

我有一个大小为y[number_of_cases]的输出二进制矩阵。

例如: print(X1[:3, :2])

将给出以下结果:

我使用以下代码来构建我的模型:

我收到以下错误:

使用不是符号张量的输入调用层 L1_distance。

我认为错误是我需要告诉 L1_distance 层使用前面两个 LSTM 层的输出,但我不知道该怎么做。

第二个问题是,即使在字符级网络的场景中,我是否必须在 LSTM 之前添加一个嵌入层?

谢谢你。

0 投票
0 回答
7 浏览

deep-learning - 如果我希望它输出数据关联的相似性分数,我的 Siamese LSTM 网络的架构应该如何?

我需要建立一个神经网络,允许计算被跟踪对象的两个轨迹(短轨迹)之间的相似性。如果两个 tracklet 对应于同一个对象,则此相似性必须很高。

我认为 LSTM 网络是解决这个问题的最佳网络之一。

在 Xingyu Wan等人的论文“An Online and Flexible Multi-Object Tracking Framework using Long Short-Term Memory”中。,提出了一个 Siamese LSTM 网络来解决这个问题。

对于每个 LSTM 单元,输入数据将是跟踪对象的图像和位置。

提出了 Siamese LSTM 网络来输出两个 tracklet 之间的关联概率

但是我不明白本文中使用了 LSTM 的哪些输出。似乎他们为每个 LSTM 网络使用了最后一个单元的两种状态,但这意味着我们使用过去保存的信息来比较两个轨迹(因为它来自最后一个 LSTM 单元的记忆)

在我看来这是一个问题,因为这意味着两个 tracklet 的结尾应该是相似的,但我实际上需要相似的(在同一对象的两个 tracklet 之间)是第一个 tracklet 的结尾和下一个 tracklet 的开头.

所以我想知道:

我们应该如何比较 LSTM 的输出?(我的意思是,我们应该使用哪些输出?以及如何以正确的方式融合它们以输出关联概率

先感谢您 :)

对不起我的英语我不是本地人