课前甜点——使用Jupyter Notebook运行工程中的usage.ipynb
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等
首先安装一下Jupyter Notebook
pip install jupyter notebook
在pycharm打开工程,配置环境
run
Run Jupyter Notebook
控制台上会有一个链接,在浏览器中打开
1:导入自定义文件夹中的函数
源代码中无法import lib下的内容,所以改了一下
import sys
sys.path.append(r'/home/chen/Documents/cnn_graph-master/lib')
import utils
import coarsening
import graph
import models
from lib import models, graph, coarsening, utils
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
2:图的定义和问题定义
n个样本组成了图中的点,每个样本用一个dx向量表示,每个样本xi还有一个标签yi,每个标签可以是离散的label(分类)或者一个dy的向量(回归)表示。点与点之间的权重用一个邻接矩阵A(n*n)表示。这样就可以把一个样本的分类回归问题,理解为图信号分类回归问题。
问题分两种:点的回归分类与图的回归分类。点的回归分类问题:给定矩阵A和n个图信号x,预测图信号y。第二个问题是寻找分类或回归A
3:usage代码解读
from lib import models, graph, coarsening, utils
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
3.1:数据生成
d = 100 # Dimensionality.
n = 10000 # Number of samples.
c = 5 # Number of feature communities.
# Data matrix, structured in communities (feature-wise).
X = np.random.normal(0, 1, (n, d)).astype(np.float32)#生成n*d个(0,1)正态分布的数据,排列成n行d列
X += np.linspace(0, 1, c).repeat(d // c)#生成d个数据,分成c组,组内相同,组间递加。X中每个样本(每行)加上生成的数据
# Noisy non-linear target.
w = np.random.normal(0, .02, d)
t = X.dot(w) + np.random.normal(0, .001, n)#样本各个维度的权重和偏差
t = np.tanh(t)#激活函数
plt.figure(figsize=(15, 5))
plt.plot(t, '.')
# Classification.
y = np.ones(t.shape, dtype=np.uint