0


【深度学习】生成模型:VAE(自编码器)模型解析

目录

1 前言

本文为自己自学内容的记录,其中多有借鉴别人博客的地方,一并在参考文献中给出链接,其中大部分截图来自李宏毅深度学习PPT课件。其中内容有理解不到位的地方,各位大佬在评论区给出修改意见,感恩。

  本文前置知识高斯混合模型和EM算法,如果不了解这两种算法直接看VAE模型会有理解上的障碍。

2 VAE模型

2.1 VAE模型推导

VAE模型的初始化推导和EM算法的推导有相似之处,不同的是在VAE模型中隐变量

  1. Z
  2. Z
  3. Z是一个连续的无穷维而不是跟高斯分布一样为有限的离散变量,所以在VAE的参数估计中用到了神经网络。

  VAE是一个深度生成模型,其最终目的是生成出概率分布

  1. P
  2. (
  3. x
  4. )
  5. P(x)
  6. P(x),
  7. x
  8. x
  9. x即输入数据。在VAE中,通过高斯混合模型(Gaussian Mixture Model)来生成
  10. P
  11. (
  12. x
  13. )
  14. P(x)
  15. P(x),也就是说
  16. P
  17. (
  18. x
  19. )
  20. P(x)
  21. P(x)是由一系列高斯分布叠加而成的,每一个高斯分布都有它自己的参数
  22. μ
  23. \mu
  24. μ
  25. σ
  26. \sigma
  27. σ。

在这里插入图片描述
为此假设隐变量

  1. z
  2. z
  3. z服从
  4. z
  5. N
  6. (
  7. 0
  8. ,
  9. I
  10. )
  11. \mathrm{z} \sim \mathrm{N}(0, \mathrm{I})
  12. zN(0,I)(注意
  13. z
  14. z
  15. z是一个向量,生成自一个高斯分布),并且找一个映射关系将向量
  16. z
  17. z
  18. z映射成这一系列高斯分布的参数向量
  19. μ
  20. (
  21. z
  22. )
  23. \mu(z)
  24. μ(z)和
  25. σ
  26. (
  27. z
  28. )
  29. \sigma (z)
  30. σ(z)。有了这一系列高斯分布的参数,就可以得到叠加后的
  31. P
  32. (
  33. x
  34. )
  35. P(x)
  36. P(x)的形式,即
  37. x
  38. z
  39. N
  40. (
  41. μ
  42. (
  43. z
  44. )
  45. ,
  46. σ
  47. (
  48. z
  49. )
  50. )
  51. \mathrm{x} \mid \mathrm{z} \sim \mathrm{N}(\mu(\mathrm{z}), \sigma(\mathrm{z}))
  52. xzN(μ(z),σ(z))(这里的“形式”仅是对某一个向量
  53. z
  54. z
  55. z所得到的)这里可以结合高斯混合模型理解,也可以结合参考文献【2】中的例子理解,总之就是假设隐变量
  56. Z
  57. Z
  58. Z服从某一种分布,而观察到的样本
  59. X
  60. X
  61. X属于
  62. Z
  63. Z
  64. Z的某一个分布的概率。

  那么要找的这个映射关系

  1. P
  2. (
  3. x
  4. z
  5. )
  6. P(x|z)
  7. P(xz)如何获得?这里就需要用到神经网络,那么为什么不用极大似然估计,因为在VAE模型中隐变量数量假设是高维无限的,没有办法用积分去做,所以用神经网络去拟合(神经网络可以拟合任意函数)。如下图所示:

在这里插入图片描述
输入向量

  1. z
  2. z
  3. z,得到参数向量
  4. μ
  5. (
  6. z
  7. )
  8. \mu (z)
  9. μ(z)和
  10. σ
  11. (
  12. z
  13. )
  14. \sigma (z)
  15. σ(z)。这个映射关系是要在训练过程中更新NN权重得到的。这部分作用相当于最终的解码器(decoder)。

  对于某一个向量

  1. z
  2. z
  3. z我们知道了如何找到
  4. P
  5. (
  6. x
  7. )
  8. P(x)
  9. P(x),那么对连续变量
  10. z
  11. z
  12. z依据全概率公式有:
  13. P
  14. (
  15. x
  16. )
  17. =
  18. z
  19. P
  20. (
  21. z
  22. )
  23. P
  24. (
  25. x
  26. z
  27. )
  28. d
  29. z
  30. \mathrm{P}(\mathrm{x})=\int_{\mathrm{z}} \mathrm{P}(\mathrm{z}) \mathrm{P}(\mathrm{x} \mid \mathrm{z}) \mathrm{dz}
  31. P(x)=∫zP(z)P(xz)dz

  但是很难直接计算积分部分,因为我们很难穷举出所有的向量

  1. z
  2. z
  3. z用于计算积分。又因为
  4. P
  5. (
  6. x
  7. )
  8. P(x)
  9. P(x) 难以计算,那么真实的后验概率
  10. P
  11. (
  12. z
  13. x
  14. )
  15. =
  16. P
  17. (
  18. z
  19. )
  20. P
  21. (
  22. x
  23. z
  24. )
  25. /
  26. P
  27. (
  28. x
  29. )
  30. P(zx)=P(z)P(xz)/P(x)
  31. P(zx)=P(z)P(xz)/P(x) 同样是不容易计算的,这也就是为什么下文要引入
  32. q
  33. (
  34. z
  35. x
  36. )
  37. q(z|x)
  38. q(zx)来近似真实后验概率
  39. P
  40. (
  41. z
  42. x
  43. )
  44. P(z|x)
  45. P(zx)。

因此我们用极大似然估计来估计

  1. P
  2. (
  3. x
  4. )
  5. P(x)
  6. P(x),有似然函数
  7. L
  8. L
  9. L
  10. L
  11. =
  12. x
  13. log
  14. P
  15. (
  16. x
  17. )
  18. \mathrm{L}=\sum_{\mathrm{x}} \log \mathrm{P}(\mathrm{x})
  19. L=x∑​logP(x)

这里额外引入一个分布

  1. q
  2. (
  3. z
  4. x
  5. )
  6. q(z|x)
  7. q(zx),
  8. z
  9. x
  10. N
  11. (
  12. μ
  13. (
  14. x
  15. )
  16. ,
  17. σ
  18. (
  19. x
  20. )
  21. )
  22. z|x \sim N\big(\mu^\prime(x), \sigma^\prime(x)\big)
  23. zxN(μ′(x),σ′(x)),这个分布表示形式如下:

在这里插入图片描述
这个分布同样是用一个神经网络来完成,向量

  1. z
  2. z
  3. z根据NN输出的参数向量
  4. μ
  5. (
  6. x
  7. )
  8. \mu '(x)
  9. μ′(x) 和
  10. σ
  11. (
  12. x
  13. )
  14. \sigma '(x)
  15. σ′(x) 运算得到,这部分作用相当于编码器(encoder)。

注意:这里为什么需要引入额外的分布

  1. q
  2. (
  3. z
  4. x
  5. )
  6. q(z|x)
  7. q(zx),跟EM算法的求解过程做对比,在EM算法中
  8. q
  9. (
  10. z
  11. )
  12. q(z)
  13. q(z)是可以取到
  14. P
  15. (
  16. z
  17. x
  18. )
  19. P(z|x)
  20. P(zx),从而令散度等于零不断的抬升下界进行极大似然估计,但是在VAE中由于
  21. P
  22. (
  23. z
  24. x
  25. )
  26. P(z|x)
  27. P(zx)是很难求的所以引入一个变量q(x)对其进行近似。

接下来进行公式的推导,由于在EM算法中已经推导出了ELBO+KL的形式,这里就直接拿来用:

  1. log
  2. P
  3. (
  4. x
  5. θ
  6. )
  7. =
  8. Z
  9. q
  10. (
  11. z
  12. x
  13. )
  14. log
  15. P
  16. (
  17. x
  18. ,
  19. z
  20. θ
  21. )
  22. q
  23. (
  24. z
  25. x
  26. )
  27. d
  28. z
  29. +
  30. D
  31. K
  32. L
  33. (
  34. q
  35. (
  36. z
  37. x
  38. )
  39. P
  40. (
  41. z
  42. x
  43. ,
  44. θ
  45. )
  46. )
  47. \log P(\mathrm{x} \mid \theta)=\int_{Z} q(\mathrm{z}|\mathrm{x}) \log \frac{P(\mathrm{x}, \mathrm{z} \mid \theta)}{q(\mathrm{z}|\mathrm{x})} d \mathrm{z}+D_{K L}(q(\mathrm{z}|\mathrm{x}) \| P(\mathrm{z} \mid \mathrm{x}, \theta))
  48. logP(x∣θ)=∫Zq(zx)logq(zx)P(x,z∣θ)​dz+DKL​(q(zx)∥P(zx,θ))

根据KL divergence的性质

  1. D
  2. K
  3. L
  4. (
  5. q
  6. (
  7. z
  8. x
  9. )
  10. P
  11. (
  12. z
  13. x
  14. ,
  15. θ
  16. )
  17. )
  18. 0
  19. D_{K L}(q(\mathrm{z}|\mathrm{x}) \| P(\mathrm{z} \mid \mathrm{x}, \theta)) \geq 0
  20. DKL​(q(zx)∥P(zx,θ))≥0 当且仅当
  21. q
  22. (
  23. z
  24. x
  25. )
  26. =
  27. P
  28. (
  29. z
  30. x
  31. ,
  32. θ
  33. )
  34. q(\mathrm{z}|\mathrm{x})=P(\mathrm{z} \mid \mathrm{x}, \theta)
  35. q(zx)=P(zx,θ)取等号,因此有
  36. log
  37. P
  38. (
  39. x
  40. θ
  41. )
  42. z
  43. q
  44. (
  45. z
  46. x
  47. )
  48. log
  49. P
  50. (
  51. x
  52. ,
  53. z
  54. θ
  55. )
  56. q
  57. (
  58. z
  59. x
  60. )
  61. d
  62. z
  63. \log P(\mathrm{x} \mid \theta) \geq \int_{z} q(\mathrm{z}|\mathrm{x}) \log \frac{P(\mathrm{x}, \mathrm{z} \mid \theta)}{q(\mathrm{z}|\mathrm{x})} d \mathrm{z}
  64. logP(x∣θ)≥∫zq(zx)logq(zx)P(x,z∣θ)​dz

因此便得到了

  1. log
  2. P
  3. (
  4. X
  5. θ
  6. )
  7. \log P(X \mid \theta)
  8. logP(X∣θ)的一个下界称为Evidence Lower Bound (ELBO),简称
  9. L
  10. b
  11. L_b
  12. Lb​。最大化
  13. L
  14. b
  15. L_b
  16. Lb 就等价于最大化似然函数
  17. L
  18. L
  19. L。那么接下来具体看
  20. L
  21. b
  22. L_b
  23. Lb :
  24. L
  25. b
  26. =
  27. z
  28. q
  29. (
  30. z
  31. x
  32. )
  33. log
  34. P
  35. (
  36. z
  37. ,
  38. x
  39. )
  40. q
  41. (
  42. z
  43. x
  44. )
  45. d
  46. z
  47. =
  48. z
  49. q
  50. (
  51. z
  52. x
  53. )
  54. log
  55. (
  56. P
  57. (
  58. z
  59. )
  60. q
  61. (
  62. z
  63. x
  64. )
  65. P
  66. (
  67. x
  68. z
  69. )
  70. )
  71. d
  72. z
  73. =
  74. z
  75. q
  76. (
  77. z
  78. x
  79. )
  80. log
  81. P
  82. (
  83. z
  84. )
  85. q
  86. (
  87. z
  88. x
  89. )
  90. d
  91. z
  92. +
  93. z
  94. q
  95. (
  96. z
  97. x
  98. )
  99. log
  100. P
  101. (
  102. x
  103. z
  104. )
  105. d
  106. z
  107. =
  108. D
  109. K
  110. L
  111. (
  112. q
  113. (
  114. z
  115. x
  116. )
  117. P
  118. (
  119. z
  120. )
  121. )
  122. +
  123. z
  124. q
  125. (
  126. z
  127. x
  128. )
  129. log
  130. P
  131. (
  132. x
  133. z
  134. )
  135. d
  136. z
  137. =
  138. D
  139. K
  140. L
  141. (
  142. q
  143. (
  144. z
  145. x
  146. )
  147. P
  148. (
  149. z
  150. )
  151. )
  152. +
  153. E
  154. q
  155. (
  156. z
  157. x
  158. )
  159. [
  160. log
  161. P
  162. (
  163. x
  164. z
  165. )
  166. ]
  167. \begin{aligned} \mathrm{L}_{\mathrm{b}} &=\int_{z} \mathrm{q}(\mathrm{z} \mid \mathrm{x}) \log \frac{\mathrm{P}(\mathrm{z}, \mathrm{x})}{\mathrm{q}(\mathrm{z} \mid \mathrm{x})} \mathrm{dz} \\ &=\int_{\mathrm{z}} \mathrm{q}(\mathrm{z} \mid \mathrm{x}) \log \left(\frac{\mathrm{P}(\mathrm{z})}{\mathrm{q}(\mathrm{z} \mid \mathrm{x})} \cdot \mathrm{P}(\mathrm{x} \mid \mathrm{z})\right) \mathrm{dz} \\ &=\int_{\mathrm{z}} \mathrm{q}(\mathrm{z} \mid \mathrm{x}) \log \frac{\mathrm{P}(\mathrm{z})}{\mathrm{q}(\mathrm{z} \mid \mathrm{x})} \mathrm{dz}+\int_{\mathrm{z}} \mathrm{q}(\mathrm{z} \mid \mathrm{x}) \log \mathrm{P}(\mathrm{x} \mid \mathrm{z}) \mathrm{dz} \\ &=-\mathrm{D}_{\mathrm{KL}}(\mathrm{q}(\mathrm{z} \mid \mathrm{x}) \| \mathrm{P}(\mathrm{z}))+\int_{\mathrm{z}} \mathrm{q}(\mathrm{z} \mid \mathrm{x}) \log \mathrm{P}(\mathrm{x} \mid \mathrm{z}) \mathrm{dz} \\ &=-\mathrm{D}_{\mathrm{KL}}(\mathrm{q}(\mathrm{z} \mid \mathrm{x}) \| \mathrm{P}(\mathrm{z}))+\mathrm{E}_{\mathrm{q}(\mathrm{z} \mid \mathrm{x})}[\log \mathrm{P}(\mathrm{x} \mid \mathrm{z})] \end{aligned}
  168. Lb​​=∫zq(zx)logq(zx)P(z,x)​dz=∫zq(zx)log(q(zx)P(z)​⋅P(xz))dz=∫zq(zx)logq(zx)P(z)​dz+∫zq(zx)logP(xz)dz=−DKL​(q(zx)∥P(z))+∫zq(zx)logP(xz)dz=−DKL​(q(zx)∥P(z))+Eq(zx)​[logP(xz)]​

推导到这一步就会发现这种形式的公式是看VAE相关论文经常给出的形式。同时到了这一步也可以看出,最大化似然函数

  1. L
  2. L
  3. L就是最大化
  4. L
  5. b
  6. L_b
  7. Lb​,也即最小化
  8. D
  9. K
  10. L
  11. (
  12. q
  13. (
  14. z
  15. x
  16. )
  17. P
  18. (
  19. z
  20. )
  21. )
  22. -\mathrm{D}_{\mathrm{KL}}(\mathrm{q}(\mathrm{z} \mid \mathrm{x}) \| \mathrm{P}(\mathrm{z}))
  23. DKL​(q(zx)∥P(z))和最大化
  24. E
  25. q
  26. (
  27. z
  28. x
  29. )
  30. [
  31. log
  32. P
  33. (
  34. x
  35. z
  36. )
  37. ]
  38. \mathrm{E}_{\mathrm{q}(\mathrm{z} \mid \mathrm{x})}[\log \mathrm{P}(\mathrm{x} \mid \mathrm{z})]
  39. Eq(zx)​[logP(xz)]。
  • 最小化 − D K L ( q ( z ∣ x ) ∥ P ( z ) ) -\mathrm{D}{\mathrm{KL}}(\mathrm{q}(\mathrm{z} \mid \mathrm{x}) | \mathrm{P}(\mathrm{z})) −DKL​(q(z∣x)∥P(z)),使后验分布近似值 q ( z ∣ x ) q(z|x) q(z∣x)接近先验分布 P ( z ) P(z) P(z)。也就是说通过 q ( z ∣ x ) q(z|x) q(z∣x)生成的编码 z z z不能太离谱,要与某个分布相当才行,这里是对中间编码生成起了限制作用。当 q ( z ∣ x ) q(z|x) q(z∣x)和 P ( z ) P(z) P(z)都是高斯分布时,推导式有(参考文献【4】中Appendix B): D K L ( q ( z ∣ x ) ∥ P ( z ) ) = − 1 2 ∑ j J ( 1 + log ⁡ ( σ j ) 2 − ( μ j ) 2 − ( σ j ) 2 ) \mathrm{D}{\mathrm{KL}}(\mathrm{q}(\mathrm{z} \mid \mathrm{x}) | \mathrm{P}(\mathrm{z}))=-\frac{1}{2} \sum_{\mathrm{j}}^{\mathrm{J}}\left(1+\log \left(\sigma_{\mathrm{j}}\right)^{2}-\left(\mu_{\mathrm{j}}\right)^{2}-\left(\sigma_{\mathrm{j}}\right)^{2}\right) DKL​(q(z∣x)∥P(z))=−21​j∑J​(1+log(σj​)2−(μj​)2−(σj​)2) 其中 J J J表示向量 z z z的总维度数, σ j \sigma_j σj​和 μ j \mu_j μj​表示 q ( z ∣ x ) q(z|x) q(z∣x)输出的参数向量 σ \sigma σ和 μ \mu μ的第 j j j个元素。(这里的 σ \sigma σ和 μ \mu μ等于前文中 μ ′ ( x ) \mu '(x) μ′(x)和 σ ′ ( x ) \sigma '(x) σ′(x).
  • 最大化 E q ( z ∣ x ) [ log ⁡ P ( x ∣ z ) ] \mathrm{E}_{\mathrm{q}(\mathrm{z} \mid \mathrm{x})}[\log \mathrm{P}(\mathrm{x} \mid \mathrm{z})] Eq(z∣x)​[logP(x∣z)],即在给定编码器输出 q ( z ∣ x ) q(z|x) q(z∣x)下解码器输出 P ( x ∣ z ) P(x|z) P(x∣z)越大越好。这部分也就相当于最小化Reconstruction Error(重建损失)

  由此我们可以得出VAE的原理图:
在这里插入图片描述
通常忽略掉decoder输出的

  1. σ
  2. (
  3. x
  4. )
  5. \sigma(x)
  6. σ(x)一项,仅要求
  7. μ
  8. (
  9. x
  10. )
  11. \mu(x)
  12. μ(x)与
  13. x
  14. x
  15. x越接近越好。

对某一输入数据

  1. x
  2. x
  3. x来说,VAE的损失函数即(
  4. L
  5. b
  6. L_b
  7. Lb​取负号):
  8. min
  9. Loss
  10. V
  11. A
  12. E
  13. =
  14. D
  15. K
  16. L
  17. (
  18. q
  19. (
  20. z
  21. x
  22. )
  23. P
  24. (
  25. z
  26. )
  27. )
  28. E
  29. q
  30. (
  31. z
  32. x
  33. )
  34. [
  35. log
  36. P
  37. (
  38. x
  39. z
  40. )
  41. ]
  42. \min \operatorname{Loss}_{\mathrm{V} \mathrm{AE}}=\mathrm{D}_{\mathrm{KL}}(\mathrm{q}(\mathrm{z} \mid \mathrm{x}) \| \mathrm{P}(\mathrm{z}))-\mathrm{E}_{\mathrm{q}(\mathrm{z} \mid \mathrm{x})}[\log \mathrm{P}(\mathrm{x} \mid \mathrm{z})]
  43. minLossVAE​=DKL​(q(zx)∥P(z))−Eq(zx)​[logP(xz)]

2.2 重参化技巧

  在前面VAE的介绍中样本经过Encoder生成了隐变量的一个分布

  1. z
  2. q
  3. (
  4. z
  5. x
  6. )
  7. \mathrm{z} \sim \mathrm{q}(\mathrm{z} \mid \mathrm{x})
  8. zq(zx),然后从这个分布中采样
  9. z
  10. z
  11. z进行Decoder,注意“采样”这个操作是不可微的,因此不能做反向传播,所以用reparameterization trick来解决这个问题,示意图如下:

在这里插入图片描述
将上图左图原来的采样操作通过reparameterization trick变换为右图的形式。

我们引入一个外部向量

  1. ϵ
  2. N
  3. (
  4. 0
  5. ,
  6. I
  7. )
  8. ϵ∼N(0,I)
  9. ϵ∼N(0,I),通过
  10. z
  11. =
  12. μ
  13. +
  14. σ
  15. ϵ
  16. z = μ + σ ϵ
  17. z=μ+σ⊙ϵ计算编码
  18. z
  19. z
  20. z
  21. \odot
  22. ⊙表示element-wise乘法,
  23. ϵ
  24. \epsilon
  25. ϵ的每一维都服从标准高斯分布即
  26. ϵ
  27. i
  28. \epsilon_i \sim
  29. ϵi​∼ N(0,1),由此loss的梯度可以通过
  30. μ
  31. \mu
  32. μ和
  33. σ
  34. \sigma
  35. σ分支传递到encoder model处(
  36. ϵ
  37. \epsilon
  38. ϵ并不需要梯度信息来更新)。

这里利用了这样一个事实[3]:考虑单变量高斯分布,假设

  1. z
  2. p
  3. (
  4. z
  5. x
  6. )
  7. =
  8. N
  9. (
  10. μ
  11. ,
  12. σ
  13. 2
  14. )
  15. zp(zx)=N(μ,σ 2 )
  16. zp(zx)=N(μ,σ2),从中采样一个
  17. z
  18. z
  19. z,就相当于先从
  20. N
  21. (
  22. 0
  23. ,
  24. 1
  25. )
  26. N(0,1)
  27. N(0,1)中采样一个
  28. ϵ
  29. \epsilon
  30. ϵ,再令
  31. z
  32. =
  33. μ
  34. +
  35. σ
  36. ϵ
  37. z=\mu + \sigma \odot \epsilon
  38. z=μ+σ⊙ϵ

最终的VAE的形式如下:
在这里插入图片描述

3 QA

3.1 生成体现在什么地方

3.2 AE和VAE的区别

  将把

  1. x
  2. x
  3. x表示为输入数据,把
  4. z
  5. z
  6. z表示为潜在变量(编码表示)。在普通的自编码器中,编码器将输入
  7. x
  8. x
  9. x转换为潜在变量
  10. z
  11. z
  12. z,而解码器将
  13. z
  14. z
  15. z转换为重构的输出。而在可变自编码器中,编码器将
  16. x
  17. x
  18. x转换为潜在变量
  19. p
  20. (
  21. z
  22. x
  23. )
  24. p(z|x)
  25. p(zx)的概率分布,然后对潜在变量
  26. z
  27. z
  28. z随机采样,再由解码器解码成重构输出。自编码器(确定性)和可变自编码器(概率性)的区别。

在这里插入图片描述

4 另一种角度理解VAE

5 总结

  其实那么多数学公式推导,我自己都有点晕,但是本质上就是用自编码器去产生很多高斯分布,去拟合样本的分布,然后某个x对应的高斯分布里采样z,然后复原成x,跟GAN区别就是这个是完全去模仿分布,只能生成数据中已有的图片,很难创造新的图片,最多也就是插值图片了。

  也可以理解成图片的特征向量z采样于某种高斯分布,我们要把他给找出来,我们希望这个分布贴近标准正太分布,然后通过编码器生成对应均值和方差,然后采样z,希望z又能复原图片,这样就找到了这个z背后的高斯分布。这个高斯分布的均值就是最大概率生成特征z,可以复原图片,当然均值旁边采样出来的z可能可以复原的不是很像,但是也是在数据集里的,如果有2个图片的特征分布都在这个点有所重合的话,可能就是2个图片中间的插值图片了。

不足

VAE在产生新数据的时候是基于已有数据来做的,或者说是对已有数据进行某种组合而得到新数据的,它并不能生成或创造出新数据。另一方面是VAE产生的图像比较模糊。
而大名鼎鼎的GAN利用对抗学习的方式,既能生成新数据,也能产生较清晰的图像。后续的更是出现了很多种变形。

6 参考文献

[1]【深度学习】VAE(Variational Auto-Encoder)原理
[2]【干货】深入理解变分自编码器
[3]变分自编码器VAE:原来是这么一回事 | 附开源代码
[4]Auto-encoding variational bayes
[5]【机器学习】白板推导系列(三十二) ~ 变分自编码器(VAE)
[6]PyTorch实现VAE
[7]使用(VAE)生成建模,理解可变自动编码器背后的数学原理


本文转载自: https://blog.csdn.net/zfhsfdhdfajhsr/article/details/127218635
版权归原作者 一穷二白到年薪百万 所有, 如有侵权,请联系我们删除。

“【深度学习】生成模型:VAE(自编码器)模型解析”的评论:

还没有评论