欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pytorch 实现VAE排坑记

程序员文章站 2022-05-23 14:01:31
...

RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

pytorch 实现VAE排坑记

list没有mean()方法,必须转为ndarray

一直没想通VAE怎么实现特征学习,怎么着才算是训练好了可以用来被信任用于学习特征呢?
PCA的话不需要想什么,直接算特征值,然后拿出前几个特征值和对应的特征向量,就好了,可是VAE模型这么多参数(网络权重),饿哦应该怎么判断网络训练好了呢,毕竟是无监督的训练,只能看损失,可是这个损失图能说明模型可以信赖了?什么超参数都没调,也没说什么正则化,····

关键问题就是不知如何判断VAE的过拟合

我是不是应该让模型过拟合,这样学出来的模型就能够学到我的数据的有效特征呀

难道VAE特征学习的过程就是直接拿所有数据进去训练几十个epoch,再把所有数据拿到训练好的模型直接测试?????

网上这方面的介绍太少了,
pytorch 实现VAE排坑记

numpy数组的最后一行怎么访问?

突然犯傻了,

为什么验证损失比训练损失小,一直是,从一开始就是
pytorch 实现VAE排坑记
batchsize整到了22000,显卡的利用率起来了,跑起来了,之前都是小打小闹的,不过这时候pycharm的控制台只能有一个,开两个就会out of memory

pytorch 实现VAE排坑记
可以看到cpu正常在跑,其实主要是在给gpu传数据

这里这个gpu利用率不太可信,一直挺低的

pytorch 实现VAE排坑记
广播

import numpy as np
a= np.array([[1,2],[3,4]])
a= np.array([5,6])
a= np.array([[1,2],[3,4]])
b= np.array([5,6])
a-b
array([[-4, -4],
       [-2, -2]])
a-b.T
array([[-4, -4],
       [-2, -2]])
c=a-b
c/b
array([[-0.8       , -0.66666667],
       [-0.4       , -0.33333333]])
import torch
a=torch.Tensor([[1,2],[3,4]])
b=torch.Tensor([10,20])
c=a-b