对张量内容的逻辑运算

Logical operation on the contents of a tensor

我有一个名为 'datastate' 的列表,形状为 (?,10),其中填充了 tensorflow 中 10 个批次样本的结果(所有张量)。换句话说,批处理大小为 256,这将填充 10 个大小为 256 的不同张量。

在下面的伪代码中....

datastate = {}

for sample in range(num_samples):
    datastate[sample] = batch_results

接下来我想做的是定义一个像 'datastate_change' 这样的变量,它将确定 batch_results 的第 i 条记录与batch_results。如果 Pandas 样式语法有效,这可能类似于以下内容……但我不清楚在 sess.run 期间如何在 tf 内部执行此操作。

for sample in range(num_samples):
    datastate[sample] = batch_results
    datastate_change[sample] = batch_results - batch_results.shift(1)

更具体一点,如果 batch_results 的单个实例是 [1,1,1,0,1] 我想要 datastate[1] = [1,1,1 ,0,1] 和 datastate_change[1] = [1,0,0,-1,1]

我自己找到了一个满意的答案 - 关键是 numpy 是比 pandas 更好的模拟插件...... 首先,我创建了一个我的数据状态的副本,它在顶部用零填充 然后我切掉这个副本的底行 最后我减去两者。

top_paddings = tf.constant([[1, 0]]) #New tensor with the 'top' being zeros
top_padded_datastate_[sample] = tf.pad(datastate[sample], top_paddings, "CONSTANT")
top_padded_datastate[sample] = top_padded_datastate_[sample][:-1]
datastate_changes[sample] = tf.subtract(datastate[sample], top_padded_datastate[sample])