########## Memory test ########### cd gf_diags echo "run_diags.sh start" ./run_diags.sh echo "run_diags.sh end" grep -B 24 'time cost' diags.log >> $p_new/log.txt echo "" >> $p_new/log.txt timecost=$(grep -o 'time cost' <diags.log|wc -l) if [ $timecost != 1 ];then failligo echo "************ Error code:00000201 (Memory Error) ***********" |tee -a $p_new/log.txt exit fi cd .. #cd memcheck #rm -rf memtune.txt #sudo ./reg t |tee -a memtune.txt #timecost=$(grep -o 'fail' <memtune.txt|wc -l) #if [ $timecost != 0 ];then # failligo # echo "************ Error code:00000201 (Memory Error 2) ***********" |tee -a $p_new/log.txt # exit #fi #cd ..
时间: 2023-08-07 08:06:09 浏览: 58
您好!根据您的代码,这段脚本的作用是进行内存测试。首先,它进入 `gf_diags` 目录并运行 `run_diags.sh` 脚本。然后,它从 `diags.log` 文件中提取最后 24 行包含 'time cost' 的内容,并将结果附加到 `$p_new/log.txt` 文件中。接下来,它统计 `diags.log` 文件中 'time cost' 出现的次数,如果不等于 1,则执行 `failligo` 函数,并在日志文件中记录错误信息。最后,它返回上一级目录并注释掉了一些关于内存检查的代码。
相关问题
diag = np.array(sumArr.flatten())[0] + 1e-7 # 计算次方,这里是求diag开方的倒数 diag = np.power(diag, -0.5) # 对矩阵进行对角化 D = sp.diags(diag) L = D * A * D # covert norm_adj matrix to tensor L = sp.coo_matrix(L) row = L.row col = L.col i = torch.LongTensor(np.array([row, col])) data = torch.FloatTensor(L.data)是什么意思,解释没一句的意思及其含义
这段代码是用于将一个稀疏对称矩阵A转换为对角线为1的矩阵L。具体解释如下:
1. `sumArr`是一个二维数组,用`flatten()`将其展开成一维数组,再用`np.array()`将其转换为numpy数组;
2. `diag`用于计算对角线元素的值,即将一维数组的每个元素加上一个很小的数(这里是1e-7),然后取其开方的倒数;
3. `D`是一个对角矩阵,其对角线元素为`diag`;
4. `L`是经过对角化后的矩阵,其计算公式为$L=D^{-\frac{1}{2}}AD^{-\frac{1}{2}}$;
5. `sp.coo_matrix()`将稀疏矩阵转换为COO(Coordinate list)格式的稀疏矩阵;
6. `row`和`col`分别是稀疏矩阵L中非零元素的行和列;
7. `i`是一个大小为2xN的LongTensor,其中N是非零元素的个数,`i[0]`和`i[1]`分别对应非零元素的行和列;
8. `data`是一个大小为N的FloatTensor,表示非零元素的值。
最终,`i`和`data`被用于构建一个稀疏张量。
def create_laplacian_dict(self): # 拉普拉斯字典 def symmetric_norm_lap(adj): # rowsum = np.array(adj.sum(axis=1)) d_inv_sqrt = np.power(rowsum, -0.5).flatten() d_inv_sqrt[np.isinf(d_inv_sqrt)] = 0 d_mat_inv_sqrt = sp.diags(d_inv_sqrt) norm_adj = d_mat_inv_sqrt.dot(adj).dot(d_mat_inv_sqrt) return norm_adj.tocoo() def random_walk_norm_lap(adj): # 传入邻接矩阵 rowsum = np.array(adj.sum(axis=1)) # 行总和 d_inv = np.power(rowsum, -1.0).flatten() d_inv[np.isinf(d_inv)] = 0 d_mat_inv = sp.diags(d_inv) norm_adj = d_mat_inv.dot(adj) return norm_adj.tocoo() # 归一化的邻接稀疏矩阵 if self.laplacian_type == 'symmetric': # 解释器默认的是random—walk norm_lap_func = symmetric_norm_lap elif self.laplacian_type == 'random-walk': norm_lap_func = random_walk_norm_lap # 拉普拉斯的功能就用这个 else: raise NotImplementedError self.laplacian_dict = {} for r, adj in self.adjacency_dict.items(): self.laplacian_dict[r] = norm_lap_func(adj) A_in = sum(self.laplacian_dict.values()) self.A_in = self.convert_coo2tensor(A_in.tocoo())
可以看出这段代码是用来创建拉普拉斯字典的。其中使用了两种不同的归一化方法,分别是对称归一化和随机游走归一化。如果选择对称归一化,就使用函数symmetric_norm_lap,如果选择随机游走归一化,就使用函数random_walk_norm_lap。然后遍历邻接矩阵字典,对每一个邻接矩阵都进行相应的归一化操作,最后将所有的归一化邻接矩阵相加,得到A_in,并将其转换为张量格式。