Python 如何在Tensorflow批次中将两个张量捆绑在一起?
我想创建一个损失,它是在重建X和tensorflow中标签y的函数的同时产生的。两者需要匹配,我正在使用Python 如何在Tensorflow批次中将两个张量捆绑在一起?,python,tensorflow,tensorflow-datasets,Python,Tensorflow,Tensorflow Datasets,我想创建一个损失,它是在重建X和tensorflow中标签y的函数的同时产生的。两者需要匹配,我正在使用tf.data.Dataset.batch()和渐变带,而不是像您通常使用的那样直接调用.fit(,batch=number)。为了解决这个问题,我想到了两种方法: 将X和Y捆绑为一个元组,并将该元组转换为tensorflow数据集,然后使用.batch() 只需将y固定在X张量的末端,然后使用.batch() 有没有标准的方法来实现这种事情?我不确定上述两种方法是否有问题,但第二种方法似乎至
tf.data.Dataset.batch()
和渐变带,而不是像您通常使用的那样直接调用.fit(,batch=number)
。为了解决这个问题,我想到了两种方法:
.batch()
.batch()
train_dataset = (tf.data.Dataset.from_tensor_slices(train_dataset)
.shuffle(len(training_ind))
.batch(bsize))
我设想的是:
train_x_dataset = tf.data.Dataset.from_tensor_slices(train_x)
train_y_dataset = tf.data.Dataset.from_tensor_slices(train_y)
train_datset = (tf.data.Dataset((train_x_dataset,train_y_dataset))
.shuffle(len(training_ind))
.batch(bsize))
for train_x, train_y in train_dataset:
loss(train_step(model, train_x, train_y, optimizer))
这比我想象的要容易得多。基本上,我已经有了将两个数据集作为元组传递的基本想法,唯一的区别是在调用
时必须传递这两个数据集。然后访问元素就和预期的差不多了
train_dataset = tf.data.Dataset.from_tensor_slices((train_x,train_y))
train_dataset = (train_dataset
.shuffle(n_obs)
.batch(bsize))
for train_x, train_y in train_dataset:
loss(train_step(model, train_x, train_y, optimizer))
您可以使用来同时迭代两个数据集。这就是你所需要的吗?@jakub这看起来和我想做的差不多(祈求好运,它与批处理兼容)。我会玩一会儿,看看它是否管用,谢谢!