假设我有一个包含不同列的表。这些列具有不同的类型。例如:
col1, col2, col3
1.1 "hello" 1
2.2 "world" 2
...
此处col1
是float
或double
,col2
是string
,而col3
是int
。
现在,我想使用C ++将这些数据存储在hdf5文件中。我该怎么办?
我已经找到this post,并且对Python有相同的问题。但是我无法弄清楚如何在C ++中执行此操作,因为据我发现,您必须为整个数据集指定类型。
修改: 有没有一种方法可以让一列包含数组,比方说整数数组?例如:
col1, col2, col3, col4
1.1 "hello" 1 {1, 3}
2.2 "world" 2 {1, 2, 3}
...
答案 0 :(得分:0)
请查看HDFql,因为它可以减轻处理HDF5复合数据集的低级详细信息。在C ++中使用HDFql,您的问题可以通过以下方式解决:
import tensorflow as tf
import tensorflow_addons as tfa
optimizer = tfa.optimizers.MovingAverage(Adam(learning_rate=5e-5))
loss_obj = tf.keras.losses.CategoricalCrossentropy()
@tf.function
def train_step(inputs, outputs):
with tf.GradientTape() as tape:
start, end = model([inputs[0], inputs[1], inputs[2]], training=True)
start_truth, end_truth = tf.squeeze(outputs[0]), tf.squeeze(outputs[1])
start_loss = loss_obj(start_truth, start)
end_loss = loss_obj(end_truth, end)
total_loss = start_loss + end_loss
model_gradients = tape.gradient(total_loss, model.trainable_variables)
optimizer.apply_gradients(zip(model_gradients, model.trainable_variables))
del tape
return total_loss, start_loss, end_loss
(可选)您可以使数据集在其第一维上可扩展(通过声明其大小不受限制),然后写一行,以一个单位扩展维,写另一行,以一个单位扩展维,依此类推...
可以在reference manual中找到有关如何使用HDFql的其他详细信息和示例。