明月小仙 发表于 2020-5-21 22:14:38

Python实现灰色预测过程中的错误

感谢热心人士回答。
代码如下,运行时出现错误:
Traceback (most recent call last):
File "C:/Users/lenovo/Desktop/shishi.py", line 2, in <module>
    import torch as th
ModuleNotFoundError: No module named 'torch'

然后用cmd执行以下操作:


程序代码:

# condig:utf-8
import torch as th
import numpy as np
class GM():

    def __init__(self):
      # 判断是否可用 gpu 编程 , 大量级计算使用GPU
      self._is_gpu = False# th.cuda.is_available()

    def fit(self,dt:list or np.ndarray):
      self._df :th.Tensor = th.from_numpy(np.array(dt,dtype=np.float32))

      if self._is_gpu:
            self._df.cuda()

      self._n:int = len(self._df)

      self._x,self._max_value = self._sigmod(self._df)

      z:th.Tensor = self._next_to_mean(th.cumsum(self._x,dim=0))

      self.coef:th.Tensor = self._coefficient(self._x, z)

      del z

      self._x0:th.Tensor = self._x

      self._pre:th.Tensor = self._pred()

    # 归一化
    def _sigmod(self,x:th.Tensor):
      _maxv:th.Tensor = th.max(x)
      return th.div(x,_maxv),_maxv

    # 计算紧邻均值数列
    def _next_to_mean(self, x_1:th.Tensor):

      z:th.Tensor = th.zeros(self._n-1)
      if self._is_gpu:
            z.cuda()

      for i in range(1,self._n):# 下标从0开始,取不到最大值
            z = 0.5 * x_1 + 0.5 * x_1

      return z

    # 计算系数 a,b
    def _coefficient(self,x:th.Tensor,z:th.Tensor):

      B:th.Tensor = th.stack((-1*z, th.ones(self._n-1)),dim=1)

      Y:th.Tensor = th.tensor(x,dtype=th.float32).reshape((-1,1))

      if self._is_gpu:
            B.cuda()
            Y.cuda()

      # 返回的是a和b的向量转置,第一个是a 第二个是b;
      return th.matmul(th.matmul(th.inverse(th.matmul(B.t(), B)), B.t()),Y)


    def _pred(self,start:int=1,end:int=0):

      les:int = self._n+end

      resut:th.Tensor = th.zeros(les)

      if self._is_gpu:
            resut.cuda()

      resut = self._x0

      for i in range(start,les):
            resut = (self._x0 - (self.coef / self.coef)) * \
                            (1 - th.exp(self.coef)) * th.exp(-1 * self.coef * (i))
      del les
      return resut

    # 计算绝对误差
    def confidence(self):
      return round((th.sum(th.abs(th.div((self._x-self._pre),self._x)))/self._n).item(),4)

    # 预测个数,默认个数大于等于0,
    def predict(self,m:int=1,decimals:int=4):

      y_pred:th.Tensor = th.mul(self._pre,self._max_value)

      y_pred_ = th.zeros(1)

      if m<0:
            return "预测个数需大于等于0"
      elif m>0:
            y_pred_:th.Tensor = self._pred(self._n,m)[-m:].mul(self._max_value)
      else:
            if self._is_gpu:
                return list(map(lambda _: round(_, decimals), y_pred.cpu().numpy().tolist()))
            else:
                return list(map(lambda _:round(_,decimals),y_pred.numpy().tolist()))

      # cat 拼接 0 x水平拼接,1y垂直拼接
      result:th.Tensor = th.cat((y_pred,y_pred_),dim=0)

      del y_pred,y_pred_

      if self._is_gpu:
            return list(map(lambda _: round(_, decimals), result.cpu().numpy().tolist()))

      return list(map(lambda _:round(_,decimals),result.numpy().tolist()))



if __name__=="__main__":
    ls = np.arange(91,100,2)
    print(type(ls))
    # ls = list(range(91, 100, 2))
    gm = GM()
    gm.fit(ls)
    print(gm.confidence())
    print(ls)
    print(gm.predict(m=2))

xiaosi4081 发表于 2020-5-21 22:16:56

以管理员身份运行cmd

永恒的蓝色梦想 发表于 2020-5-21 22:17:14

命令行:pip install -i http://pypi.douban.com/simple --trusted-host pypi.douban.com torch

Twilight6 发表于 2020-5-21 22:18:40

python -m pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple
试试

liuzhengyuan 发表于 2020-5-21 22:21:28

国内镜像(第二条)
pip装不上模块?快来这看看!(非常全!!!)
https://fishc.com.cn/thread-167155-1-1.html
(出处: 鱼C论坛)

明月小仙 发表于 2020-5-21 22:39:54

永恒的蓝色梦想 发表于 2020-5-21 22:17
命令行:

你好,感谢回复,但是仍然是红色报错。

明月小仙 发表于 2020-5-21 22:40:31

liuzhengyuan 发表于 2020-5-21 22:21
国内镜像(第二条)
pip装不上模块?快来这看看!(非常全!!!)
https://fishc.com.cn/thread-167155- ...

你好,我看了一下,但是仍然没解决。

Twilight6 发表于 2020-5-21 23:17:16

https://pypi.org/project/torch/#files
官网下载 whl 文件 然后存放到桌面,文件名不用动
打开CMD 输入 cd Desktop回车 然后再输入:
pip install 文件名
把文件名替换成 你刚刚下载的 whl 完整文件名(注意要带上后缀)

明月小仙 发表于 2020-5-21 23:25:49

Twilight6 发表于 2020-5-21 23:17
https://pypi.org/project/torch/#files
官网下载 whl 文件 然后存放到桌面,文件名不用动
打开CMD 输入 ...

感谢,下载过程中进度条完全不动正常吗?几分钟了仍然是700K

Twilight6 发表于 2020-5-21 23:30:05

明月小仙 发表于 2020-5-21 23:25
感谢,下载过程中进度条完全不动正常吗?几分钟了仍然是700K

https://pypi.tuna.tsinghua.edu.cn/simple/torch/
那去这里下载
页: [1]
查看完整版本: Python实现灰色预测过程中的错误