标签: triplet

类似STL对的三胞胎类 - 我自己动手吗?

我想使用一个三元组类,尽可能与std :: pair类似.STL似乎没有.我不想使用太重的东西,比如Boost.是否有一些有用的FOSS非限制性许可三联类可以从某个地方解除?我应该自己动手吗?我应该完全做些什么吗?

编辑:关于std::tuple......

特定于三胞胎的课程真的没有益处吗?我的意思是,有了元组,我做不到

template<typename T1, typename T2, typename T3> std::tuple<T1, T2, T3> triple;
Run Code Online (Sandbox Code Playgroud)

我可以吗?我不是必须键入dede个人类型组合三元组吗?

c++ c++-standard-library stdtuple triplet

27
推荐指数
3
解决办法
2万
查看次数

找到增加的三元组,使得和小于或等于k

这个问题的更容易或更流行的版本是找到具有给定总和的三元组.但是这个提出了额外的条件.找到未排序数组中的所有三元组

d[i]+d[j]+d[k] <= t;   & d[i]<d[j]<d[k] where i<j<k
Run Code Online (Sandbox Code Playgroud)

是问题第一部分的解决方案.但有人可以建议我们如何扩展它以包括第二个条件.我能想到的唯一方法是在排序时执行自定义数据结构以存储原始元素索引以及数字.然后检查索引是否符合所包含链接中提到的算法返回的每个三元组的顺序.

java algorithm triplet

7
推荐指数
1
解决办法
1633
查看次数

将Eigen矩阵转换为Triplet形式的C++

我认为Eigen使用压缩方法来存储稀疏矩阵.有没有什么方法可以从std :: vectors中提取特征稀疏矩阵的Triplet格式向量?

谢谢.

更多信息(三元组格式的示例)矩阵的三元组格式:

A=
3 0 4 0
0 0 1 0
0 2 0 5
4 0 0 0

i = 1 1 2 3 3 4  // row
j = 1 3 3 2 4 1 // column
S = 3 4 1 2 5 4  // values
Run Code Online (Sandbox Code Playgroud)

c++ matrix sparse-matrix eigen triplet

6
推荐指数
2
解决办法
2766
查看次数

如何确定卷积神经网络中三元组损失的准确性

Triplet网络(受“Siamese 网络”启发)由同一前馈网络的 3 个实例(具有共享参数)组成。当输入 3 个样本时,网络输出 2 个中间值 - 其中两个输入的嵌入表示与第三个输入的表示之间的 L2(欧几里德)距离。

我使用三对图像来馈送网络(x = 锚图像,标准图像,x+ = 正图像,包含与 x 相同对象的图像 - 实际上,x+ 与 x 属于同一类x- = 负图像image与 x 具有不同类别的图像

在此输入图像描述

我正在使用此处描述的三元组损失成本函数。

如何确定网络的准确性?

neural-network triplet conv-neural-network

6
推荐指数
1
解决办法
7342
查看次数

使用三元组损失连体神经网络模型进行评估(model.evaluate)-tensorflow

我训练了一个使用三重态损失的连体神经网络。这很痛苦,但我想我做到了。然而,我很难理解如何用这个模型进行评估。

国家神经网络:

def triplet_loss(y_true, y_pred):
    margin = K.constant(1)
    return K.mean(K.maximum(K.constant(0), K.square(y_pred[:,0]) - 0.5*(K.square(y_pred[:,1])+K.square(y_pred[:,2])) + margin))

def euclidean_distance(vects):
    x, y = vects
    return K.sqrt(K.maximum(K.sum(K.square(x - y), axis=1, keepdims=True), K.epsilon()))
Run Code Online (Sandbox Code Playgroud)
anchor_input = Input((max_len, ), name='anchor_input')
positive_input = Input((max_len, ), name='positive_input')
negative_input = Input((max_len, ), name='negative_input')

Shared_DNN = create_base_network(embedding_dim = EMBEDDING_DIM, max_len=MAX_LEN, embed_matrix=embed_matrix)

encoded_anchor = Shared_DNN(anchor_input)
encoded_positive = Shared_DNN(positive_input)
encoded_negative = Shared_DNN(negative_input)

positive_dist = Lambda(euclidean_distance, name='pos_dist')([encoded_anchor, encoded_positive])
negative_dist = Lambda(euclidean_distance, name='neg_dist')([encoded_anchor, encoded_negative])
tertiary_dist = Lambda(euclidean_distance, name='ter_dist')([encoded_positive, encoded_negative])

stacked_dists = Lambda(lambda vects: K.stack(vects, axis=1), …
Run Code Online (Sandbox Code Playgroud)

triplet deep-learning keras tensorflow siamese-network

6
推荐指数
1
解决办法
866
查看次数

Keras:批次内有正负样品的三重损失

https://arxiv.org/pdf/1703.07737.pdf中所建议的那样,我尝试重构我的Keras代码以对三胞胎使用“批处理硬”采样。

“核心思想是通过对P个类别(人的身份)进行随机抽样,然后对每个类别(人)的K个图像进行随机抽样,从而形成一批PK图像。现在,对于批次中的每个样本a,我们在形成三元组以计算损失时,可以在批次中选择最硬的正样本和最硬的负样本,我们将其称为“硬批次”

因此,目前我有一个Python生成器(与Keras中的model.fit_generator配合使用),可以在CPU上生成批处理。然后,可以在GPU上完成通过模型的实际前向和后向传递。

但是,如何使这种方法适合“硬分批”方法?生成器对64个图像进行采样,为此应形成64个三元组。首先,需要向前通过以获取当前模型的64个嵌入。

    embedding_model = Model(inputs = input_image, outputs = embedding)
Run Code Online (Sandbox Code Playgroud)

但是随后必须从64个嵌入中选择最难的正数和最难的负数以形成三元组。然后可以计算出损失

    anchor = Input(input_shape, name='anchor')
    positive = Input(input_shape, name='positive')
    negative = Input(input_shape, name='negative')

    f_anchor = embedding_model(anchor)
    f_pos = embedding_model(pos)
    f_neg = embedding_model(neg)

    triplet_model = Model(inputs = [anchor, positive, negative], outputs=[f_anchor, f_pos, f_neg])
Run Code Online (Sandbox Code Playgroud)

并且可以通过定义三元组损失函数来训练此Triplet_model。但是,Keras是否可以使用fit_generator和'Batch Hard'方法?还是如何从批处理中的其他样本获取对嵌入的访问?

编辑:使用keras.layers.Lambda,我可以定义一个自己的层,以输入(batch_size,height,width,3)和输出(batch_size,3,height,width,3)创建三元组,但是我还需要访问id的某个位置。这在图层内可能吗?

triplet keras

5
推荐指数
0
解决办法
1670
查看次数

如何查询主机三元组的 rustc?

使用 gcc 时,我可以通过运行获得 gcc 认为是我主机的三元组gcc -dumpmachine。在我当前的系统上,这给了我x86_64-linux-gnu.

我怎样才能稳定rustc打印我的主机三重?(x86_64-unknown-linux-gnu在这种情况下)

rustc的文档似乎不包含除了--print和之外的任何相关内容--version。两者似乎都没有产生主机目标三元组。

澄清:到目前为止,每晚给出了两个答案,我想强调这个问题专门针对稳定的 rustc编译器。

cross-compiling rust triplet

5
推荐指数
1
解决办法
418
查看次数