特征解耦,torch.cumprod(),np.random.seed(),plt.scatter
创始人
2024-03-14 19:09:30
0

1.infoGAN
通常,我们学到的特征是混杂在一起的,如上图所示,这些特征在数据空间中以一种复杂的无序的方式进行编码,但是如果这些特征是可分解的,那么这些特征将具有更强的可解释性,我们将更容易的利用这些特征进行编码。所以,我们将如何通过非监督的学习方式获取这些可分解的特征呢?
前人也通过很多监督非监督的方法学习可分解的特征。在这篇paper中,非监督学习通过使用连续的和离散的隐含因子来学习可分解的特征。
2.特征解耦
实际情况中的特征是非常杂乱无章的,然后我们希望的特征关系是比较整齐明了的,具体哪一列表示什么很清晰,从而便于控制它。而infogan的目的就是将这些杂乱无章的特征清晰化规律化。
特征解耦举例:
我们可以找到某一个控制某个特征对应的神经元,然后去改变它的值进而就可以改变具体某个特征。
3.x.detach()摘自Pytorch中x.data()与x.detach()的区别
阻断梯度回传.
x.data()或x.detach()均会返回与x相同数据的Tensor,并且这个Tensor与原来的Tensor共用内存,一者改变,另一者也会跟着改变,并且新的tensor的requires_grad = False
实例:

class TestDetach(nn.Module):def __init__(self, InDim, HiddenDim, OutDim):super().__init__()self.layer1 = nn.Linear(InDim, HiddenDim, False)self.layer2 = nn.Linear(HiddenDim, OutDim, False)def forward(self, x, DetachLayer1):x = torch.relu(self.layer1(x))x = x.detach()# x = x.data()x = self.layer2(x)return x

两层线性层,第一层的输出后detach,那么第一层的参数永远不会更新
4.torch.cumprod()
cumulative product的意思,即累积乘
实例:

import torch
x = torch.Tensor([1, 2, 3, 4, 5])
y = torch.cumprod(x, dim = 0)
print(y)

tensor([ 1., 2., 6., 24., 120.])

5np.random.seed(0)可以产生相同的随机数。
这是一个没有返回值的函数,用来初始化随机数函数。seed()括号里面可以加入一个参数,这个参数会是生成随机数的依据,如果不添加参数的话,依据是系统时间,如果参数不改变,那么随机数的生成将会一致,方便复现实验。
也就是说如果我们使用seed(x),只要x不改变,那么这个random序列永远不会变。

每次调用都需要seed(0)一下,表示种子相同
实例:

import numpy as np
np.random.seed(0)
x = np.random.randn(2,2)
np.random.seed(0)
y = np.random.randn(2,2)
print(x)
print(y)

[[1.76405235 0.40015721]
[0.97873798 2.2408932 ]]
[[1.76405235 0.40015721]
[0.97873798 2.2408932 ]]

import numpy as np
np.random.seed(1)
x = np.random.randn(2,2)
np.random.seed(0)
y = np.random.randn(2,2)
np.random.seed(1)# z同x
z = np.random.randn(2,2)
print(x)
print(y)
print(z) 

[[ 1.62434536 -0.61175641]
[-0.52817175 -1.07296862]]
[[1.76405235 0.40015721]
[0.97873798 2.2408932 ]]
[[ 1.62434536 -0.61175641]
[-0.52817175 -1.07296862]]

6.plt.scatter用法

import numpy as np
import matplotlib.pyplot as pltnp.random.seed(0)
x = np.random.rand(20)#x坐标
y = np.random.rand(20)#y坐标colors = np.random.rand(20)
area = (50 * np.random.rand(20)) ** 2#面积
print("area",area)plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()

在这里插入图片描述

相关内容

热门资讯

不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
报告实验.pdfbase.tt... 这个错误通常是由于找不到字体文件或者文件路径不正确导致的。以下是一些解决方法:确认字体文件是否存在:...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...