首页 > 解决方案 > 张量流。Batch Tensor 修改一个条目(张量)

问题描述

我正在关注这个例子:https ://www.tensorflow.org/tutorials/structured_data/time_series 。

就我而言,我有一个传感器,每小时收集一次数据。在过去的几个月里,这个并不可靠,我丢失了一些数据。为解决此问题,已将这些值替换为以前的有效值。我得到了许多重复的值,我认为这就是我的 NN 无法预测任何东西的原因。我不想在创建数据集之前跳过错误的值,因为它会创建没有连续值的时间序列。

我想像示例中一样创建时间序列数据集,然后删除在数据中具有一定重复性的条目/输出(张量)或使用值 0 更新张量值。

def hasMultipleDuplicatedElements (mylist, multiplicity):

 return   Counter(mylist[:,0]).most_common(1)[0][1] >multiplicity

WindowGenerator.hasMultipleDuplicatedElements = hasMultipleDuplicatedElements

def dsCleanedRowsWithHighMultiplycity(self,ds,multiplicity):
  
   for batch in ds:
       dataBatch=batch.numpy()
       for j in range (len (dataBatch)):
            selectedDataBatch=dataBatch[j]

            indices = tf.constant([[j] for j in range(len(selectedDataBatch))])
            inputData =(selectedDataBatch[:self.input_width])
            labelData= (selectedDataBatch[self.input_width:])
            if ( hasMultipleDuplicatedElements(inputData,multiplicity)  or 
                             (  hasMultipleDuplicatedElements(labelData,multiplicity) )):
               #print(batch[j])
               tf.tensor_scatter_nd_update(batch[j], indices, 
                                  tf.zeros(shape=selectedDataBatch.shape,dtype=tf.float32), 
                                  name=None) 
               #print(batch[j])

    
    
WindowGenerator.dsCleanedOfRowsWithHighMultipliciy = dsCleanedOfRowsWithHighMultipliciy

def make_dataset(self, data):
  data = np.array(data, dtype=np.float32)
  ds = tf.keras.preprocessing.timeseries_dataset_from_array(
      data=data,
      targets=None,
      sequence_length=self.total_window_size,
      sequence_stride=1,
      shuffle=True,
      batch_size=32,)

  self.dsCleanedRowsWithHighMultiplycity(ds,10)

  ds = ds.map(self.split_window)

  return ds

数据集包含批次,每个批次有 32 个条目/输出(张量)。我扫描每个条目/输出以查找重复数据,至少 10 次。我设法发现了这些条目并使用 tf.tensor_scatter_nd_update 创建了一个的张量,但我想要更新批处理中的原始张量。

如果有办法从批次中删除错误的张量,这也是一个可以接受的解决方案。

提前致谢!

标签: pythontensorflowforecastingbatch-updates

解决方案


推荐阅读