IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【stgcn】代码pytorch解读(二) -> 正文阅读

[人工智能]【stgcn】代码pytorch解读(二)

解读 utils.py

import os
import zipfile
import numpy as np
import torch

一、加载矩阵数据

def load_metr_la_data():
    if (not os.path.isfile("../PeMSD7(M)/adj_mat.npy")
            or not os.path.isfile("../PeMSD7(M)/node_values.npy")):
        with zipfile.ZipFile("../PeMSD7(M)/METR-LA.zip", 'r') as zip_ref:
            zip_ref.extractall("data/")
    # 如果文件路径不存在,则打开zip文件
    A = np.load("../PeMSD7(M)/adj_mat.npy")
    X = np.load("../PeMSD7(M)/node_values.npy").transpose((1, 2, 0))
    X = X.astype(np.float32)

    # Normalization using Z-score method
    means = np.mean(X, axis=(0, 2)) # 均值
    X = X - means.reshape(1, -1, 1)
    stds = np.std(X, axis=(0, 2)) # 方差
    X = X / stds.reshape(1, -1, 1)
   # 标准化
    return A, X, means, stds

注释
1. np.transpose():转轴,(0,1,2)–》(1,2,0)

二、拉普拉斯矩阵归一化

def get_normalized_adj(A):
    """
    Returns the degree normalized adjacency matrix.
    """
    A = A + np.diag(np.ones(A.shape[0], dtype=np.float32))# A=A+E 邻接矩阵
    D = np.array(np.sum(A, axis=1)).reshape((-1,)) # D 度矩阵
    D[D <= 10e-5] = 10e-5    # Prevent infs 
    diag = np.reciprocal(np.sqrt(D))
    A_wave = np.multiply(np.multiply(diag.reshape((-1, 1)), A),
                         diag.reshape((1, -1)))
    return A_wave

注释

  1. np.sqrt(D):返回数组的平方根
  2. np.reciprocal():数返回参数逐元素的倒数。

三、生成迭代器

def generate_dataset(X, num_timesteps_input, num_timesteps_output):
    """
    Takes node features for the graph and divides them into multiple samples
    along the time-axis by sliding a window of size (num_timesteps_input+
    num_timesteps_output) across it in steps of 1.
    获取图的节点特征,并将其划分为窗口大小为(输入时间步长+输出时间步长)的多维样本每隔一步。
    :param X: Node features of shape (num_vertices, num_features,
    num_timesteps)
    :return:
        - Node features divided into multiple samples. Shape is
          (num_samples, num_vertices, num_features, num_timesteps_input).=(样本案例数,顶点,特征,输入时间步长)
        - Node targets for the samples. Shape is
          (num_samples, num_vertices, num_features, num_timesteps_output).=(样本案例数,顶点,特征,输出时间步长)
    """
    # Generate the beginning index and the ending index of a sample, 生成样本的开始和结束索引
    # which contains (num_points_for_training + num_points_for_predicting) points共包含(训练点+特征点)
    indices = [(i, i + (num_timesteps_input + num_timesteps_output)) for i
               in range(X.shape[2] - 
               			( num_timesteps_input + num_timesteps_output) + 1) ]
   
    # Save samples
    features, target = [], []
    for i, j in indices:
        features.append(
            X[:, :, i: i + num_timesteps_input].transpose(
                (0, 2, 1)))
        target.append(X[:, 0, i + num_timesteps_input: j])

    return torch.from_numpy(np.array(features)), \
           torch.from_numpy(np.array(target))

注释

  • node_values.shape=(34272, 207, 2)
  • X.transpose((1, 2, 0))
  • X为X_train共(207,2,20563), X_test共(207,2,6854), X_val共(207,2,6854)
  • indices的范围【(0,总数-(时间输入步长+时间输出步长)】,每个索引为(i,i+(时间输入步长+时间输出步长))
  • 每个切片的特征维度为【(207,2,时间输入步长)】.transpose((0,2,1))->【(207,时间输入步长,2)
  • 每个标签维度为【(207,1,时间输出步长)】

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:28:52  更:2022-02-28 15:35:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:26:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码