小编Joh*_*lum的帖子

如何执行不涉及重新拟合ARIMA模型的多步时差预测?

我已经有一个适合data[0:100]使用python 的时间序列数据(例如ex )的ARIMA(p,d,q)模型。我想forecast[100:120]使用此模型进行预测()。但是,考虑到我也拥有未来的真实数据(例如:)data[100:120],如何确保多步预测将我拥有的未来的真实数据考虑在内,而不是使用其预测的数据?

本质上,当进行预测时,我希望forecast[101]使用data[100]代替进行计算forecast[100]

我想避免在每个时间步都用更新的“历史记录”重新拟合整个ARIMA模型。

我适合ARIMAX模型,如下所示:

train, test = data[:100], data[100:]
ext_train, ext_test = external[:100], external[100:]
model = ARIMA(train, order=(p, d, q), exog=ext_train)
model_fit = model.fit(displ=False)
Run Code Online (Sandbox Code Playgroud)

现在,以下代码使我可以预测整个数据集(包括测试)的值

forecast = model_fit.predict(end=len(data)-1, exog=external, dynamic=False)
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,经过100步后,ARIMAX预测值会迅速收敛到长期平均值(如预期的那样,因为经过100步后,它仅使用预测值)。我想知道是否有办法提供“未来”的真实价值,以提供更好的在线预测。类似于以下内容:

forecast = model_fit.predict_fn(end = len(data)-1, exog=external, true=data, dynamic=False)
Run Code Online (Sandbox Code Playgroud)

我知道我总是可以通过以下方式不断调整ARIMAX模型

historical = train
historical_ext = ext_train
predictions = []

for t in range(len(test)):
    model = ARIMA(historical, order=(p,d,q), exog=historical_ext)
    model_fit = model.fit(disp=False)
    output = model_fit.forecast(exog=ext_test[t])[0]
    predictions.append(output)
    observed …
Run Code Online (Sandbox Code Playgroud)

python forecasting arima

6
推荐指数
2
解决办法
180
查看次数

在 TensorRT 上添加多重推理(无效资源句柄错误)

我正在尝试使用 Jetson Nano 在管道中运行两个推理。第一个推论是使用 MobileNet 和 TensorRT 进行对象检测。我的第一个推理的代码几乎是从AastaNV/TRT_Obj_Detection存储库复制的。唯一的区别是我更改了该代码,使其驻留在 Inference1 类中。

第二个推理作业使用第一个推理的输出来运行进一步分析。对于这个推论,我使用tensorflow(不是TensorRT,但我假设它是在后端调用的?)使用自定义模型。该模型是从.pb文件(冻结图)加载的。加载后,通过调用tensorflow的命令进行推理session.run()

如果我仅运行 Inference1 或 ONLY Inference2,则代码运行正常,没有任何错误。但是,当我通过管道传输它们时,出现错误[TensorRT] ERROR: cuda/caskConvolutionLayer.cpp (355) - Cuda Error in execute: 33 (invalid resource handle)

从我在日志中看到的情况来看,TensorRT 序列化图的加载没有任何问题。Tensorflow 也被导入并且它可以识别我的 GPU。从网上搜索我发现这个问题可能与CUDA Contexts有关?因此,我在下面展示了如何在下面的代码中设置 CUDA 上下文。create_cuda_context仅在 Inference1 类初始化期间调用一次。称为run_inference_for_single_image每次迭代。

代码:

def create_cuda_context(self):
    self.host_inputs, self.host_outputs = [], []
    self.cuda_inputs, self.cuda_outputs = [], []
    self.bindings = []
    self.stream = cuda.Stream()

    for binding in self.engine:
        size = trt.volume(self.engine.get_binding_shape(binding)) * self.engine.max_batch_size
        host_mem = cuda.pagelocked_empty(size, np.float32) …
Run Code Online (Sandbox Code Playgroud)

python pycuda tensorflow tensorrt nvidia-jetson

1
推荐指数
1
解决办法
5319
查看次数