问题标签 [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.
machine-learning - 我有 2 个文件夹。一个图像在 1 个文件夹中,另一个图像在另一个文件夹中。我必须比较两张图片并找出不同之处
我有 2 个文件夹。一个图像在 1 个文件夹中,另一个图像在另一个文件夹中。我必须比较两个图像并找到不同之处,但代码是随机文件夹编写的。
我从 GitHub 获取了这段代码,当我尝试比较两个图像的差异时,它是随机选择图像。输入文件夹是 2。一个图像应该在一个文件夹中,另一个图像应该在另一个文件夹中。当我尝试测试它时,它会在同一张图像上进行测试,有时我的意思是它没有检查另一个文件夹中的另一个图像。
python - UnimplementedError:不支持将字符串转换为浮点数
UnimplementedError Traceback(最近一次调用最后一次)
UnimplementedError:发现 2 个根本错误。(0) 未实现:不支持将字符串转换为浮点数 [[node functional_11/Cast (defined at :1)]] (1) 已取消:函数在启动前已取消 0 次成功操作。0 派生错误被忽略。[操作:__inference_train_function_47870]
函数调用栈:train_function -> train_function
这是我的代码。知道我在做什么错吗?
python - 如何配对另一个numpy数组中大致相同的矩阵
背景
我有以下代码,它就像一个魅力,用于为连体网络配对:
好的,此代码通过为 MNIST 数据集中的每个图像选择对来工作。它通过随机选择同一类(标签)的另一张图像和不同类(标签)的另一个补丁来制作另一对来为该图像构建一对。通过运行代码,返回的两个矩阵的最终形状为:
我的数据集
我想对另一个数据集做一些不同的事情。假设我有另一个 5600 个 RGB 图像的数据集,尺寸为 28x28x3,如下所示:
我有另一个数组,我们称之为labels2,它有 8 个标签用于所有 5600 个图像,每个标签有 700 个图像,如下所示:
我想做什么
我的数据集不是 MNIST 数据集,因此来自同一类的图像不太相似。我想以以下方式构建大致相同的对:
对于我的数据集中的每个图像,我想要执行以下操作:
1.1。通过 MSE 计算该图像与数据集中所有其他图像之间的相似度。
1.2 对于与该图像具有相同标签的图像的 MSE 集合,选择具有 7 个最小 MSE 的图像并构建 7 对,包含该图像加上 7 个最接近的 MSE 图像。这些对代表我的 Siamese Network 的同一类的图像。
1.3 对于具有不同标签的图像的 MSE 集合,从该图像中选择,对于每个不同的标签,只有一个具有最小 MSE 的图像。因此,由于有 7 个标签与该图像的标签不同,因此该图像还有 7 个对。
由于我的数据集有 5600 张28x28x3的图像,并且对于每张图像,我构建了 14 对(7 个相同的类,7 个不同的类)我期望有一个大小为 (78400, 2, 28, 28, 3)
我做了什么
我有以下代码完全符合我的要求:
我的问题
我的代码的问题在于,当我为图像编号 2200 运行对构造时,它只是冻结了我的计算机,我试图在每个循环之后清理变量,如您在上面的代码中看到的那样(del image_to_pair,currentImage,label,mse_that_class ,imgs,indices_sorted,idxs,mse_all)。问题是,一个 (120000, 2, 28, 28) pairImages 矩阵并不难构建,但一个 (78400,2,28,28,3) 是。所以:
- 这是一个可能的内存问题吗?
- 我可以清理代码中的更多变量以使其正常工作吗?
- 我是否应该考虑我的 pairImages 矩阵的最后一个维度,使其具有比第一个示例更小的维度,从而可以工作?
- 有没有更简单的方法来解决我的问题?
您可以在此处找到功能代码和输入矩阵
numpy - 如何使用 Keras 将输入和输出数据拟合到连体网络中?
我正在尝试使用野外标记的面孔(Kaggle 中的 LFW 数据集)来实现人脸识别连体网络。
训练数据图像对以以下格式存储:
ndarray[ndarray[image1,image2],ndarray[image1,image2]...] 等等。图像为 224*224 大小的 RGB 通道。
有 2200 个训练对,1100 个匹配图像对和 1100 个不匹配图像对。此外,还有 1000 个测试对,其中 500 个匹配图像对和 500 个不匹配图像对。
我设计了具有 VGG-16 架构的连体网络。模型总结如下:
但是,当我尝试为数据拟合模型时,出现此错误:
网络的代码是:
在下面的代码片段中,train_nparr_pairs 有 2200 个匹配和不匹配的图像,而 test_nparr_pairs 有 1000 个匹配和不匹配的图像。train_labels 和 test_labels 有 0 和 1 基于正对和负对。
有什么我在这里想念的吗?
tensorflow - 形状与 vgg16 keras 不匹配:预期 ndim=4,发现 ndim=2,收到形状 [无,无]
在尝试学习 keras 和深度学习时,我想创建一个图像抠图算法,该算法使用类似于修改后的自动编码器的架构,它需要两个图像输入(一个源图像和一个用户生成的 trimap)并产生一个图像输出(图像前景的 alpha 值)。编码器部分(两个输入)是使用预训练的 VGG16 进行简单的特征提取。我想使用低分辨率 alphamatting.com 数据集训练解码器。
运行附加的代码会产生错误:
ValueError: Input 0 of layer block1_conv1 is incompatible with the layer: expected ndim=4, found ndim=2. Full shape received: [None, None]
我无法理解这个错误。我验证了我的 twin_gen 闭包正在为两个输入生成形状 (22, 256,256,3) 的图像批次,所以我猜问题是我以某种方式创建了错误的模型,但我看不出错误在哪里. 任何人都可以帮助阐明我如何看到这个错误吗?
python - 使用两个输入作为字符串构建连体网络
我正在尝试构建一个接收两个输入字符串的连体网络。我正在使用字符串类型,因为我加载了一个我想要训练的 USE 层。
当我尝试
如果我尝试使用浮点数,模型可以正确看到两个输入。
知道发生了什么吗?我确定这与输入的形状有关