自动编码器输出的数据库设计

问题描述 投票:2回答:2

我有一个图像数据集,我正在运行一个自动编码器,在长度为32的浮点数向量中对它们进行编码。要存储这些浮点值,我应该创建32个命名列,或者只是将它放在文本的BLOB中并解析此文本什么时候需要?使用前者与后者有什么好处?

数据示例:

key:72
value:[1.8609547680625838e-8,2.9573993032272483e-8,0.9999995231628418,0.03153182193636894,
       0.000003173188815708272,0.9999996423721313,0.8707512617111206,0.00005991563375573605,
       0.9999498128890991,0.9999982118606567,0.947956383228302,0.9749470353126526,
       0.9999994039535522,5.490094281412894e-7,0.9999681711196899,0.9958689212799072]

我总是会检索给定图像ID的所有值。

mysql database database-design autoencoder
2个回答
1
投票

表没有性能。查询具有性能。您必须考虑使数据库存储具有最佳性能,必须在针对数据运行的查询类型的上下文中进行。

  • 如果您始终将整个值数组作为单个实体进行查询,则使用blob。
  • 如果您总是在数组的第N个位置查询特定值,那么可能一系列列是好的。
  • 如果要使用SQL对数据执行MIN(),MAX(),AVG()等聚合查询,请创建第二个表,每行一个浮点值。

在知道需要运行的查询之前,您无法做出此决定。


1
投票

通常你会使用mapping table来映射哪些值属于哪个向量。

但是因为你提供的array是一个值的一部分,一个向量,并且因为使用mapping table需要在每个向量的表中添加32行,所以最好将其保存为TEXT/BLOB

© www.soinside.com 2019 - 2024. All rights reserved.