Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
iperov
GitHub Repository: iperov/deepfacelab
Path: blob/master/core/leras/models/CodeDiscriminator.py
628 views
1
from core.leras import nn
2
tf = nn.tf
3
4
class CodeDiscriminator(nn.ModelBase):
5
def on_build(self, in_ch, code_res, ch=256, conv_kernel_initializer=None):
6
n_downscales = 1 + code_res // 8
7
8
self.convs = []
9
prev_ch = in_ch
10
for i in range(n_downscales):
11
cur_ch = ch * min( (2**i), 8 )
12
self.convs.append ( nn.Conv2D( prev_ch, cur_ch, kernel_size=4 if i == 0 else 3, strides=2, padding='SAME', kernel_initializer=conv_kernel_initializer) )
13
prev_ch = cur_ch
14
15
self.out_conv = nn.Conv2D( prev_ch, 1, kernel_size=1, padding='VALID', kernel_initializer=conv_kernel_initializer)
16
17
def forward(self, x):
18
for conv in self.convs:
19
x = tf.nn.leaky_relu( conv(x), 0.1 )
20
return self.out_conv(x)
21
22
nn.CodeDiscriminator = CodeDiscriminator
23