这是用户在 2025-6-7 2:35 为 https://app.immersivetranslate.com/html/ 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?

ML week14.2
ML 第 14.2 周

2025.06.05 Thu PM 1:02 ・ 108Minutes 35seconds
2025 年 6 月 5 日 周四 下午 1:02 ・ 108 分钟 35 秒

ZHANG YIWEN
张一文



Attendees 1 00:00
与会人员 1 00:00

앞에 출석 표지 입력해 주시고요. 오늘도 제가 올릴 때 따로 작성은 안 했는데 올릴 것도 코버의 속도보다 이제 속도가 조금 더 빠를 수가 있거든요.
请在前面输入出勤记录表。今天我虽然没有单独编写,但现在上传的速度可能比封面的速度稍微快一些。

웬만한 노트북들보다는 실습 시간 내에 하시기에는 콜랩이 조금 더 나을 수도 있습니다.
对于大多数笔记本电脑来说,在实践时使用 Colab 可能会更好一些。


Attendees 1 00:31
听众 1 00:31

이번 시간에 이번에 배웠던 거 이제 겐이랑 이제 트랜스포머 그리고 LSTM GPT 이런 거 배웠었고요.
这节课我们学习了生成对抗网络(GANs)、变形金刚和 LSTM 以及 GPT 等内容。

제가 실습 시간에 할 거는 이제 오토 인코더랑 그리고 겐 그리고 엘리스팅입니다.
我在实践课上要做的是自动编码器、GAN 和 LSTM。

우선 이제 오토 인코더부터 시작을 할 건데 이제 오토 인코더는 이번 시간 때 배웠던 것처럼 이제 디지 학습 모델이죠.
首先,我将从自动编码器开始,正如我们之前所学,自动编码器是一种生成式学习模型。

그래서 입력 데이터를 이제 저차원 공간 그러니까 레이턴트 벡터로 압축을 한 다음에 다시 복원하는 구조를 가지고 있습니다.
所以现在将输入数据压缩到低维空间,也就是潜在向量,然后再进行重建。

그래서 여기서 보시면 원래 이미지가 있고 얘를 이제 인코더를 통과해서 저차원의 이미지 저차원으로 변경을 한 다음에 얘를 다시 디코더로 복원을 해서 얘네 둘이 이제 비슷하게 가도록 그렇게 학습하는 방법입니다.
就像你在这里看到的,首先有原始图像,然后通过编码器将其转换为低维图像,接着再通过解码器重建,目标是让两者尽可能相似,这就是训练方法。

먼저 이제 필요한 라이브러리 돌려주시고
首先现在请转发所需的库


Attendees 1 01:36
与会者 1 01:36

그다음에 이제 사용할 데이터셋은 계속 많이 사용했었던 앱 리스트 데이터 셋 불러가지고 사용하도록 하겠습니다.
接下来,我们将继续使用我们一直在使用的应用列表数据集。

그래서 여기 보시면 이제 앱 리스트 데이터 챗 불러와가지고 얘가 뒤풀 형태로 나오니까 걔 그대로 가져오죠.
所以当你看到这里时,应用列表数据已经被加载,它以列表的形式出现,我们就直接使用它。

그래서 엑스트인이랑 엑스 테스트 이렇게 넣어주고 그리고 나서 이제 스트레인 같은 경우에 x 같은 경우에는 이제 흑백 이미지니까 0부터 255까지 숫자를 가지고 있어서 동일하게 저희가 250으로 나눠 가지고 스케일링까지 한 번에 진행할 수 있습니다.
所以我们将 X 训练集和 X 测试集放入其中,对于训练集 X 而言,由于是黑白图像,数值范围是 0 到 255,我们可以直接除以 250 进行缩放。

그래서 쉐입을 확인을 해보면 이제 스트레인 같은 경우에는 이제 6만 장이고 엑스 테스트 같은 경우에는 만 장이겠죠.
因此如果我们查看形状,训练集是 6 万张图像,测试集是 1 万张图像。

저희가 이제 만들어 본 오토 인코더는 이런 식으로 생겼는데 계속 했던 것처럼 이제 캐라스 사용해서 모델 만들어보면 되겠죠.
我们现在制作的这种自动编码器看起来是这样的,就像我们之前一直做的那样,现在可以使用 Keras 来创建模型。

그래서 여기 조건이 적혀 있는데 일단 인코더 같은 경우에는 인풋을 받아와서 이제 플래팅을 시키는 거죠.
所以这里有个条件,首先对于编码器来说,就是接收输入并进行展平。


Attendees 1 02:34
第 1 位观众 02:34

그다음에 이제 첫 번째 댄스 레이어에는 아웃풋이 100개고 그다음에 두 번째 젠스 레이어는 이제 아웃풋이 30개인데 그때 이제 밸류 액티베이션을 쓴다고 되어 있어요.
接下来,第一个密集层的输出是 100 个,然后第二个密集层的输出是 30 个,这时使用了值激活函数。

그래서 그대로 일단 인코더부터 해 주면
那么就从编码器开始吧


Attendees 1 03:06
参会者 1 03:06

인풋 쉐입은 이제 이미지가 들어가야 되니까 28 바이 28이겠죠.
输入形状现在应该是 28 乘 28,因为图像要进入这里。

그럼 이 인풋이 들어와서 이제 플렉팅을 해주면 되니까
那么输入进来后,我们只需要展平它


Attendees 1 03:30
与会者 1 03:30

브레튼을 시켜주고 그러면 쉐입이 이제 784가 있죠.
让布雷顿进行变换,那么现在形状将是 784。

그다음에 이제 댄스 레이어 2개 쌓아주면 되겠죠.
然后接着叠加两个密集层就可以了。

첫 번째는 이제 아웃풋이 100개였고 그다음에 액티베이션은 연료겠죠.
第一个输出是 100 个,然后激活函数是燃料。


Attendees 1 03:52
与会人员 1 03:52

그리고 두 번째 같은 경우에는 똑같이 댄스 레이어인데 아웃풋이 30개라고 했어요.
而第二个情况也是同样的全连接层,只是输出是 30 个。


Attendees 1 04:09
与会者 1 04:09

이렇게 하시면 인코더는 쌓은 거겠죠. 그러면 이 과정이 지금 여기서부터 시작을 해서 여기까지 온 거죠.
这样一来就是堆叠了编码器。然后这个过程是从这里开始,一直到这里。

그래서 최종적으로 얘가 지금 30 차원의 벡터가 되는 겁니다.
所以最终它会变成一个 30 维的向量。

그럼 디코더는 이제 여기서부터 다시 원래대로 가야 되니까 반대로 가면 되겠죠 쉐이블
那么解码器现在需要从这里开始再次恢复原状,所以就反着来就可以了,形状要对


Attendees 1 04:48
与会者 1 04 时 48 分

그러면 이제 아까 레이턴트 스페이스의 이제 사이즈가 30이었으니까 이제 디코더의 인풋에는 30 차원의 벡터가 들어가면 되겠죠.
那么现在,之前潜在空间的大小是 30,所以现在解码器的输入中将会输入 30 维的向量。


Attendees 1 05:02
与会者 1 05:02

그다음에 여기 보시면 인풋은 이렇게 돼 있고 그리고 첫 번째 댄스 레이어는 이제 아웃풋이 100이고 레리 액티브베이션을 사용을 하고 그다음에 이제 두 번째 댄스 레이어 같은 경우에는 이제 28과 28 아웃풋이 나온다고 하죠.
接下来,这里我们可以看到输入是这样的,第一个密集层的输出是 100,并且使用了 ReLU 激活函数,然后第二个密集层的输出是 28x28。

그리고 액티베이션은 cm입니다. 그대로 써주면 되겠죠.
而激活函数是 CM。就这样直接写就可以了。


Attendees 1 06:00
与会者 1 06:00

이렇게 하면은 이제 인풋이랑 지금 아웃풋이랑 쉐입이 같죠.
这样,输入和输出的形状就是相同的了。

그리고 이제 인코더 같은 경우에는 이제 28과 28이 들어와서 이제 하나의 1차원에 이제 길다는 벡터로 플래튼이 된 다음에 걔가 이제 100차원 그리고 30차원까지 가고 이 30차원을 다시 디코더로 전달을 해서 이 30이 점점 늘어난 거죠.
而现在对于编码器,输入是 28 乘 28,然后被展平成一个一维向量,接着逐渐减少到 100 维,然后到 30 维,并将这 30 维传递给解码器,这个维度逐渐增加。

원래 30 이만큼이었다가 좀 길게 아웃풋이 100인 댄스 레이어 그다음에 이제 원래 사이즈 근데 이제 바로 28 28이 아니고 784로 바꾼 다음에 걔를 다시 리쉐이을 해서 이제 2차원 형태의 이미지가 나오겠죠.
原本是 30 维,然后逐渐扩展到输出为 100 的密集层,接着变回原始尺寸,但不是直接变回 28 乘 28,而是先变成 784,然后再重塑为二维图像。

그럼 이렇게 인코더랑 디코더를 각각 쌓았으면은 이제 하나의 모델로 합쳐주면 됩니다.
那么,如果我们分别搭建了编码器和解码器,接下来就需要将它们合并成一个模型。

여기서 보시면 이제 빌드 스테트 오토 인코더죠. 그러니까 인코더랑 디코더를 스틱하면 돼요
在这里,您可以看到我们正在构建状态自动编码器。也就是说,只需将编码器和解码器粘合在一起即可。


Attendees 1 06:58
出席人员 1 06:58

를 이어 붙이면 됩니다.
只需将它们连接起来。


Attendees 1 07:07
与会者 1 07:07

보시면 이제 얘는 얘고 얘를 이제 가져와서 다시 연결하는 거겠죠.
您可以看到,这是它,现在我们将它带过来并重新连接起来。

그래서 실행을 시켜줍니다.
因此我们运行它。


Attendees 1 07:31
与会者 1 07:31

그다음에 이제 여기 써 보시면 얘를 이제 디스플레이를 해보면 이런 식으로 두 개의 이제 얘가 인코더고 얘가 디코더죠.
然后,如果我们在这里显示它,就会看到这样的情况,这是两个部分,一个是编码器,另一个是解码器。

이 두 개가 연결된 이런 캐라스 모델이 출력이 되는데 이때 이제 익스펜드 네스틱 요 조건을 주지 않으면 저희가 처음에는 이제 인코더랑 디코더랑 따로따로 정의를 한 다음에 인코더 디코더를 붙여서 최종적으로 이제 요 오토 인코더를 만들었는데 얘를 이제 퍼스로 넣으면 그러니까 얘가 디폴트 값이 퍼스거든요.
这两个部分连接成一个 Keras 模型并输出,此时如果不给出展开状态(expansive)条件,最初我们是分别定义编码器和解码器,然后将编码器和解码器连接起来,最终创建这个自编码器。如果将它作为第一个输入,那么它的默认值就是第一个。

그래서 얘를 제외를 해주면 이렇게 최종적으로 저희가 붙였을 때 이 두 개에 대한 결과만 나오게 됩니다.
因此,如果不考虑这个,当我们最终合并时,只会出现这两个结果。

그래서 저희가 지금 원하는 거는 이걸 전체적으로 보는 거니까 이 조건을 넣어주면 되겠죠.
所以我们现在想要的是整体查看,因此只需要加入这个条件就可以了。

얘는 원래 있었어요. 그래서 다시 실행을 시켜주면은 자세하게 볼 수가 있죠.
它本来就存在。所以如果再次运行,就能详细地看到。

그래서 아까 말씀드렸던 것처럼 지금 얘는 인코더에 아웃풋이죠.
正如我之前说的,现在这个是编码器的输出。


Attendees 1 08:23
出席人员 1 08:23

그러니까 30이고 이거를 이제 자세하게 살펴보면 이제 플랜트는 원래 28과 28을 가져와서 784로 플래팅 한다고 했고 얘를 이제 130이 되도록 이렇게 윗변이 사와리골 모양으로 되도록 하는 거겠죠.
所以说是 30,如果仔细看的话,原本是把 28 和 28 带过来,铺平到 784,然后将这个变成 130,让上面的形状像梯形。

그래서 파라미터 개수 보시면 이제 플래트는 파라미터가 다 스트는 파라미터가 없으니까 0이고 그 외에는 이제 이런 식으로 있습니다.
所以你看参数数量,平展层没有参数,因此为 0,其他参数情况就是这样。

그리고 이제 두 번째 시퀀셜 레이어 같은 경우에는 얘가 디코더죠.
然后第二个顺序层是解码器。

그래서 이 디코더 같은 경우도 아웃풋은 284 28인데 얘를 조금 더 자세하게 살펴보면 인풋이 원래 30이었고 얘가 아웃풋이 100이겠죠.
所以这个解码器的输出是 284 28,如果仔细观察的话,它的输入原本是 30,输出会变成 100。

얘가 이제 여기로 들어와서 100으로 늘어나고 그다음에 얘를 이제 또 그다음 벤스 레이어로 전달을 해서 총 784로 늘어나게 됩니다.
它进入这里后扩展到 100,然后再传递给下一个密集层,最终扩展到总共 784。

얘는 밑변이 짧은 요은 살아 있고 모양의 디코더가 되겠죠.
这是一个底边较短的有生命的要素,并且解码器将具有这种形状。

그래서 얘를 이제 리시을 하니까 이런 식으로 나와서 얘의 아웃풋이 최종적으로 이제 얘의 아웃풋이랑 동일하겠죠.
所以现在我们对它进行反向传播,它将以这种方式输出,最终它的输出将与原输出相同。


Attendees 1 09:25
参与者 1 09:25

그러면 이제 이렇게 모델을 정의를 했으니까 얘를 컴파일하고 트레이닝 할 수가 있는데요.
既然我们已经定义了模型,那么现在就可以对它进行编译和训练了。

컴파일부터 보면은 지금 여기서 이제 모델을 컴파일 할 때 사용하는 옵티마이저랑 그리고 이제 어떤 로스를 사용할 건지 적혀 있어요.
从编译的角度来看,这里写明了在编译模型时使用的优化器和要使用的损失函数。

저희가 사용할 이제 옵티마이저 같은 경우에는 이제 SGD를 사용을 할 건데 그때 러닝 레이트는 1.0이라고 되어 있네요.
对于我们将要使用的优化器,我们将使用 SGD,其学习率设置为 1.0。

그래서 그대로 작성을 해 주겠습니다. 저희가 최종 아까 마지막에 이제 정의했던 모델이 스펙트 a였죠.
所以我将按照之前最后定义的模型直接编写。我们之前定义的模型是 spec a。

얘를 그대로 가져올게요.
我将直接引用它。


Attendees 1 09:59
听众 1 09:59

그리고 컴파일을 해주면 되죠. 로스부터 할게요.
然后编译就可以了。我来说损失函数。

로스는 바이너리 크로스 엔트로피죠.
损失函数是二值交叉熵。


Attendees 1 10:14
与会者 1 10:14

그다음에 옵티마이저는 캐라스에서 제공하는 옵티마이저 사용할 건데 스gd고 워닝 메이트 시행해 줄 수가 있죠.
接下来我们将使用 Keras 提供的优化器,可以使用 SGD 和 Adam 优化器。


Attendees 1 10:36
与会者 1 10:36

이렇게 실행을 시켜주시면 모델 컴파일도 완료가 되겠죠.
这样执行的话,模型编译也就完成了。


Attendees 1 10:57
与会人员 1 10:57

그다음에 이제 트레이닝 단계인데 컴파일한 걸 그대로 이제 트레인을 하면 되겠죠.
接下来就是训练阶段,直接对编译好的模型进行训练即可。


Attendees 1 11:10
参会人员 1 11:10

근데 이제 오토 인코더 같은 경우에는 인풋이랑 아웃풋이 동일한 이미지로 설정이 되어 있죠.
因此,对于自动编码器来说,输入和输出都被设置为相同的图像。

그래서 인풋이랑 아웃풋 자리에 둘 다 엑스트레인을 넣어주고요.
所以在输入和输出的位置都放置 X_train。

그다음에 에폭은 이제 10건 누리라고 했으니까 10건으로 지정해 줄게요.
然后,因为现在说要执行 10 个轮次,我们就将轮次设置为 10 个。

그래서 실행시켜주시면 학습이 되겠죠.
所以只要运行,就可以开始学习了。


Attendees 1 12:13
与会人员 1 12:13

보시면 이제 처음에 로스가 한 0.28 정도 됐는데 이렇게 학습을 하고 나니까 이 0.1 정도로 줄어 있고 얘를 또 이제 확인을 해보면 일단 저희가 이제 항상 사용했던 게 이 이미지 이제 넣어주면은 얘를 출력하는 그 코드를 함수를 만들어서 사용하지 않고 이걸 가져와서 계속 사용했었는데 일단 클러드 이미지를 하나 정리를 해 줄게요.
让我看看,一开始损失大约在 0.28 左右,经过训练后已经降低到大约 0.1 左右。如果我们像往常一样检查,通常会创建一个函数来输出图像,但这次我将整理一下云图像。

그다음에 이제 테스트 이미지를 가지고 와서 한번 확인을 해볼 건데 일단 트레인 데이터셋의 이제 0번째 이미지 같은 경우에는 지금 이렇게 되어 있는데 얘는 얼핏 보면 옷처럼 생겼죠.
接下来,我将使用测试图像进行验证。训练数据集中的第 0 张图像看起来是这样的,乍一眼看上去很像衣服。

유니스 데이터는 이런 이제 숫자 같은 형태를 가진 흑백 이미지가 이렇게 있죠.
优尼斯数据集是由这些看起来像数字的黑白图像组成的。

그래서 얘는 지금 한번 출력을 찍어보니까 5처럼 생겼는데 이걸 바탕으로 이제 학습된 결과를 살펴보겠습니다.
所以当我们打印出来时,它看起来像是数字 5,我们将在此基础上查看学习的结果。


Attendees 1 13:10
出席者 1 13:10

그래서 얘를 이제 인코더랑 디코더 따로따로 생각을 해보면 처음에 저희가 이런 28 바위 28 데이터셋을 가지고 와서 얘를 이제 30 차원의 이제 레이턴트 벡터로 변환을 해줬었죠.
所以如果我们分别考虑编码器和解码器,一开始我们使用这个 28 乘 28 的数据集,并将其转换为 30 维的潜在向量。

그대로 한번 해볼게요. 그래서 여기 보시면 인코더를 가져옵니다.
我就这样试试。那么在这里,我们获取了编码器。


Attendees 1 13:38
参会人员 1 13:38

이 이미지를 이제 인코더에 전달해 주면 되겠죠. 근데 넣어줄 때 쉐입을 바꿔서 넣어줘야 돼요.
现在我们将把这个图像传递给编码器。但是在传入时需要改变形状。


Attendees 1 13:51
与会者 1 13:51

이렇게 변경해 주겠습니다. 앞에 비치 사이즈가 추가가 된 거죠.
这样我将为您进行更改。前面已经增加了比基尼尺码。


Attendees 1 13:59
与会者 1 13:59

얘를 실행시켜주시면 얘가 이제 인코더를 통과하면 이런 레이턴트 벡터가 되는 겁니다.
如果您运行这个程序,当它通过编码器后,就会变成这样的潜在向量。


Attendees 1 14:12
与会者 1 14:12

그러면 디코더 같은 경우에는 얘를 전달받아서 이제 원래 이미지로 원래에 가까운 이미지로 약간 생성 변환을 하려고 하는 거죠.
那么对于解码器来说,它接收这个数据,然后试图生成或转换成尽可能接近原始的图像。

그러면 이제 이 데이터로부터 이제 다시 만들어진 재구성된 이미지를 한번 출력을 해보세요.
那么现在请从这些数据中输出重建的图像。

그러면 얘 같은 경우에는 이제 디코더를 가져와서 얘를 넣어주면 되겠죠.
那么在这种情况下,我们就可以把解码器拿来直接放进去了。


Attendees 1 14:56
参会人员 1 14:56

이제 여기에서 사용하는 이 컴프레스트 이미지 같은 경우에는 얘죠 얘를 가져와서 여기다 넣어줍니다.
现在,这里使用的这个压缩图像就是这个,我们把它拿来并放在这里。


Attendees 1 15:09
与会者 1 15:09

그래서 얘를 또 실행을 해주면 이렇게 이제 예원은 완전 동일하지 않지만 이제 원래 데이터랑은 좀 다르지만 그래도 유사한 형태의 이런 5를 나타내는 것 같은 이미지가 생성이 된 걸 확인할 수가 있습니다.
因此当再次执行时,你会看到现在虽然不完全相同,但是与原始数据相比还是有些不同,但依然可以看到生成了一个类似于表示数字 5 的图像。


Attendees 1 15:30
与会者 1 15:30

그러면 그다음에는 이제 5장의 이미지를 사용을 해서 이제 전후를 한번 비교를 해볼게요.
那么接下来我将使用 5 张图像来比较前后的情况。

얘도 일단 실행을 먼저 해요. 잠시만요.
我先执行一下。稍等。


Attendees 1 15:47
与会者 1 15:47

그럼 여기는 재생성을 하는 데니까 똑같이 넣어주면 되는데 지금은 이제 이미지를 가지고 와서 모델에 실행을 시키는 거니까 인코더랑 디코더가 한 번에 있는 이제 오토 인코더를 넣으면 되겠죠.
那么这里是进行重建,所以只需要按照相同的方式放置,现在是从图像中获取并在模型中执行,因此可以将包含编码器和解码器的自动编码器直接放入。

그건 이제 여기서 받아오는 거니까 얘에다가 넣어주면 됩니다.
因为是从这里获取的,所以可以直接将其放置在这里。

얘를 트
那个孩子


Attendees 1 16:19
与会者 1 16:19

이렇게 하면은 이제 저희가 원하는 이미지 개수만큼 이제 인풋 데이터에서 그만큼 잘라서 모델에다가 넣어주는 거죠.
这样的话,我们就可以从输入数据中按照我们想要的图像数量切割,然后放入模型中。

얘를 시식해 보시면 이렇게 나오게 됩니다.
如果你尝试运行它,就会得到这样的结果。


Attendees 1 16:38
与会者 1 16:38

그래서 얘를 보시면 이제 위에는 위에는 원래 이미지고요.
所以当你看这个的时候,上面是原始图像。

아래는 이제 오토 인코더로 통과한 그런 결과의 이미지입니다.
下面是通过自编码器处理后的图像结果。


Attendees 1 16:58
参会人员 1 16:58

그러면 이제 아까 저희가 인코더를 통과하면 이런 레이턴트 벡터가 됐죠 이것들을 가지고 이제 한번 저희가 시각화를 통해서 잘 매핑이 됐는지 확인을 해보겠습니다.
那么现在,我们之前通过编码器得到了这样的隐藏向量,接下来我们将通过可视化来确认是否很好地映射了这些向量。

그래서 얘를 인포트 해주고 그래서 보시면 트레이닝 이미지 셋 전체 중에서 이제 처음에 200개만 가져온다고 되어 있죠.
所以我们导入它,你可以看到,是从整个训练图像集中最初取了 200 个图像。

그러면 저희가 원하는 거는 이제 인코디드 된 데이터니까 그 스펙 인코더겠죠.
那么我们想要的就是编码后的数据,也就是规格编码器。


Attendees 1 17:43
与会者 1 17:43

근데 200장을 한다고 했죠 오케 시켜 줄게 그럼 이렇게 하면은 이제 엑스 테스트 데이터셋에서 이제 상위 200개가 이제 인코더를 통과해 가지고 여기 안에 들어가겠죠.
那么 200 张来着,好的,我会帮你完成。这样的话,现在从 X 测试数据集中,这 200 个最上面的数据将通过编码器进入。


Attendees 1 18:06
与会者 1 18:06

그다음에 이제 2차원으로 투영을 시켜보겠습니다.
接下来我将把它投影到二维空间。

얘는 그대로 위에서 이제 객체를 동의를 해 줬으니까 그대로 사용하면 되겠죠.
既然已经在上面得到了对象的同意,就可以直接使用了。


Attendees 1 18:25
与会者 1 18:25

그래서 얘를 실행시켜주시면 이렇게 됐네요.
所以当您执行它时,就会变成这样了。


Attendees 1 18:34
与会者 1 18:34

그러면 여기 보시면 이제 여기서 코딩된 이제 200개의 데이터셋을 가지고 각각 다른 컬러로 찍어줄 건데 엠리스트 데이터 셋 같은 경우에는 0부터 9까지 라벨이 있는데 총 10개죠.
那么在这里,我们将使用已编码的 200 个数据集,并以不同的颜色绘制它们。对于 MNIST 数据集来说,标签从 0 到 9,总共有 10 个。

그 라벨을 이제 각각 다른 색으로 매핑을 시켜서 출력을 시켜줄 겁니다.
现在我们将把这些标签映射到不同的颜色并进行输出。

그래서 여기 보시면 이제 총 200개니까 200개에 대해서 이제 포문을 돌리는데 텍스트를 이제 찍어줘야겠죠.
所以在这里,由于总共是 200 个,我们将对这 200 个进行遍历,并需要打印出文本。

그러면
那么


Attendees 1 19:40
参会人员 1 19:40

아까 저희가 이제 인코더를 통과한 그러니까 인코딩된 이제 데이터셋을 이제 2차원으로 투영을 했는데 그래서 이제 얘의 x 좌표 그리고 y 좌표 그다음에 라벨 값을 가지고 와서 이 라벨을 여기에 해당하는 색깔에 맞춰서 이제 출력을 하는 거겠죠.
刚才我们通过编码器将数据集投影到了二维空间,然后取出其 x 坐标、y 坐标以及标签值,并根据对应的标签为其分配颜色进行输出。

그래서 얘를 또 실행시켜줍니다. 그러면
所以我们再次执行它。然后


Attendees 1 20:08
与会人员 1 20:08

그럼 결과를 보면은 이런 식의 이제 플라이 나오는데 플렛을 자세히 보시면 이제 각 라벨별로 약간 모여져 있는 걸 확인할 수가 있어요.
那么从结果来看,现在出现了这样的分布图。如果仔细观察这个图,你会发现每个标签的数据点都基本聚集在一起。

그래서 완벽하게 이제 분리되지는 않았지만 0은 그래도 약간 0끼리 가까이 있고 4도 6쪽에 몰려져 있고 1이랑 6이랑 이런 식으로 이제 3이랑 5 같은 경우에는 저희가 육안으로 구분하기에 이게 좀 흐리게 있다고 가정을 하면은 바로 구분하기 어렵죠.
所以虽然现在还没有完全分开,但 0 还是在 0 附近聚集,4 也聚集在 6 周围,1 和 6 也是这样,比如 3 和 5 的情况,如果我们假设它们在视觉上是模糊的,那么就很难区分。

그래서 모델도 얘를 이제 다른 숫자들만큼 명확하게 구분하지는 못했기 때문에 이런 식으로 섞여 있는 것을 보실 수가 있습니다.
因此模型也没有像其他数字那样清晰地区分它,所以你可以看到它们是这样混在一起的。


Attendees 1 20:45
出席人数 1 20:45

방금 여기서 이렇게 3개 채워줬습니다.
我刚才在这里填写了这 3 个。


Attendees 1 21:19
出席人员 1 21:19

그러면 여기까지 이제 오토 인코더 사용해가지고 이미지 재구성을 해봤고 그다음에는 이제 두 번째는 개이겠죠.
那么,我们现在使用自编码器重建了图像,接下来是第二个模型。

걔는 이제 배웠다시피 이제 두 개의 신경망으로 구성이 된다고 볼 수가 있는데 일단 첫 번째는 제너레이터죠.
正如我们所学的,它可以被看作是由两个神经网络组成的,首先是生成器。

제너레이터 같은 경우에는 이제 여기서 보시면 이제 이 제트가 노이즈죠.
生成器在这里接收噪声。

노이즈를 받아와가지고 이제 가짜 이미지를 생성을 하고 디스크리미네이터 같은 경우에는 실제 이미지랑 가짜 이미지를 받아와서 이제 이게 실제인지 거짓인지 구분을 하는 그런 역할을 하고 있습니다.
生成器接收噪声并生成伪图像,而鉴别器则接收真实图像和伪图像,并执行区分真伪的任务。

그래서 이제 이 모델의 목표는 여기 나와 있는 것처럼 여기서 보시면 얘는 이제 진짜 이미지가 리얼 이미지가 이제 진짜일 확률이고 얘는 이제 진짜 가짜 이미지가 진짜일 확률인 거죠.
所以现在这个模型的目标是,如你在这里看到的,这里是真实图像的真实概率,而这里是判断假图像是真实图像的概率。

그래서 얘를 각각 이제 높이는 방식으로 학습을 하게 됩니다.
所以我们将以分别提高各自的方式来进行学习。

그래서 최종적으로 이제 디스크리미네이터가 실제랑 거짓 데이터를 잘 구분하지 못하도록 하는 게 이 목표겠죠.
所以最终目标就是使判别器无法很好地区分真实数据和虚假数据。


Attendees 1 22:29
与会者 1 22:29

그래서 얘를 실행시켜주시면 여기서 저희가 사용할 이제 와이브러리를 불러오고 똑같이 이제 리스트 데이터셋으로 사용을 할게요.
所以当我执行这个时,我们将导入我们要使用的库,并同样使用列表数据集。

그럼 얘는 이제 리얼 이미지죠. 동일하게 불러오고 원래 이제 트레인 셋에 6만 개가 있었는데 저희는 이제 만 개씩 끊어가지고 사용을 해볼게요.
这是实际图像。我们将以同样的方式加载,原本训练集中有 6 万个图像,我们现在将取 1 万个来使用。

그리고 이제 각 클래스에 대해서 샘플 이미지를 출력을 해보면 아까 말씀드렸던 것처럼 이제 리스트는 0부터 9까지 클래스가 있고 그 각 클래스에 속하는 이제 숫자의 형태가 이미지로 나타나 있기 때문에 한번 확인을 해보면 이런 이미지들이 있다고 볼 수가 있겠죠.
现在,如果我们输出每个类别的样本图像,正如我之前提到的,列表中包含从 0 到 9 的类别,每个类别都对应着以图像形式呈现的数字形状,我们可以看看这些图像。


Attendees 1 23:21
与会者 1 23:21

그러면 이제 학습을 시켜보기 전에 이제 이미지를 다시 재구성을 해 줄 건데 여기 보시면 이제 스트레인 같은 경우에는 이렇게 먼저 리쉐입을 해줍니다.
那么在进行学习之前,我现在将重新构建图像。从这里可以看到,对于应变,我们首先会进行重塑。

그래서 얘는 이제 784로 1차원으로 변경이 되겠죠.
因此,它现在将被转换为一个 784 维的一维向量。

그다음에 이제 인풋을 또다시 노멀라이즈 해 주는데 원래 이제 저희가 위에서 할 때는 얘를 255로 나누기만 했었는데 그러면 이제 스트레인의 분포가 각 데이터의 분포가 이제 0부터 1까지였죠.
接下来,我们再次对输入进行标准化。之前我们只是将其除以 255,这样数据的分布就在 0 到 1 之间。

근데 저희가 원하는 건 이제 마이너스 1부터 1까지 되면 좋으니까 얘를 250으로 나눠서 얘를 0부터 1까지 한 다음에 그 전체 데이터에다가 이제 0.5를 빼주면 얘의 최솟값이 마이너스 0.5고 최대값이 0.5겠죠.
但是我们希望数据分布在负 1 到 1 之间,所以先将其除以 250,使其在 0 到 1 之间,然后再减去 0.5,这样最小值就是负 0.5,最大值是 0.5。

걔를 전체 또 2를 곱해주면은 최종적으로 트레인은 이제 마이너스 1부터 1 안에 속하도록 됩니다.
如果将这个值乘以 2,最终训练将处于负 1 到 1 的范围内。

그래서 예린 실행시켜주시면 잠시만요.
那么请让我执行。


Attendees 1 24:22
参会人员 1 24:22

이렇게 저희가 원하는 형태에 나오겠죠. 그래서 쉐입을 변경하기 전에는 이제 만 개의 데이터셋이고 28과 28의 이미지였는데 지금 리앱을 했으니까 똑같이 만 개의 데이터지만 이제 28과 28을 1차원으로 바꿔서 784의 형태가 가지고 있는 것을 확인할 수가 있어요.
这样我们就会得到我们想要的形式。在改变形状之前,数据集是一万个、28×28 的图像,现在通过展平处理,依然是一万个数据,但是已经将 28×28 转换为一维的 784 形式,我们可以确认这一点。

그러면 이제 제너레이터를 먼저 빌드를 해볼 건데 여기서 보시는 것처럼 레이턴트 스페이스 같은 경우에는 이제 100차원으로 정의가 되었다고 합니다.
那么现在我们将先构建生成器,在这里可以看到,潜在空间被定义为 100 维。

이제 얘는 어디서 쓰냐면 얘가 이제 제인 거죠. 그래서 제너레이터에 들어오는 이 노이즈가 얘가 이제 100차원이라고 보시면 됩니다.
现在,这个空间就是生成器的本质。所以进入生成器的噪声可以被视为 100 维。


Attendees 1 25:05
出席者 1 25:05

그다음에 이제 이미지 디네션 같은 경우에는 28 바이 28 곱하기 28이죠.
接下来,就拿图像维度来说,是 28 乘以 28。

그러면 784이죠. 저희가 아까 이시기를 했으니까 그대로 784로 적어줄게요.
那就是 784 了。因为我们之前已经讨论过这个问题,所以我们将直接写成 784。


Attendees 1 25:21
与会者 1 25:21

그다음에 초기화를 해놓고 그다음에 이제 제너레이터를 만들면 되겠죠.
接下来进行初始化,然后创建生成器就可以了。

먼저 이렇게 제너레이터를 정리를 해주고 레이어를 쌓아주면 됩니다.
首先像这样整理生成器,然后堆叠各层即可。


Attendees 1 25:36
与会者 1 25:36

여기서 보시면 인풋 레이어랑 이제 첫 번째 히든 레이어인데 인풋 레이어 같은 경우에는 저희가 인풋 사이즈를 위에서 따로 정의를 해줬으니까 얘를 그대로 사용해 주면 되겠죠.
在这里,对于输入层和第一个隐藏层,由于我们之前已经单独定义了输入大小,所以可以直接使用它。

제너레이터에다가 지금은 하나씩 쌓는 거죠.
现在是逐层堆叠到生成器中。


Attendees 1 25:58
参会者 1 25:58

먼저 이제 128의 댄스 레이어인데 인풋 쉐입은 이제 지금은 한 번에 쓸게요.
首先,现在有一个 128 的密集层,输入形状我现在将一次性写出。


Attendees 1 26:22
参会者 1 26:22

그렇게 해 주시면은 이제 인풋 쉐입은 아까 위에서 정의했던 제트가 들어오겠고 걔를 이제 하나씩 댄스 레이어에서 이제 아웃풋이 128사이즈로 변환을 해주겠죠.
如果这样做的话,输入形状就是我们之前定义的 Z,它将逐个通过密集层,并将输出转换为 128 大小。

그럼 처음에 100개가 들어와서 128대로 나가겠죠.
那么一开始会有 100 个输入,输出为 128 个。


Attendees 1 26:45
与会者 1 26:45

근데 이제 아래에서 보시는 것처럼 이 제너레이터를 생성을 할 때 이제 리키렐로랑 그리고 배치 노멀라이제이션을 진행을 해줘야 합니다.
现在,就像你们在下面看到的,在创建这个生成器时,需要进行 Leaky ReLU 和批归一化处理。

그래서 렐루 사용하는 이유는 그냥 리키렐루 사용하는 이유는 일반 렐루보다 이제 조금 더 음수 입력도 받아들이기 때문에 다잉 밸류를 방지할 수 있죠.
使用 Leaky ReLU 的原因是,与普通 ReLU 相比,它可以接受更多的负值输入,从而可以防止死亡值。

그래서 여기도 똑같이 넣어줍니다.
所以这里也同样放置。


Attendees 1 27:22
与会者 1 27:22

여기서 알파 값은 이제 0보다 작은 영역에서 기울기를 조절을 하는 거죠.
在这里,alpha 值现在是在小于 0 的区域调整梯度。

첫 번째 흰 레이어랑 이제 두 번째 세 번째도 동일하게 0.2로 설정을 해 줍니다.
第一个白色层,以及第二层和第三层,我们都将其设置为 0.2。

그다음에 노멀라이제이션도 해주면 됩니다. 여기도 이제 똑같이 얘를 그대로 사용을 해 줄게요.
接下来也要进行归一化处理。这里我将按照相同的方式直接使用它。


Attendees 1 27:46
与会者 1 27:46

그러면 이렇게 이제 첫 번째 히든 레이어, 두 번째 히든 레이어, 세 번째 히든 레이어가 되고 이제 아웃풋 레이어인데 얘는 제너레이터니까 이제 아웃풋 하는 사이즈가 원래 이미지랑 동일한 사이즈로 아웃풋을 생성을 해야겠죠.
那么,现在第一个隐藏层、第二个隐藏层、第三个隐藏层已经确定,现在是输出层,因为它是生成器,所以输出的大小应该与原始图像的大小相同。

그러면 이제 추가를 할 텐데
那么现在将要添加


Attendees 1 28:10
参会人员 1 28:10

이미지 디멘션으로 하면 되겠죠 얘는 7804입니다.
使用图像维度就可以了,这个是 7804。

위에서 저희가 7804로 정의를 했기 때문에 그리고 이제 액티베이션은 저희가 위에서 원래 같은 경우에는 이제 0부터 1까지 해가지고 이제 소프트맥스나 시그모이드로 아웃풋이 나오는데 얘 같은 경우에는 마이너스 1부터 1까지로 했으니까 이 탄센 데이치를 사용하게 됩니다.
因为我们之前将其定义为 7804,而且现在激活函数原本是从 0 到 1,输出是通过 softmax 或 sigmoid 得到的,但在这种情况下是从负 1 到 1,所以我们将使用双曲正切(tanh)函数。


Attendees 1 28:37
听众 1 28:37

코네이트를 사용해서 이렇게 이제 아웃풋을 생성을 해 주겠습니다.
我将使用 Coniate 来生成这个输出。

이를 실행시켜주시고 여기서도 이제 인풋의 요 오류 방지 만약에 이 경고를 없애고 싶으시면 요 인풋이 위에 따로 빼서 생성해 주시면 되겠죠.
执行此操作,在这里也可以防止输入错误。如果您想消除此警告,可以将输入单独提取出来进行生成。

하지만 작동하는 데는 문제가 없습니다. 그래서 지금 어디 채웠냐면 여기 한 번 채웠고요.
但是运行起来没有问题。所以现在填充的地方是这里已经填充了。

이미지 디멘전 784로 채웠고 그다음에 이제 여기 채웠죠 인풋 레이어랑 그리고 첫 번째 히든 레이어 채웠습니다.
图像维度填充为 784,然后在这里填充了输入层和第一个隐藏层。

이렇게
这样


Attendees 1 29:14
与会者 1 29:14

그래서 여기서 유의하실 점은 이제 첫 번째 히든 레이어, 두 번째 히든 레이어 세 번째 히든 레이어는 모두 이제 동일한 이키레류랑 이제 비치 노멀라이제이션을 사용을 하고 있는데 어 댄스 레이어 아웃풋 사이즈만 다른 형태죠 이렇게 보시면 128 256 그리고 512 한 다음에 최종적으로 여기서 784가 되겠죠 그러면 이렇게 정의한 이제 제너레이터를 한번 서머리를 통해서 찍어보면 보시면 저희가 쌓았던 게 한 층 한 층씩 지금 들어가 있죠 그래서 이제 여기서 보시면 처음에 인풋이 이제가 100이었는데 아웃풋이 ab 128로 나가는 거고 그래서 얘도 이제 100이랑 128 곱한 다음에 이제 128을 더해서 파라미터가 이렇게 되는 거겠죠.
所以这里需要注意的是,第一个隐藏层、第二个隐藏层和第三个隐藏层现在都使用了相同的 LeakyReLU 和批归一化,只是每层的输出大小不同。如果你看的话,是 128、256 和 512,最终会达到 784。如果我们通过 summary 打印出定义的生成器,你会看到我们逐层堆叠的网络结构。从一开始的输入是 100,输出变成了 128,所以参数是 100 乘以 128,然后加上 128。

그다음에 이제 리키엘르랑 베치노갈라이제이션은 그 파라미터가 없거나 아니면 여기는 학습 가능하지 않은 그러니까 학습하지 않는 논 트레이너블 파라미터겠죠.
接下来,LeakyReLU 和批归一化是没有参数,或者说是不可学习的、非训练参数。


Attendees 1 30:15
与会人数 1 30:15

그래서 얘는 이제 배치 노글라이제이션에서 나오는 애들입니다.
所以这些是从批归一化中出来的。

그 외에는 나머지는 이제 다 트레이너블 파라미터겠죠.
除此之外,剩余的都是可训练参数。

최종적으로 이제 이 제너레이터를 통해서 생성된 아웃풋은 783개 이렇게 있는 그러면 이렇게 해서 이제 제너레이터를 빌드를 했으니까 드리스 프리미네이터도 빌드를 해볼게요.
最终通过这个生成器产生的输出是 783 个,既然已经构建了生成器,那么我们接下来也来构建一个判别器。

얘도 똑같이 이제 시퀀셜 해가지고 새로 네트워크를 정리를 해 준 다음에 똑같이 쌓아주면 됩니다.
这个也是同样地,现在将序列重新整理网络,然后像之前一样堆叠就可以了。

근데 디스크리미네이터는 이제 구분자니까 구분하는 거니까 인풋은 원래 이미지 인풋이랑 같아야겠죠.
但是鉴别器既然是鉴别器,那么输入就应该和原始图像的输入相同。

여기도 이제 댄스 레이어를 쌓아줄 건데 여기서 인풋을 정의를 해줘야겠죠.
这里我们也将堆叠一些密集层,首先需要定义输入。

여기 아웃풋은 128이고 인풋은 위에서 봤던 것처럼 이제 이미지 디멘전을 넣어주겠습니다.
在这里,输出为 128,输入则如之前所看到的那样,我将放入图像维度。


Attendees 1 31:31
出席人数 1 31:31

그리고 여기는 이제 리키를로 똑같이 넣어주면 되겠죠.
然后在这里同样地把里基改成一样的就可以了。


Attendees 1 31:46
与会者 1 31:46

이렇게 넣어줍니다.
请这样放入。


Attendees 1 31:58
出席者 1 31:58

디스크 구분자 이제 저희가 정의할 때는 따로 이제 배치 노멀라이제이션은 사용하지 않죠.
在定义磁盘分隔符时,我们现在不再使用批量标准化。

그래서 쉐입은 이제 반대로 여기 보시면 이제 아웃풋 레이어가 있는데 여기다가는
所以现在形状,您可以看到输出层在这里,我们在这里放置


Attendees 1 32:30
参与者 1 32:30

여기다가 어떤 걸 넣어주냐면 위에서 이제 저희가 모델을 봤을 때 얘의 아웃풋은 이제 0 아니면 1로 구분된 그러니까 0부터 1까지의 숫자겠죠.
具体放什么呢?当我们查看模型时,其输出是由 0 或 1 区分的,也就是说是从 0 到 1 的数字。

그래서 이제 디스크리미네이터의 아웃풋 쉐입은 1이겠죠.
所以现在鉴别器的输出形状是 1。

1이고 시그모이드를 통과하게 됩니다.
是 1,并且会通过 Sigmoid 函数。


Attendees 1 32:57
与会者 1 32:57

그래서 얘도 실행시켜주시면 됩니다. 얘도 이제 아웃풋 레이어랑 그리고 위에서 여기 부분만 채웠었죠.
所以你也可以运行这个。这个也是在输出层和上面这部分填充了内容。


Attendees 1 33:37
与会者 1 33:37

그리고 얘도 이제 서머리를 출력을 해보면 이렇게 나오겠죠.
然后如果打印摘要的话,大概就是这样了。


Attendees 1 33:51
听众 1 33:51

그래서 이번에는 이제 베티 노멀라이제이션을 안 쓰니까 논 파라미터별 파라미터는 없죠.
所以这次我们不再使用批量规范化,因此没有每个参数的参数。

다 학습 가능한 파라미터들이고 이렇게 마지막 아웃풋 쉐입이 1인 것도 보실 수가 있습니다.
这些都是可学习的参数,您可以看到最终输出的形状也是 1。


Attendees 1 34:12
听众 1 34:12

그러면 이제 제너레이터랑 디스크리미네이터를 컴파일을 해볼 건데 먼저 디스크리미네이터부터 컴파일을 해보겠습니다.
现在我们要对生成器和判别器进行编译,首先我们先编译判别器。

여기 보시면 이제 아담 옵티마이저를 사용한다고 되어 있고 옵티마이저 d는 이렇게 아담으로 정리를 해놨죠.
正如你所看到的,这里使用了 Adam 优化器,并且优化器 d 已经如此设置。

그러면 그냥 이거 그대로 가져와서 컴파일 해 주면 되겠죠.
那么直接把这个拿来编译就可以了。


Attendees 1 34:40
参会人员 1 34:40

옵티마이저는 이제 여기 위에서 정리해 준 요 아다 옵티마이저 쓸 거고 노스는 바이너리겠죠.
优化器现在将在这里为您总结,并且我将使用该优化器,预测可能是二进制的。


Attendees 1 34:55
参会者 1 34:55

파이너리 어큐러시로 매트릭을 정의해 주겠습니다.
我将使用二进制准确率来定义指标。


Attendees 1 35:11
与会者 1 35:11

이렇게 해서 실행시켜주시면 이제 디스크리미네이터는 컴파일이 됐고 그러면 저희는 제너레이터도 한번 다시 해볼게요.
这样运行之后,鉴别器现在已经编译完成了,那么我们接下来再来看看生成器。

근데 이거 하기 전에 걔는 이제 제너레이터랑 디스크리미네이터가 한 번에 있어야 되니까 얘네를 통합을 해서 이제 컴파일을 해 주겠습니다.
但是在这之前,由于生成器和鉴别器需要同时存在,我们将把它们整合在一起,然后进行编译。

그래서 모델을 빌드하기 전에 보면은 디스크리미네이터에 이제 학습 가능한 파라미터들을 이제 펄스로 지정을 하면은 얘는 이제 따로 학습이 되지 않겠죠.
所以在构建模型之前,如果将判别器的可学习参数设置为"False",那么它就不会单独进行学习。

그래서 디스크리미네이터로 고정을 하고 이제 제너레이터 부분만 학습을 하도록 합니다.
因此,将判别器固定,只对生成器部分进行学习。

그러면 아까 저희 오토 인코더 할 때도 인코더랑 이제 디코더 같이 붙여서 사용을 했는데 여기서도 그렇게 사용을 하면 되겠죠.
那么,就像我们之前使用自动编码器时同时使用编码器和解码器一样,在这里也可以这样使用。

그래서 걔네 위에 이제 하나 정의를 해줬으니까 여기다가 애드를 해주면 됩니다.
所以既然我们已经在它们上面定义了一个,那么就可以在这里添加。

제너레이터랑
制造机


Attendees 1 36:14
出席者 1 36:14

디스크리미네이터 붙여주면 되겠죠. 그래서 실행을 시켜주시면 됩니다.
将鉴别器连接上就可以了。然后您就可以运行它了。

그럼 이렇게 붙었지만 이제 여기는 이제 펄스로 지정이 됐으니까 여기는 학습이 되지 않고 여기만 학습이 되겠죠.
这样连接后,由于这里已被设置为假(False),所以这里不会进行学习,只有这里会进行学习。

그래서 얘도 이제 서머리로 출력을 해보면 이렇게 나오겠죠.
所以现在如果输出摘要的话,大概会是这样的。


Attendees 1 36:48
与会者 1 36:48

아까 저희가 이제 특정 조건 특정 파라미터를 사용하지 않으면 저희가 최종적으로 붙였던 이 제너레이터랑 디스크리닝 데이터만 나온다고 되어 있는데 만약에 이제 전체적으로 아까 위에서 봤던 걸 보고 싶으면 이제 익스펜드 레스티드를 이거는 안 치워도 됩니다.
刚才我们说过,如果不使用特定条件和特定参数,那么最终只会出现生成器和判别器的数据。但是,如果现在想查看之前看到的整体内容,那么可以不用移除 "expand_resteds"。

트루로 설정을 해주면 이렇게 전체적으로 볼 수가 있겠죠.
如果将其设置为 True,就可以这样整体地查看了。

그러면 이제 첫 번째 시퀀셜이 이제 얘가 제너레이터고 그다음에 이제 네 번째 시퀀셜 얘가 디스크리미네이터겠죠.
那么现在第一个序列是生成器,接下来第四个序列是鉴别器。

여기 보시면 이제 논 파라미터 트레이 논 파라미터별 파라미터 하면은 이제 이렇게 나오게 됩니다.
在这里,如果按非参数跟踪非参数,就会得到这样的结果。

얘는 제너레이터에 있던 파라미터들이겠죠 얘는 없애고 이렇게 해 주시면은 이렇게 나옵니다.
这些是生成器中的参数,我们要把它删除,这样就可以了。

그러면 이제 위에서 이제 얘를 컴파일을 붙여서 정의를 했으니까 얘도 컴파일을 해줘야겠죠.
既然我们已经在上面定义并编译了它,那么这里也需要编译。

똑같은 옵티마이저를 사용을 할 건데 그냥 위에서 옵티마이저 d 정의했던 거랑 동일하게 해 주시면 됩니다.
我们将使用相同的优化器,就和前面定义优化器 d 时一样。


Attendees 1 37:55
与会者 1 37:55

그러면 런닝 레이트는 0.000이겠죠. 아까 위에서 그렇게 했으니까 그리고 벡터는 1.1로 해주겠습니다.
那么学习率将是 0.000。因为之前我们是那样做的,然后向量设为 1.1。

네 얘를 아니면 이제 이렇게 복사해서 가져오셔도 되겠죠.
是的,你可以这样复制并带过来。

그럼 이렇게 옵티마이저도 정리를 했으니까 이제 컴파일만 해주면 되겠죠.
那么既然我们已经整理好了优化器,现在只需要编译就可以了。

그러면 아까 dg를 이제 컴파일 해 주면 됩니다. 여기다가 이제 옵티마이저는 옵티마이저 g를 넣어주면 될 거고
然后现在就可以对之前的 dg 进行编译了。在这里,你只需要添加优化器 g 即可。


Attendees 1 38:34
与会者 1 38:34

로스는 이제 바이너리 크로스 엔트로피를 해주면 되겠죠.
现在罗斯可以使用二进制交叉熵了。


Attendees 1 38:53
与会者 1 38:53

이렇게 해 주시면 됩니다. 그러면 지금 여기까지 해가지고 이제 디스크리미네이터랑 이제 걔을 각각 홈 파일에서 이제 바로 피팅할 수 있도록 설정을 해둔 거죠.
这样就可以了。现在我们已经为鉴别器设置好了,以便可以直接在主文件中进行拟合。


Attendees 1 39:21
听众们 1 39:21

그러면 이제 이 모델을 트레인을 시켜볼 건데 먼저 이제 d를 트레인을 하고 그다음에 이제 제너레이터는 고정된 디스크 이미네이터와 같이 트레인을 하게 됩니다.
那么现在我们将训练这个模型。首先训练判别器(discriminator),然后使用固定的判别器对生成器(generator)进行训练。

이거는 이제 구분자를 먼저 학습한 다음에 이제 그 예를 바탕으로 이제 제너레이터를 학습을 해야 이제 조금 더 진짜 같은 이미지를 만들 수가 있겠죠.
这是先学习区分器,然后基于这个例子来学习生成器,这样就能生成更加逼真的图像了。

그래서 여기 보시면 이제 배치 사이즈는 64로 하고 이제 20번 동안 돌릴 겁니다.
所以在这里,批量大小设置为 64,并且将运行 20 轮。

그리고 여기 보시면 배치 사이즈 크기만큼 이제 리얼이랑 페이크 라벨을 만들어주게 되는데 얘는 이제 배치 사이즈 크기만큼 다 1로 채워서 이제 진짜 이미지의 라벨이 1인 것이고 얘 같은 경우에는 이제 배치 사이즈 크기만큼 다 0으로 채우니까 버짓 이미지의 라벨이 0이라고 저희가 지정을 해주게 되는 겁니다.
在这里,我们将根据批次大小创建真实和虚假的标签,其中真实图像的标签都被填充为 1,而虚假图像的标签都被填充为 0,这就是我们指定标签的方式。

그리고 여기는 이제 디스큐네이터 학습할 때 로스 저장할 때고 여기는 걘 학습할 때 로스를 저장하겠죠.
这里是在学习鉴别器时保存损失,那里是在学习生成器时保存损失。


Attendees 1 40:24
出席者 1 40:24

그래서 여기 보시면 먼저 이제 디스크리미네이터를 여기서 보신 것처럼 디스크 구분자를 먼저 학습을 한다고 했으니까 이제 웨이트를 이제 트레이너블하게 정의를 해 주겠죠.
因此,正如你们在这里看到的,首先我们会先学习鉴别器,所以我们现在会将权重定义为可训练的。

그래서 얘를 이제 트루로 정의를 하고 여기 보시면 이제 실제 샘플을 가져옵니다.
所以现在我们用真实值定义它,从这里可以看到我们带入了实际样本。

이제 배치 사이즈 크기만큼 가져오는데 이때 이제 여기서 학습을 할 때 x 데이터는 이제 배치 이미지고 그리고 라벨은 리얼 이미지겠죠.
现在我们按照批次大小获取数据,在这个过程中,学习时的 x 数据是批次图像,而标签是真实图像。

왜냐하면 저희가 진짜 샘플을 가지고 와서 여기다 넣어줄 거니까 그다음에 이제 페이크 샘플을 만들어 줄 건데 여기서 보시면 이제 이렇게 아까 제트는 랜덤 노이즈라고 했었죠.
因为我们将把真实样本带来放在这里,然后接着会生成伪造样本。正如你所看到的,之前我们说过 Z 是随机噪声。

그리고 레이턴트 디멘전은 아까 100이라고 했으니까 100사이즈에 이제 그 배치 사이즈 개수만큼 요 차원을 가진 노이즈를 만들어 주게 됩니다.
并且由于潜在维度之前说过是 100,那么就会生成具有 100 维度的噪声,数量与批次大小相同。

그리고 얘를 이제 제너레이터에 전달을 해주게 되면은 이 x 페이크 데이터가 만들어지겠죠.
然后当我们将它传递给生成器时,就会创建这个虚假的 x 数据。

그리고 얘는 이제 라벨이 0으로 해서 이 디스크리미네이터에 들어가게 됩니다.
然后它以标签 0 进入鉴别器。


Attendees 1 41:24
出席人员 1 41:24

그러면 얘는 이제 실제 라벨이랑 이제 가짜 라벨 다 학습을 각각 하면은 이렇게 리얼 이미지를 학습한 로스랑 이제 페이프 이미지로 학습한 로스가 각각 나오겠죠.
那么,当它分别学习了实际标签和伪标签后,就会得到使用真实图像训练的损失和使用虚假图像训练的损失。

그러면 여기서 이제 디스크미네이터의 로스는 얘네 두 개를 더해준 다음에 이제 0.5를 곱해 주니까 사실상 이 두 개의 평균을 낸 거죠.
那么在这里,鉴别器的损失是将这两个损失相加,然后乘以 0.5,实际上就是取这两个损失的平均值。

그래서 최종적인 이제 로스는 이 디로스 배치 여기에 들어가게 됩니다.
所以现在最终的损失将会进入这个判别器损失批次。

그러면 이렇게 해서 이제 디스크리에이터를 학습을 한 거고 그다음에는 이제 제너레이터를 학습을 하겠죠.
这样我们就完成了判别器的学习,接下来我们将学习生成器。

그래서 이 과정에서 학습된 디스큐미네이터의 이제 파라미터를 펄스로 바꾼 다음에 여기서 보시면 이제 다시 학습을 하게 됩니다.
因此在这个过程中,学习到的鉴别器的参数现在将被设置为假,然后如你所见,我们将再次进行学习。

근데 이때는 이제 이 노이즈를 가지고 나온 결과를 이제 리얼 이미지라고 보게 되는데 왜냐하면 이제 제너레이터는 이제 실제 이미지처럼 학습을 해야 되니까 이렇게 두신다고 보시면 됩니다.
此时,从噪声生成的结果被视为真实图像,因为生成器需要学习生成看起来像真实图像的内容,可以这样理解。


Attendees 1 42:23
1 号听众 42:23

그래서 이렇게 보시면 이제 미니 배치마다 출력을 하고 그다음에 이제 각각 로스를 다 더해준 다음에 최종적으로 지금 여기서 보시면 이렇게 에폭이 한 번씩 돌아가고 있어요.
所以你可以看到,我们现在在每个小批次都输出结果,然后将各个损失相加,最终在这里可以看到每个轮次(epoch)都在依次进行。

그래서 이제 여기부터 이제 배치 사이즈별로 학습을 하는 거고 이 전체 배치 사이즈로 나눠진 그러니까 전체 데이터에서 한 번 학습을 하게 되면은 에폭 하나가 끝나는 거겠죠.
所以现在从这里开始,我们将按批次大小进行学习,每次完成对整个数据集的一次学习后,也就意味着一个轮次(epoch)已经结束。

그럼 이렇게 에폭 한 번이 지나갈 때마다 이렇게 결과를 한 번씩 출력을 해 줍니다.
这样,每次经过一个轮次时,我们都会输出一次结果。

근데 이제 랜덤하게 이제 10개의 이미지를 만들어서 아래처럼 이렇게 출력을 해 주는 거예요.
然后现在随机生成 10 张图像,并像下面这样输出。

그러면 이제 엑스 페이크 같은 경우에는 위에서 학습을 했었던 제너레이터에 넣어주면 되겠죠.
那么对于 X-Fake,可以将其输入到我们之前学习过的生成器中。


Attendees 1 43:13
听众 1 43:13

예측을 하는 거니까 이렇게 하고 이제
因为是在做预测,所以这样做,现在


Attendees 1 43:20
出席人 1 43:20

아마 위에 유사한 코드가 있었어요. 잠시만요. 얘를 가져와서 있는 거랑 유사하죠.
我想之前可能有类似的代码。稍等一下。这个和之前的很相似。

이제 제트를 넣어주는 겁니다.
现在要放入喷气式发动机了。


Attendees 1 43:43
参会人员 1 43:43

이거는 이제 노이즈를 만들어서 넣어주는 건데 원래는 여기가 이제 배치 사이즈였는데 저희가 에폭을 한 번 돌리고 이제 10개 샘플만 만들어서 생성된 이미지를 확인을 할 거니까 이게 이제 배치 대신 샘플 개수가 들어가겠죠.
这是用来创建并添加噪声的,原本这里是批次大小,现在我们运行一个轮次,并只生成 10 个样本来查看生成的图像,所以这里将会是样本数量而不是批次。

그리고 레이턴트 디멘전은 똑같이 100이 들어갑니다.
并且潜在维度仍然是 100。

이렇게 실행을 시켜주시면 제너레이터가 이제 랜덤한 10개의 이미지를 생성을 해서 UX 페이크에 저장을 하겠죠.
这样执行后,生成器将生成 10 个随机图像并保存到 UX 伪像中。

그다음에 얘를 이제 하나씩 출력을 해서 결과적으로 이렇게 나오게 됩니다.
然后逐个输出,最终结果如下所示。

그래서 얘를 실행을 시켜주시면
所以请执行这个


Attendees 1 44:23
与会者 1 44:23

좀 걸리는데 이렇게 이미지가 생성이 돼서 이렇게 출력이 됩니다.
这需要一段时间,但是图像最终会生成并输出。

저희가 총 4 3 20번을 돌렸으니까 10개의 이미지가 20번 생성이 되겠네요.
我们总共运行了 4 乘 3 共 20 次,所以将生成 10 个图像各 20 次。


Attendees 1 44:41
参会人员 1 44:41

그리고 코드는 추가한 부분이 여기입니다. 제너레이터에다가 제트만 만들어서 넣어줄게
然后我会将代码添加到这里。我会为生成器制作并放置一个通道


Attendees 1 44:55
参会人员 1 44:55

그리고 지금 다 학습이 된 걸 확인을 해보면 처음에는 이제 완전 형체를 알아볼 수 없는 이미지가 생성이 됐는데 이게 폭이 이제 학습을 하면 할수록 조금 더 이제 숫자에 가까운 이런 이미지가 생성이 되는 걸 보실 수가 있습니다.
现在让我们来观察已完成学习的结果,一开始生成的图像是完全无法识别形态的,但随着学习的深入,生成的图像会逐渐接近数字的形状,你可以看到这一点。

그래서 이제 한 20번 정도로 가면은 처음에 했을 때보다는 조금 더 숫자 같은 아웃풋이 나오게 되겠죠.
所以现在大概 20 次左右,与开始时相比,输出的数字会更加清晰些。

얘를 이제 폭스를 조금 더 크게 하면은 더 뚜렷한 형태의 이미지를 얻을 수도 있습니다.
如果将这个(图像)的狐狸稍微放大一些,就可以得到更加清晰的图像形态。


Attendees 1 45:31
参会人员 1 45:31

그다음에 이제 학습된 걸 비교를 해볼 건데 저희가 로스를 이제 디스크 이미네이터랑 이제 제너레이터에서 각각 얻었으니까 둘 다 찍어주면 되겠죠.
接下来,我们要比较学习到的内容,因为我们已经从判别器和生成器那里分别获得了损失,所以我们可以将它们都打印出来。

얘는 이제 디스크 미네이터 로스겠죠. 그다음에 걔에 대해서 로스를 찍어주면 이렇게 두 가지의 로스가 나오겠죠.
这是鉴别器的损失。接下来,如果我们标记它的损失,就会出现这两种损失。

이 두 개를 찍어줄 거고 이제 실행을 시켜주시면 각각에 대해서 이제 첫 번째 게 디스크리미네이터로 그리고 두 번째 게 이제 어드버서리어 어텍이니까 이렇게 나오게 됩니다.
我们将标记这两个损失,当你执行时,对于第一个,它是鉴别器的损失,第二个是对抗性攻击的损失,就会这样显示出来。

그러면 그래프를 좀 보면은 어 모델의 로스가 이제 얘 같은 경우에는 이제 겐이죠.
那么看这个图,如果是生成对抗网络模型的损失的话。

처음에 이제 컸다가 이렇게 줄어드는 것을 보면은 학습이 잘 진행되고 있다고 보시면 됩니다.
一开始损失值比较大,然后逐渐减小,这表明模型正在顺利地进行学习。

그러니까 이제 제너레이터가 이제 디스크미네이터를 잘 속이는 거죠.
所以生成器现在就是在骗过鉴别器。

그리고 이제 구분자 같은 경우에는 처음에 로스가 작았다가 이제 학습이 진행될수록 커지는 걸 보니까 얘가 점점 진짜 이미지랑 거짓 이미지를 잘 구분하지 못한다는 그런 의미죠.
而对于鉴别器来说,一开始损失很小,随着学习的进行,损失逐渐增大,这意味着它越来越不能很好地区分真实图像和虚假图像。


Attendees 1 46:43
听众 1 46:43

그래서 이게 학습을 하면 할수록 이렇게 점점 주황색 로스는 줄어들고 파란색 로스는 올라가는 형태가 되겠죠.
所以随着学习的进行,橙色损失会逐渐减少,而蓝色损失会逐渐增加。


Attendees 1 46:54
与会人员 1 46:54

그러면 저걸 이제 한 100번을 돌려도 되겠지만 그렇게 하기에는 시간적인 여유 문제도 있으니까 학습을 했던 이제 이 제너레이터 h5 모델을 가지고 와서 한번 실행을 시켜주겠습니다.
那么,虽然可以运行大约 100 次,但考虑到时间成本,我将直接加载之前训练好的生成器 h5 模型并执行它。

대신해서 그러면 지금 콜랩을 사용하고 있으니까 먼저 마운트를 해줘야겠죠.
那么既然现在我们在使用 Colab,首先需要挂载(数据)。

이거 마운트 하셔도 되고 이제 나는 마운트가 불편하다 하시면 원래 하시던 대로 이제 이미 데이터 올려가지고 사용하셔도 됩니다.
你可以选择挂载,如果觉得挂载不方便,也可以像之前一样直接上传数据使用。

이게 편해서요.
这样使用起来很方便。


Attendees 1 47:37
参会人员 1 47:37

그리고 지금 이제 실제 여기 위치 찍어보면은 이 콘텐츠 위치가 나오겠죠.
而现在,如果我们标记这个位置,就会显示出这个内容的位置。

저는 이제 제 드라이브 안에 있는 걸 쓸 거니까 이거는 이제 본인 경로 지정해 주시면 되겠죠.
我现在将使用我的驱动器中的内容,所以请指定您自己的路径。


Attendees 1 48:10
听众 1 48:10

저는 경로 설정해줘서 이제 여기다가 실행을 해 주겠습니다.
我现在将按照设置的路径执行此操作。

제너레이터를 가져올 때 그냥 가져오면 됩니다. TF 저장됐던 이제 모델을 로드하는 거니까 이제 로드 모델이겠죠.
当你获取生成器时,直接获取即可。因为现在是加载已保存的 TF 模型,所以现在是加载模型。


Attendees 1 48:52
与会者 1 48:52

여기 보시면 원래 이제 예전에 사용했던 방식이 요 h5로 저장하는 형식이고 그리고 최신은 좀 캐러스 확장자로 저장을 하게 되는데 그거는 저번 시간인가 저저번 시간인가 하여튼 저희 실습 시간에 한번 캐라스로 저장을 해서 걔를 불러오는 실습을 한번 진행을 했었습니다.
这里你们可以看到,之前使用的是以 h5 格式保存的方式,而现在最新的是使用 Keras 扩展名保存,这个我们在之前的实践课上已经演示过如何使用 Keras 保存并调用模型。

저희가 이제 컴파일은 없지만 모델이 잘 학습됐다면 이걸 가지고도 이제 충분히 생성을 할 수 있기 때문에 얘만 이제 한번 불러와서 이 제너레이터로 정의를 내리겠습니다.
我们虽然没有编译,但如果模型已经成功训练,这个模型也足以进行生成。所以我们现在直接调用它,并将其定义为生成器。

그러면 이제 저희가 불러온 모델 제너레이터로 이미지를 생성을 해볼 건데 똑같이 10개를 생성을 해볼 겁니다.
那么现在我们将使用已加载的生成器模型来生成图像,同样地我们将生成 10 张图像。

그러면 x 페이크에는 위에서 했던 것처럼 여기 부분이 들어가면 되겠죠.
那么在 x_fake 部分,就像之前我们做的那样,这部分内容将会被放置在这里。


Attendees 1 49:50
与会人员 1 49:50

여기랑 유사하게 넣어주면 되겠죠.
这里应该是类似这样放置。


Attendees 1 49:58
第 1 位听众 49:58

그러면 제너레이터를
那么生成器将


Attendees 1 50:05
50:05 的听众

그리고 프리디트를 해주는데
然后对其进行预处理


Attendees 1 50:12
参会人员 1 50:12

위에 거 복사 붙여넣기 하셔도 동일하게 나올 것 같습니다.
我复制粘贴上述内容,会得到相同的结果。

여기고 스케일은 이로 하고 사이즈만
这里的规模和大小都是


Attendees 1 50:37
与会者 1 50:37

이렇게 해서 실행을 해 주시면은 10개가 생성이 되겠죠.
这样执行后,就会生成 10 个了。

얘가 이제 위에서 20번 학습할 때 이 결과보다는 조금 더 뚜렷한 결과가 나오게 됩니다.
它在上面进行 20 次学习时,会产生比之前更加清晰的结果。

이런 식으로
这样一来


Attendees 1 50:54
与会者 1 50:54

그러면 여기까지 해서 저희가 이미지 제너레이션 실습을 했고 그다음에는 이제 레스티엠 사용해가지고 텍스트 제너레이션 실습을 해보겠습니다.
那么,我们已经完成了图像生成实践,接下来将使用 LSTM 进行文本生成实践。

그래서 이제 코봇을 사용해 가지고 LSTM 학습을 한 다음에 이제 오토 리레시브한 텍스트 제너레이션을 해볼 건데 요거 이 방식은 이제 이전의 출력을 가지고 이제 다음 출력을 예측하는 방법이겠죠.
我们将使用 Kobolt 进行 LSTM 学习,然后进行自回归文本生成。这种方法是基于前一个输出来预测下一个输出的。

그래서 봤던 익숙한 이미지가 있고요. 먼저 얘를 실행을 시켜주시면 제가 원하는 이제 텍스트랑 시퀀스 관련 라이브러리가 임팩트가 되고 사용할 데이터셋은 이제 저번에 했었던 im DB 데이터셋을 동일하게 사용을 할 겁니다.
那么我们看到了熟悉的图像,首先让我执行它,现在我想要的是与文本和序列相关的库,并且使用的数据集将与之前使用的 IMDB 数据集相同。


Attendees 1 51:35
听众 1 51:35

그리고 여기 보시면 이렇게 포트 해오고 얘도 이제 단어 사전 사이즈는 만 개로 지정을 할 거고 만 개에 대해서만 이제 불러와 줄 거고 그리고 여기 보시면 이제 인덱스를 이제 워드 딕셔널리로 갖게 되는데 저번 시간에 했듯이 imdb 데이터셋에서는 이제 실제 매핑을 할 때 0번부터 3번까지는 이제 스페셜 토큰으로 지정이 되어 있기 때문에 저희가 원하는 대로 이제 매핑을 할 거면은 기존 위치에다가 플러스 3을 해줘야겠죠.
然后在这里,我们将导入词典大小为 1 万个,并且只加载这 1 万个词。可以看到,它现在通过词典索引获得索引,就像上次课程中在 IMDB 数据集中那样,实际映射时 0 到 3 号是特殊标记,所以如果我们想按照自己的意愿进行映射,就需要在原有位置上加 3。

얘를 가져온 다음에 썼죠. 월드 2 인덱스를 그대로 가져오는데 이제 아이템만 가져오게 됩니다.
接着获取这个,直接获取 Word2 索引,但只获取项目。

이렇게 해서 실행을 해주면 저희가 원하는 대로 이제 워드 투 인덱스를 이제 인덱스 투 워드로 변환할 수 있는 딕션 워리를 얻게 되겠죠.
这样就可以按照我们的需求,将词语转换为索引,并将索引转换回词语,从而得到我们想要的词典。


Attendees 1 52:34
与会者 1 52:34

이렇게 그래서 여기 부분 채워줘.
这样就把这部分填充好了。


Attendees 1 52:46
听众 1 52:46

그다음에 여기 부분에서는 이제 저희가 유관적으로 좀 확인하기 위해서 트레인 데이터를 이제 텍스트로 한번 변환을 해보고 그다음에는 이제 텍스트 사이즈를 한번 확인을 해본다고 되어 있는 그래서 얘를 실행시켜주시면 이미지 데이터 로드 하고 변환해서 이렇게 나오게 됩니다.
接下来在这部分,我们现在要尽量以关联的方式确认,先将训练数据转换为文本,然后查看文本大小。所以请执行这个操作,加载图像数据并进行转换,就会出现这样的结果。

이게 원래 이제 IMD 데이터셋 이거 불러왔을 때는 숫자로 되어 있는데 저희가 보기 편하게 이제 보기 위해서 이제 텍스트로 변환을 한 결과가 이렇게 출력이 되는 거겠죠.
这是在加载 IMDB 数据集时,原本是数字形式的,为了更方便我们查看,现在转换成文本后输出的结果就是这样的。

그러면 이 단어들을 이제 토크나이즈 하고 제너레이트 하면 됩니다.
那么接下来只需要对这些单词进行分词和生成即可。

여기 보시면 이제 단어 아까 위에서 이제 복캡 사이즈는 만 개로 지정을 했었는데 그러면 단어 사전이 이제 만 개만 저희가 가져온다는 의미입니다.
在这里,我们可以看到,正如之前所说,词汇量大小已设置为 1 万个,这意味着我们只会获取 1 万个单词的词典。

근데 만약에 이제 잘 사용하지 않는 단어들이 나오게 되면은 요 보캡 사전에 이제 속하지 않을 수도 있게 되는데 그럴 때는 이제 저희가 아웃 오브 오케바리 해가지고 오브 토큰으로 표시를 해주도록 이제 토크나이징을 해주면 됩니다.
但是,如果出现一些不常用的单词,这些词可能不会包含在词汇表中,在这种情况下,我们可以将其标记为"词汇表之外"(out of vocabulary),并使用特殊标记来处理。


Attendees 1 53:56
参会人员 1 53:56

그렇게 해서 이제 토크나이저를 정의를 하고 여기다가 이제 위에서 봤었던 이 텍스트를 얘죠.
这样就定义了分词器,并将之前看到的这段文本插入其中。

얘를 그대로 가져와가지고 피팅을 시켜줍니다. 그리고 여기 보시면 이제 시퀀스 리스트 하나 정의를 해주고 얘는 시퀀스 레는 이제 10으로 정의를 해 줄 건데 얘 같은 경우에는 이제 저희가 저번 시간에도 했었던 유사한 이제 시퀀스 길이를 지정을 해준다는 의미죠.
直接将它带过来并对其进行拟合。然后在这里,我们现在定义了一个序列列表,将序列长度定义为 10,就像我们上节课做过的类似,意味着我们指定了序列长度。

그래서 10보다 크면은 잘라내고 10보다 작으면 패딩을 통해서 이 길이를 맞춰주는 역할을 한다고 보실 수가 있습니다.
所以如果长度大于 10,就会被截断;如果长度小于 10,则会通过填充来调整长度。

그러면 이제 여기에서 이제 단어 하나씩 가져와 가지고 진행을 해 주게 되는데 여기서 보시면 여기 부분을 채워야겠죠.
那么现在,我们将逐个单词地进行操作,在这里我们可以看到需要填充这部分。


Attendees 1 55:01
参会者 1 55:01

그래서 이제 텍스트에서 이 텍스트를 하나씩 가지고 와가지고 이렇게 토크 나이저를 통과시켜서 저희가 원하는 토큰을 얻게 되고 그다음에 이제 학습을 위해서 사이즈가 10인 이제 토큰 시퀀스로 만들어줍니다.
因此,现在我们将文本逐个提取,通过分词器,获得我们想要的标记,然后为学习制作一个大小为 10 的标记序列。


Attendees 1 55:26
参会人员 1 55:26

그러면 이 결과적으로 어떤 게 나오게 되냐면 저희가 이제 학습을 할 때 인풋이 10개가 되고 이제 y 저희가 텍스트 예측을 해야 되니까 거기에 해당하는 값이 하나가 추가가 돼서 총 11개의로 나눠진 그런 시퀀스가 나오게 되는데요.
这样最终会产生什么呢?当我们进行学习时,输入会有 10 个,由于我们需要预测文本,因此会额外添加一个对应的值,最终形成一个总共 11 个部分的序列。

그래서 얘를 한번 실행시켜주시고 아래 걸 확인을 해보면 저희가 이제 처음에 10개 샘플만 지금 먼저 출력을 해서 가져와 볼 건데 전체적으로 만들어진 시퀀스는 요 21만 200만 개가 될 거고 그다음에 여기 보시면 지금 얘가 하나의 시퀀스인데 보시면 이렇게 5개고 5개니까 이게 10개가 인풋으로 들어가고 이걸 바탕으로 이 아웃풋을 예측하게 됩니다.
所以我们现在先执行它,并检查下面的内容。我们将首先输出 10 个样本,而整个生成的序列将是 21 到 200 万个。接下来,看这里,这是一个序列,可以看到是 5 个和 5 个,所以输入是 10 个,并基于此预测输出。

그리고 이렇게 보시면 지금 똑같은 4967이 이렇게 한 칸씩 옆으로 가는 것을 보실 수가 있죠.
如你所见,现在 4967 以这种方式向侧面移动一格。

그러면 이게 10개를 가지고 와서 얘를 예측을 하고 그다음에 이제 20번부터 얘를 가지고 와서 그다음 걸 예측을 하고 얘를 반복시켜주는 겁니다.
这样就是将 10 个数据带过来进行预测,然后从第 20 个开始带过来预测下一个,并重复这个过程。

이런 식으로 이제 LSTM을 학습을 할 수가 있어요.
这样就可以训练 LSTM 了。


Attendees 1 56:37
出席人数 1 56:37

그러면 아까 봤던 것처럼 여기서 이제 n이 10개인 거겠죠.
正如我们之前看到的,这里现在有 10 个 n。

그래서 인풋은 총 10개고 아웃풋은 그다음 토큰을 예측을 하는 그렇게 되는 겁니다.
因此输入总共是 10 个,输出是预测下一个标记。

그래서 이렇게 해가지고 저희가 이제 학습에 사용할 트레이닝 데이터를 만들어줬고요.
这样我们就为学习创建了训练数据。


Attendees 1 56:52
参会人员 1 56:52

얘를 한 번 더 정리를 해주면 위에 이제 1개가 하나로 묶여 있으니까 개를 10개랑 1개로 쪼개주면 되겠죠.
让我们再次整理一下,由于现在 1 个已经被捆绑在一起,所以可以将其拆分为 10 个和 1 个。


Attendees 1 57:07
听众 1 57:07

그래서 마지막 거 제외하고 이렇게 앞에 10개만 잘라주고 얘는 그럼 마지막 거겠죠
所以除了最后一个,就只保留前面 10 个,那么这个就是最后一个了吧


Attendees 1 57:17
列席人员 1 57:17

이렇게 해 주시면 됩니다. 실행을 해 주시면은 아까 위에서 봤던 것처럼 첫 번째 이제 x 값은 이렇게 10개의 인풋이 있고 이 아웃풋은 봤던 것처럼 4967 토큰이겠죠.
就这样操作即可。执行后,就像我们之前看到的那样,首先 x 值现在有 10 个输入,输出将是我们之前看到的 4967 个词元。

이런 식으로 해가지고 이제 데이터셋을 가지고 모델에 넣어주면 됩니다.
这样就可以将数据集输入到模型中了。

그러면 이제 그전에 모델을 먼저 만들어야 되는데 여기서 보시면 이제 사용할 게 임베딩 레이어랑 그리고 엘리스틱 레이어 그리고 댄스 레이어가 있겠죠.
那么现在首先需要创建模型,在这里你可以看到我们将使用嵌入层、LSTM 层以及全连接层。

그래서 인베딩 디맨전은 이렇게 64로 해놨고 그리고 엘리스팀 유닛 같은 경우에는 128 사이즈로 해놨습니다.
因此,我将嵌入维度设置为 64,对于 LSTM 单元,我将大小设置为 128。

이렇게 3개의 레이어를 쌓는다고 되어 있죠. 얘를 그대로 해줍니다.
这样就堆叠了 3 个层。我们将直接按此进行操作。

근데 이번에는 인풋을 따로 뺄 거니까 여기서 인풋이 복개 사이즈라고 했죠.
这次我们将单独提取输入,之前说过输入是复制大小。

그럼 얘를 먼저 넣어주면 되겠죠.
那么,我们可以先把它放进去。


Attendees 1 58:18
出席者 1 58:18

인풋인데 이제 쉐입은 쉐입은 부캡 사이즈가 아니고 저희가 10개씩 끊었으니까 그 10개를 넣어주면 되겠죠.
输入的形状不再是批次大小,而是我们已经将其分成了 10 个,所以只需要放入那 10 个就可以了。

이렇게 해서 이제 시퀀스를 하나 불러와 주고 그다음에 여기서 인베딩 레이어에서 캡 사이즈로 얘를 이제 변환을 시켜주는 거겠죠.
这样我们就把一个序列传入进来,然后在嵌入层中将它转换为指定的大小了。

이제
现在


Attendees 1 59:21
听众 1 59:21

그리고 LSTM 같은 경우에는 이제 유닛이 128개스 데이가 이렇게 들어있죠.
对于 LSTM 来说,现在有 128 个单元,数据就是这样进入的。

마지막은 이제 댄스 레이어인데 로켓 사이즈의 아웃풋이 있겠죠.
最后是密集层,输出大小将会是火箭的尺寸。

그래서 저희가 다음 단어를 예측을 하는 거니까 1만 개의 단어 사전이 각각 나올 확률이 나오겠죠.
所以我们要预测下一个单词,因此会得到一个万个词汇的词典中每个词出现的概率。

그러면 소프트맥스로 각각의 확률을 보여줄 수 있습니다.
那么就可以用 softmax 来显示每个类别的概率。


Attendees 1 59:55
与会者 1 59:55

성실히 하면 이는
诚恳地


Attendees 1 1:00:01
与会者 1 1:00:01

이거 뒤에 거 아까 빼도 되죠. 왜냐면 위에 이제 인풋 쉐이을 가져와 줬으니까 여기다가 시퀀스 램 넣어주겠습니다.
这个可以不用放在后面。因为现在已经从上面获取了输入形状,所以我将在这里放置序列 RAM。


Attendees 1 1:00:15
与会者 1 1:00:15

좀 바뀌었죠 그래서 인풋 같은 경우에는 위에서 정의했던 시퀀스 랜스 10을 넣어주시고 그다음에 이제 임베딩 레이어 같은 경우에는 이런 식으로 얘는 이제 얘를 얘가 인풋이니까 얘가 와서 이제 캡 사이즈만큼 이렇게 변환이 된 다음에 그다음에 이제 인베딩 디맨전 120 64로 변환이 되고 그다음에 얘가 이제 이렇게 LSTM 넘어가서 아웃풋으로 나오게 됩니다.
稍微改变了一下,在输入的情况下,您需要填入之前定义的序列长度 10,然后对于嵌入层,它现在是输入,所以它来到这里,按照帽子大小进行转换,然后嵌入维度从 120 转换为 64,接下来它进入 LSTM,并最终作为输出出现。

이 결과를 보시면 그래서 아까 16개가 이렇게 나온다고 되어 있죠.
从这个结果可以看出,就像之前说的那样,16 个是这样出现的。

이게 원래 이제 각각 한 번 들어올 때 이제 시퀀스 램스가 10이었으니까 그 10개가 들어오고 얘가 그 각각에 대해서 이제 만 개로 변환이 된다.
这里原本每次输入时序 LSTM 是 10 个,所以这 10 个会进来,然后每个都会转换为一万个。

만 개의 벡터가 가지고 있으면 이제 60차로 변환이 돼서 이렇게 나오게 됩니다.
当拥有一万个向量时,现在会被转换为 60 维,就这样出来了。

그래서 이제 만 곱하기 64니까 파라미터 개수가 64만 개겠죠.
所以现在乘以 64,参数数量将是 64 万个。


Attendees 1 1:01:17
出席者 1 1:01:17

그다음에 얘가 이제 아웃풋이니까 다시 이렇게 들어와서 이런 식으로 변환이 돼서 최종적으로 이제 아웃풋 레이어 같은 경우에는 이제 아웃풋 사이즈가 1만 개여서 총 위에서 봤듯이 이 복캡 사이즈가 1만 개가 있으면 각 토큰이 나올 확률이 이렇게 나오는 거겠죠.
接下来,由于这是输出,它再次以这种方式进入并进行转换,最终在输出层,输出大小为 1 万个,所以正如我们之前看到的,如果词汇表大小为 1 万个,那么每个标记出现的概率就是这样的。

그러면 이렇게 모델을 빌드를 했으니까 이제 컴파일을 해줄 건데 컴파일 할 때도 여기 보시면 이제 어떤 로스를 써야 될지 스퍼스 카테고리컬 크로스 엔트로피를 사용을 한다고 되어 있고 이제 런링 네이트를 0.01로 설정한 아담 옵티마이저를 사용한다고 되어 있네요.
既然我们已经构建了模型,现在就要进行编译。在编译时,你可以看到使用了稀疏分类交叉熵作为损失函数,并且设置了学习率为 0.01 的 Adam 优化器。

그러면 옵티마이저부터 이제 정의를 해주면 똑같죠.
那么我们从优化器开始定义就可以了。

아람인데 이제 러닝 게이트나 0.01로 설정을 하고 그다음에 이제 위에서 저희가 이거를 정의를 할 때 모델이라고 했으니까 모델을 가지고 와서 컴파일을 해주면 되겠죠.
是阿兰,现在学习率设置为 0.01,然后接下来由于我们之前定义了模型,所以可以用这个模型进行编译。

모델 컴파일이고 그다음에 로스는 이제 복붙 하셔도 되겠죠.
编译这个模型,然后损失函数现在你可以直接复制粘贴了。


Attendees 1 1:02:26
与会者 1 1:02:26

이렇게 사용을 할 거고
我们将这样使用它


Attendees 1 1:02:32
参会人员 1 1:02:32

옵티마이전을 위에서 정의한 아담 사용할 거고 그리고 매트릭은 어큐러시로 하겠습니다.
我们将使用之前定义的 Adam 优化器,评价指标为准确率。


Attendees 1 1:02:45
与会者 1 1:02:45

여기서 끊어줄게요. 이렇게 하면 되겠죠. 그래서 이제 이 스퍼스 카테고리컬 크로스 엔트로피 같은 경우에는 이제 저희가 y 값이 원화 인코딩된 아웃풋 값이 아니고 이제 저희 지금 같은 경우에는 0부터 9999까지 나오겠죠.
我在这里为你停顿。这样应该可以吧。所以现在在这个稀疏分类交叉熵的情况下,我们的 y 值不是一个热编码的输出值,而是现在在我们这种情况下会从 0 到 9999。

왜냐하면 1만 개의 단어 중에 하나에 무조건 매핑이 되어 있을 테니까 그거를 알아서 이제 원화 팩터로 변경을 한 다음에 아웃풋이랑 비교를 해 주는 그런 역할을 하고 있습니다.
因为它肯定会映射到 1 万个单词中的一个,然后自动将其转换为一个热因子,并与输出进行比较。

얘를 실행해 주시면은 이제 컴파일이 되고 그다음에 이제 이 컴파일된 모델을 가지고 학습을 하면 되겠죠.
请运行这段代码,然后就可以完成编译,接下来就可以用这个编译好的模型进行训练了。

여기서 보시면 이제 에폭은 5번 돌아가고 배치 사이즈는 4.96으로 설정을 한다고 되어 있습니다.
在这里您可以看到,训练轮数设置为 5 轮,批次大小设置为 4.96。

배치 사이즈는 보통 2배수로 설정을 하게 되어 있죠.
批次大小通常以 2 的倍数进行设置。

그래서 똑같이 모델을 피팅을 시켜주시고 인풋은 x 그리고 와 그리고 혹은 5 그리고 배치 사이즈는 409페이지입니다.
因此,请同样地对模型进行拟合,输入为 x,并且和或 5,批次大小为 409 页。


Attendees 1 1:03:51
与会者 1 1:03:51

이렇게 해서 실행을 시켜주시면 되겠죠.
这样就可以执行了。


Attendees 1 1:04:02
与会者 1 1:04:02

그러면 얘가 학습될 동안 먼저 이 로스 그래프 찍을 때 필요한 걸 확인을 해보면 이거는 저희가 많이 했던 거죠.
然后在它学习的过程中,我们首先看一下绘制损失图表时需要的内容,这是我们经常做的事情。

그래서 필티 플라인데 안에 이제 넣어줄게 저희가 모델을 피팅 시킨 걸 히스토리라고 정의를 했으니까 이 히스토리의 히스토리 로스를 가져오면 되겠죠.
所以我们现在将把模型拟合的结果定义为历史,然后我们就可以从这个历史中获取损失值了。


Attendees 1 1:04:33
参会者 1 1:04:33

이제 각 에폭별로 볼 거니까 이렇게 앞에다가 에폭을 넣어주고 그다음에 이렇게 넣어주면 됩니다.
现在我们将逐个时期查看,所以可以像这样在前面放入时期,然后像这样放入。


Attendees 1 1:05:06
与会者 1 1:05:06

그다음에 여기 제너레이션 부분부터 먼저 간단하게 살펴보면은 저희가 이제 LSTM을 학습을 시켰으니까 오토 리그레시브 하게 이제 텍스트를 만들어볼 건데 여기서는 이제 전체적으로 20개의 단어를 만든다고 되어 있어요.
接下来,如果我们从生成部分简单地看一下,我们既然已经训练了 LSTM,那么就要自动回归地生成一些文本,在这里会生成总共 20 个单词。

그러면 여기 보시면 제너레이트 텍스트 함수를 정의를 할 건데 시즈 텍스트 같은 경우에는 시작하는 단어겠죠.
那么在这里,我们将定义一个生成文本的函数,种子文本就是开始的单词。

그다음에 이제 그 이후 20개를 만들 거고 여기서 이제 템플릿 천은 0.5로 이제 디폴트로 설정을 해뒀습니다.
接下来,我们将创建 20 个,在这里我们已经将模板阈值默认设置为 0.5。

그래서 저희가 이 함수를 사용을 할 때 나머지를 건드리고 싶지 않으면 이 시드 텍스트만 넣는 거고 넥스트 워즈나 아니면 템플릿처를 조정을 하고 싶으면 변수명을 써서 그러니까 파라미터 이름을 써가지고 같이 변경할 수가 있겠죠.
所以当我们使用这个函数时,如果不想改动其他部分,就只需要放入种子文本;如果想调整下一个词或模板参数,可以通过写变量名,也就是通过写参数名来进行相应的更改。

그러면 이제 넥스트 월드 그러니까 이제 처음 데이터가 들어오고 20번 동안 이 포문을 반복을 해주면 되는데 먼저 이제 인풋 텍스트를 토크나이즈 해 주면 되겠죠.
那么现在让我们开始处理下一个世界,就是说首次数据进入后,我们在这个循环中重复 20 次,首先要做的是对输入文本进行分词。


Attendees 1 1:06:00
与会者 1 1:06:00

그래서 얘를 넣어주시고 여기에서 이제 패드 시퀀스를 하게 되면은 맥스램 같은 경우에는 이제 여기가 10이었죠.
所以在这里进行填充序列时,对于最大长度来说,这里是 10。

그래서 저희가 학습을 할 때 이제 최대 10개의 시퀀스로 저희가 사용을 했으니까 얘도 맞춰주고 만약에 이제 10개보다 안 된다면은 이제 패딩을 통해서 이렇게 토크나이즈를 진행을 해 주겠죠.
因此,在我们学习时,我们使用了最多 10 个序列,所以要与之匹配,如果序列长度小于 10,那么就通过填充来进行分词处理。

그다음에 이 토크나이징 된 얘를 가지고 와서 이제 모델에다가 넣어주시면 이렇게 예측 아웃풋이 나오게 됩니다.
接下来,将这些分词后的内容引入模型中,就会得到这样的预测输出。

그러면 저희가 모델을 학습을 하고 나서 그 모델의 결과가 만 개의 단어 벡터에 대한 각각의 확률이라고 했으니까 그 확률 값이 여기 프리딕티드 프로 프라 모빌리티에 들어가겠죠.
那么在我们训练模型之后,由于模型的结果是针对一万个单词向量的各自概率,这些概率值将进入预测概率中。

그러면 이제 얘를 가지고 와서 저희가 온도 설정을 조금 해주면 되는데 얘 같은 경우에는 이제 보통 언어 모델 사용을 할 때 저희가 설정해서 사용할 수 있는 경우에는 많이 봤던 파라미터가 되겠죠.
那么现在我们就把它拿过来,稍微调整一下温度设置,对于这种情况,当我们使用语言模型时,这将是我们经常看到并可以设置的参数。


Attendees 1 1:06:57
与会者 1 1:06:57

그래서 이걸 확률 조정을 해주면 되는데 템플리처가 이제 1보다 작게 되면은 조금 더 높은 확률을 좀 선호한다고 할 수가 있습니다.
所以我们可以通过调整概率来实现,当温度参数小于 1 时,模型将更倾向于选择高概率的选项。

그래서 얘를 이제 작게 설정을 하면은 만약에 이제 단어가 2개가 있다고 가정을 하면은 0.8이랑 0.2의 확률이 각각 나오는 아웃풋이 있는데 이제 0.8에다가 가중치를 더 많이 줘서 얘를 선택할 확률이 0.8보다 높아지게 하는 거죠.
也就是说,如果我们将温度参数设置得很小,假设现在有两个单词,输出的概率分别为 0.8 和 0.2,那么我们会给 0.8 赋予更多的权重,使得选择该选项的概率比 0.8 更高。

그래서 이거는 이제 조절을 해 주시면 되고 보통 이제 템플릿처가 작게 되면은 조금 정확한 그러니까 봤던 것처럼 이제 조금 더 높은 확률이 나올 확률이 높아지는 거고 템플릿처가 높으면 조금 더 자유로운 좀 더 자유도가 높아서 작은 확률의 아웃풋에다가 가중치를 줘가지고 잘 희귀한 단어도 잘 나올 수 있도록 하 잘 나올 수 있도록 하게 되겠죠.
所以这就需要进行调节,通常当模板较小时,正如我们之前看到的那样,会有更高的精确概率,而当模板较大时,自由度会更高,可以通过给罕见单词的低概率输出赋予权重,使得罕见词语也能更好地生成出来。

그래서 이렇게 템플릿을 조정을 해 주고 그래서 얘 같은 경우에는 이제 최종적으로 조정된 확률이 이렇게 나오겠죠.
因此,像这样调整模板,最终调整后的概率就会是这样呈现出来。


Attendees 1 1:08:03
听众 1 1:08:03

그래서 이 온도 변수를 가지고 최종적으로 이 확률을 조정을 해서 이제 랜덤하게 데이터를 가져오게 됩니다.
所以通过这个温度变量最终来调整这个概率,然后随机获取数据。

그래서 여기 보시면 먼저 여기부터 넣어주면은
所以在这里,首先从这里开始放入


Attendees 1 1:08:27
参会人员 1 1:08:27

얘는 이제 어떤 의미냐면은 저희가 예측을 하는 이 함수를 다시 정의를 하게 되는데 이제 이 값은 얘의 값이겠죠.
这意味着我们要重新定义预测函数,现在这个值将是它的值。

그러니까 전체적으로 이제 확률 값 만 개겠죠. 여기는 만 개가 들어가고 그 1만 개에 대해서 이제 어떤 식으로 아웃풋이 나오게 되는지 그 확률들을 이렇게 넣어주게 됩니다.
所以总体来说,现在大概有一万个概率值。这里放入一万个,并且对于这一万个,我们将看看输出会如何产生,并以这种方式提供这些概率。

얘는 조정될 확률이 여기 들어가 있죠. 그러면 이제 아웃풋 단어들은 여기 안에다가 얘를 여기다 넣어주면 되겠죠.
这个概率将被调整并放置在这里。那么现在输出单词可以将其放在这里。

예측한 단어에 대해서 어떻게 나오는지 볼 수가 있습니다.
我们可以查看预测的单词是如何呈现的。

그럼 이 확률 분포를 사용해서 이제 다음 단어를 선택을 하게 되겠죠.
那么我们将使用这个概率分布来选择下一个词。

그다음에 요 시드 텍스트에다가 요 아웃풋 단어를 붙여줘가지고 다시 반환을 해주게 됩니다.
然后将这个输出词附加到种子文本中,并再次返回。

그러면 이 과정을 계속 반복을 하게 되면은 처음 단어 여기 보시면 이제 이 단어 시퀀스에 대해서 아웃풋이 하나씩 만들어지면서 총 20개의 단어를 예측을 하게 되겠죠.
那么如果继续这个过程,正如你所看到的,对于这个单词序列,每次会生成一个输出,最终将预测出总共 20 个单词。


Attendees 1 1:09:34
与会者 1 1:09:34

그래서 이 제너레이트 텍스트의 결과를 보시면 이 문장을 이 단어를 넣었을 때 이런 식의 문장이 생성된다고 보실 수가 있습니다.
所以当您查看这个生成文本的结果时,您可以看到当我们放入这个词时,就会生成这种类型的句子。

위에 갔다가 다시 올게요. 여기 보시면 지금 히스토리 해가지고 학습이 다 됐고 로스는 6부터 한 5 정도까지 줄어들었는데 얘를 이제 에폭을 더 많이 하게 되면 조금 더 정확한 결과가 나오겠죠.
我待会儿去看一下就回来。从这里可以看到,历史学习已经完成,损失从 6 降到了大约 5 左右,如果我们增加更多的训练轮次,结果可能会更加准确。

지금 어큐러시가 한 0.07에서 0.17 정도로 조금 학습이 됐으니까 그래서 이 히스토리 플랫을 찍어보면은 로스 값이 정상적으로 잘 감소하고 있는 걸 보시 이렇게 감소하고 있는 걸 보실 수가 있습니다.
现在准确率从大约 0.07 到 0.17 有了一些学习进展,所以如果我们绘制这个历史图表,您可以看到损失值正常且持续地在下降。

그러면 이제 얘를 가지고 아까 저희가 제너레이트 텍스트 함수를 정리를 했으니까 얘를 실행시켜주시면 저희가 원하는 값들에 대해서 아웃풋을 뽑을 수가 있겠죠.
那么现在我们已经整理了生成文本函数,就可以执行它,并得到我们想要的输出值了。

그래서 이걸 실행을 시켜주시면 다른 아웃풋이 나올 수도 있는데 좀 다른 것 같은데 조금 아마 아까랑 좀 다른 것 같긴 해요.
所以当你执行这个操作时,可能会出现不同的输出,看起来似乎有些不同,感觉可能与之前稍有不同。

이제 디시어에 대해서 이제 이렇게 생성된 20개의 단어가 나오게 됩니다.
现在在这里,将生成 20 个单词。


Attendees 1 1:10:45
与会者 1 1:10:45

만약에 이걸 이제 30개로 조정을 하게 되면은 더 긴 아웃풋이 나오겠죠 이렇게 길어지.
如果现在将其调整为 30 个,那么输出将会更长,就像这样变得更长了。

근데 이제 요 넥스트 월드를 조정하지 않으면 디폴트 값은 20이었으니까 얘는 이제 20개만 나오게 됩니다.
如果不调整这个 next_world,默认值是 20,所以它现在只会生成 20 个。

아무튼 이런 식으로 해가지고 텍스트 제너레이션까지 진행을 해봤고 퀴즈는 총 2개인데 이렇게 패션 이미지 앱 리스트 앱 리스트 패션 데이터셋을 가지고 이제 사용을 해보면 되고 먼저 첫 번째는 오토 인코더고 두 번째는 이제 개입니다.
总之我们就是这样进行文本生成的,而测验总共有 2 个,就是使用时尚图像应用程序列表应用程序列表和时尚数据集,首先第一个是自动编码器,第二个是生成对抗网络。

각각에 대해서 진행을 해 보시면 되고 오늘 실습에서 유의하실 점은 이제 겐 같은 경우에는 모델을 빌드를 할 때 위에서 했던 거랑 거의 동일한 모델을 사용을 했거든요.
对于每一个部分,您都可以进行实践。今天实践中需要注意的是,对于生成对抗网络(GAN),在构建模型时,我们基本上使用了之前的类似模型。

그래서 요 아래 것도 살펴보시고 이제 위에 있는 코드 사용하셔가지고 꼭 진행해 주셨으면 좋겠습니다.
因此,请您查看下面的内容,并使用上面的代码来进行实践。

요거 토대로 이제 채점을 할 거기 때문에 위에 거랑 비교하시면서 진행해 주시면 됩니다.
我将根据这个来进行评分,所以请在对照上面的内容的同时进行。


Attendees 1 1:11:49
与会者 1 1:11:49

동일한 데이터셋 가지고 이제 오토 인코더랑 개나 하니까 이렇게 생성된 것도 옷이 나오겠죠.
使用相同的数据集,现在使用自动编码器和生成对抗网络,这样生成的图像也会出现衣服。

숫자가 아니고 진행하시다가 모르시는 거 있으면 질문해 주세요.
如果不明白数字或在进行过程中有任何不理解的地方,请随时提问。


Attendees 1 1:16:44
与会者 1 1:16:44

그리고 그 퀴즈에 보시면 원래는 이제 논 하나당 한 줄로 되어 있었는데 여기 왼쪽 보시면 그냥 하나가 이렇게 원래 여기 이제 레이어가 다 있어야 되는데 문이 하나만 되어 있잖아요.
如果您查看那个测验,原本每个神经元是一行,但是在左侧,您会看到仅有一个门,而原本应该是所有层都在这里的。

이거는 알아서 이제 여러 줄로 판단하시고 진행해 주시면 됩니다.
这个就请您自行判断并按多行进行处理。

여기도 그렇고 디스크리미네이터도 그렇고 아마 밑에도 간단하게 작성을 했을 거예요.
不管是这里还是判别器,可能下面也会简单地写一写。

여기도 보면은 지금 g 모델의 폰 파일을 해야 되는데 아담 옵티마이저도 정의를 해서 저희가 사용을 했었죠.
在这里,我们还需要使用 g 模型的权重文件,并且已经定义了 Adam 优化器。

그래서 이제 여기도 옵티마이저 쥐랑 이제 컴파일하는 코드 기술이 필요합니다.
因此,现在我们需要为这里的优化器编写编译代码。

위에 거 보시고 진행해 주시면 돼요.
请按照上面的内容进行操作。


Attendees 1 1:18:03
与会者 1 1:18:03

그러네. 학습을 했나요?
是啊。你学习了吗?


Attendees 2 1:18:36
参会者 2 1:18:36

다르게 나오네.
看起来不太一样。


Attendees 2 1:18:48
与会者 2 1:18:48

여기서부터 시행을 했던
从这里开始执行


Attendees 2 1:21:30
参会人员 2 1:21:30

아래 이거 패션이에요. 2번 근데 2번이 수정도 더 코드가 잘 나와야 되는데 잘 안 된 것 같은데 그거
这是时尚的东西。第 2 个,但第 2 个看起来代码修改得不太好,似乎不太顺利


Attendees 1 1:23:43
参会者 1 1:23:43

한번 원래 친정으로 들을 거라
我将要回原来的娘家了


Attendees 1 1:24:11
与会者 1 1:24:11

이거 퀴즈 1번에 오시면 여기에 이렇게 똑같이 인코딩된 데이터 가지고 이제 플라 찍는 거 있는데 여기는 300개까지 해주셔야 300이 되는데 네 300개 사용하셔야 이제 이런 식으로 잘 나오게 됩니다.
在这个测验第 1 题中,当您来到这里时,您将以同样的方式使用这个编码的数据,现在需要绘制图表,这里需要使用 300 个,是的,您应该使用 300 个,这样就能很好地呈现出来。


Attendees 2 1:24:43
与会者 2 1:24:43

그냥 돌아가면서 그냥
随意走走而已


Attendees 2 1:25:04
与会者 2 1:25:04

근데 전주
那么,全州


Attendees 2 1:26:50
与会者 2 1:26:50


Attendees 2 1:27:37
出席人数 2 1:27:37

우리는 작성한 게 있죠 있잖아
我们确实写了些东西


Attendees 2 1:27:43
出席人数 2 1:27:43

괜찮아요.
没问题。


Attendees 2 1:28:19
参会人员 2 1:28:19


Attendees 3 1:29:05
参会人员 3 1:29:05

이제 하나 여쭤보고 잘 보시고
我想问一下,请仔细看


Attendees 2 1:29:11
与会者 2 1:29:11

근데 돌아간 거는 상관없어요.
我无所谓它是怎么转的。


Attendees 3 1:31:50
与会人员 3 1:31:50

30 30 데 이게 숫자가 안 나오네. 어떻게 어떻게
30 30 呀,这个数字怎么不出来。到底怎么回事


Attendees 3 1:32:04
参会人数 3 1:32:04

4월 1 70
4 月 1 日 70


Attendees 3 1:35:46
参会人员 3 1:35:46

저 좀 많이 치고 다
我还是打了很多


Attendees 3 1:36:04
参会人数 3 1:36:04

잠시만요. 저희가 이렇게 메인 위로 올라가서 처음에 근데 이거 모델 생성하면 더
请稍等。我们这样上到主页面,起初这个模型创建之后就更


Attendees 1 1:37:48
与会者 1 1:37:48

이것도 g로 아마 하시는 게 이게 똑같은 건데 이거를 TRS를 하나로 설정해서는 조금 오류가 나더라고요.
这个用 g 大概也能做,但是如果将 TRS 设置为一个,就可能会出现一些错误。

대신 똑같은 걸 이제 따로 설정을 해서 여기에서 이것도 아까 같은 게 하나만 있으시면 두 개로 하시는 게 안전할 것 같아
不如将它单独设置,如果就像刚才那样只有一个,我觉得最好还是使用两个会比较安全。


Attendees 2 1:38:03
参会者 2 1:38:03

또 가지고는 하나인데 이 3개는
还有一个,这三个


Attendees 1 1:38:05
出席人员 1 1:38:05

네 맞아요. 그래서 아까 이쪽에서도 원래 여기도 그
是的,没错。所以就像我之前说的,这里也是这样


Attendees 2 1:38:09
与会者 2 1:38:09

하나는 데만 이렇게 그냥 넣으시면 돼요.
只需将它直接放在这里就可以了。


Attendees 3 1:38:19
与会者 3 1:38:19

안 좋은 점 있으면 가지고 너무 하시면 안될까 형님 어디 믿는다고 어디 시간도 안 줄게
大哥,如果有什么不好的地方,您别太过分了,我相信您在哪里,我也不会给您时间


Attendees 3 1:38:50
参会人数 3 1:38:50

그냥
就这样


Attendees 3 1:39:16
参与者 3 1:39:16

그냥 큰 틀은 거 집단은 3개가 3개 아니 두 개는 티테스트가 잘 안다.
总的框架就是集团是 3 个 3 个的,不,两个是 t 检验不是很清楚。

그치 근데 3개 이상인데 TT스트를 이렇게 이렇게 해놓으면 신뢰도가 0.1 더 많이 떨어져 그래서 3개 한 번에 김호 감사는 이 세 개는 같다.
对啊,但是有 3 个以上,如果这样做 TT 测试,置信度就会降低 0.1,所以一次性做这三个是相同的。

아니다. 그리 감사합니다. 얼마나 좋습니다. 잠깐 봐봐.
不对。非常感谢。多么好啊。稍等看看。

아니 잠깐만 개발자만 쓰기에 안전하 여기 이거 이 세 개의 를 중간에 딱 하나 더 이 전체 평균 그래서 그 차이 전체 평균이랑 여기 와이프랑 모델이 모델이 있죠.
不好意思,等一下,不仅仅是开发者使用安全,这里这三个在中间再加一个,然后整体平均,所以这个差异与整体平均,还有老婆和模型,模型是存在的。


Attendees 3 1:40:19
与会者 3 1:40:19

책상 하나 지 와이파가 있나 이 센스가 몰라 모르겠잖아 아니 이걸 어떻게 설명해 치스 있는 알라는 잘 되는데 모르겠다.
桌上有一个我不知道是否有 Wi-Fi 的这种感觉,我不清楚。不,我该怎么解释呢?虽然奶酪很好,但我就是不明白。

마우스 근처 받아서
在鼠标附近接收


Attendees 1 1:40:50
与会者 1 1:40:50

텐스 플로에서 어떻게 생각하는지 한 분 게 어떻게 정리되는지에 대해 가지 많이 쓰시는 실물이랑 그 하나의 지향에서도
对于在 TensorFlow 中如何思考,以及一个人如何整理这些内容,可能会有很多观点和实际应用示例


Attendees 3 1:41:02
听众 3 1:41:02

찾아가서 하겠습니다.
我们将前往并完成。


Attendees 1 1:41:03
参会人员 1 1:41:03

네네 그거 쓰시면 되죠.
对的,可以这样写。


Attendees 3 1:41:10
出席人数 3 1:41:10

좀 더 좀 더 들어 몸 좀 더 들어 보안 다 이게 굉장히 요즘
再多一点,再多一点,进入身体,再多地进入,关于安全,这都非常,现在


Attendees 3 1:41:42
3 号听众 1:41:42

아니 이제 뭔가 보이지
不对,现在根本看不出什么


Attendees 3 1:41:49
与会人员 3 1:41:49

수 있으니까 근데 내가 그래 볼게요.
因为我可以这样做,那么我就这样做吧。


Attendees 3 1:42:03
出席者 3 1:42:03

이제 텍스트 그런 거 다 배우는 기억만 했다가 연시 해 가지고 형 우리가 배웠잖아.
现在我只记得学习过那些文本,然后我就重复演示了,哥,我们不是已经学过了吗。

아니 가 끝나기 전에 아무 얘기하지 잘못해서
不要在结束前说些不该说的话


Attendees 3 1:42:39
与会者 3 1:42:39

헬기에서 해서 또 안 오빠가 재밌게 사람들이 딱 강자라고 느낌이 되는 것 같아요.
从直升机上看,感觉非常有趣,人们都像是强者一样。


Attendees 3 1:43:08
与会者 3 1:43:08

그 베타들이 평균이라고 보는 건가 평균들이 다
那些贝塔就是平均吗?平均是不同的


Attendees 3 1:43:24
与会者 3 1:43:24

네 지금 가
好的,现在就走


Attendees 1 1:43:27
与会者 1 1:43:27

이게 수업 시간에 했던 부분이시구나. 이게 원래
原来是课上讲过的内容啊。这是


Attendees 1 1:43:35
与会者 1 1:43:35

잠깐만 제가 20분 했을 텐데
我这才 20 分钟吧


Attendees 1 1:43:58
与会者 1 1:43:58


Attendees 1 1:44:03
出席者 1 1:44:03

원래 20으로 돼 있었구나. 네 근데 20으로 하시면 돼요.
原来是 20 啊。是的,用 20 就可以了。

이게 제가 20으로 바꾸게 한 번도 안 돌렸던 것 같아요.
我感觉这个 20 我从未运行过。

그 결과 가정 이어서 이 아웃풋은 무시하지
因此,根据假设,这个输出将被忽略


Attendees 2 1:44:14
与会者 2 1:44:14

내 메뉴고 얘가 맞아요.
这是我的菜单,这是正确的。


Attendees 2 1:45:04
与会者 2 1:45:04

오늘
今天


Attendees 3 1:46:40
与会者 3 1:46:40

2번 페이비가 엄청 해어지고 많이 맞죠? 네.
2 号选手被打得很惨,挨了很多拳,对吧?是的。



clovanote.naver.com