代码之家  ›  专栏  ›  技术社区  ›  The Rhyno

张量内容的逻辑运算

  •  0
  • The Rhyno  · 技术社区  · 6 年前

    我有一个名为“datastate”的shape(?,10)这是用tensorflow(所有张量)中的10个批次样本的结果填充的。换句话说,批处理大小为256时,将填充10个大小为256的不同张量。

    在下面的伪代码中…

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

    我接下来要做的是定义一个变量,比如“datastate_change”,它将确定batch_results的第i条记录是否与batch_results的第(i-1)条记录发生了更改。如果pandas风格的语法有效的话,这可能看起来像下面这样…但我不清楚如何在赛斯跑的时候在tf里面做这个。

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

    更具体地说,如果批处理结果的单个实例是[1,1,1,0,1],我希望datastate[1]=[1,1,1,0,1]和datastate\u change[1]=[1,0,0,-1,1]

    1 回复  |  直到 6 年前
        1
  •  0
  •   The Rhyno    6 年前

    我自己找到了一个令人满意的答案-关键是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])