gpt4 book ai didi

python - 我如何创建一个继承自 tf.Tensor 的新类?

转载 作者:行者123 更新时间:2023-12-03 23:47:32 25 4
gpt4 key购买 nike

我想创建一个新类,它基本上是一个数组,但具有一些额外的属性。

具体来说,我想编写一个基于 Tensorflow 对象的类来描述时间序列数据。因此,它将具有关联的时间间隔 (delta_t) 和时间向量
我用 sample_times 制作的属性(property)。

在 python/numpy 中,我执行以下操作

import numpy as np
class TimeSeries(object):
def __init__(self, initial_array, delta_t):
self.initial_array = initial_array
self.delta_t = delta_t

@property
def sample_times(self):
return np.arange(self.initial_array.shape[0]) * self.delta_t

是否可以通过从 tf.Tensor 继承来做类似的事情?
这样做的原因是我相信它会让生活变得更简单
对这些我可以利用的 TimeSeries 对象进行分析
各种 tensorflow 的东西,比如 tf.function装饰器。

我对最小工作示例的基本尝试如下,只是尝试成为 tf.Tensor 的子类。
import tensorflow as tf

class TFTimeSeries(tf.Tensor):
def __init__(self):
super().__init__()

tf_ts = TFTimeSeries()

实例化 TFTimeSeries 时出现以下错误
TypeError: __init__() missing 3 required positional arguments: 'op', 'value_index', and 'dtype'

dtype 很容易,但另外两个:'op' 和 'value_index' 我不知道该怎么做。

我应该说,我对 tensorflow 的了解一点也不高深,如果对此有任何帮助,我将不胜感激!

编辑:

嗨@Filippo Grazioli,感谢您的回答!我认为这是最好的前进方式。在对我的代码设计进行了更多思考之后,我认为它并不像我想的那样非常符合 Tensorflow。因此,创建一个属性为张量的类更有意义。

我现在将其标记为已回答。

最佳答案

您尚未将 op、value_index 和 dtype 作为 TFTimeSeries 的参数传递当您实例化 tf_ts 对象时。

如果你尝试实例化 tf.Tensor() 也会抛出同样的错误以同样的方式。

关于如何实现您的 TFTimeSeries类(class),tf.Variabletf.costant可能是有趣的类(class)。

这是他们的文档:
tf.Variable , tf.costant

这是一个问题,其中解释了它们的差异:
TensorFlow Variables and Constants

我不确定我是否正确理解您需要做什么,但这可能是一个起点:

import tensorflow as tf  
import numpy as np

class TimeSeries(object):
def __init__(self, initial_array, dt):
self.tensor = tf.Variable(initial_array, dtype=tf.float32)
self.dt = dt
self.initial_array = initial_array

def sample_times(self):
self.tensor = tf.Variable(np.arange(self.initial_array.shape[0]) * self.dt, dtype=tf.float32)

关于python - 我如何创建一个继承自 tf.Tensor 的新类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61734803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com