特征解耦,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()

在这里插入图片描述

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...