Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
S
stable-diffusion-webui
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
stable-diffusion-webui
Commits
d2c97fc3
Commit
d2c97fc3
authored
Nov 23, 2022
by
flamelaw
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix dropout, implement train/eval mode
parent
89d8ecff
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
6 deletions
+18
-6
hypernetwork.py
modules/hypernetworks/hypernetwork.py
+18
-6
No files found.
modules/hypernetworks/hypernetwork.py
View file @
d2c97fc3
...
...
@@ -154,16 +154,28 @@ class Hypernetwork:
HypernetworkModule
(
size
,
None
,
self
.
layer_structure
,
self
.
activation_func
,
self
.
weight_init
,
self
.
add_layer_norm
,
self
.
use_dropout
,
self
.
activate_output
,
last_layer_dropout
=
self
.
last_layer_dropout
),
)
self
.
eval_mode
()
def
weights
(
self
):
res
=
[]
for
k
,
layers
in
self
.
layers
.
items
():
for
layer
in
layers
:
res
+=
layer
.
parameters
()
return
res
def
train_mode
(
self
):
for
k
,
layers
in
self
.
layers
.
items
():
for
layer
in
layers
:
layer
.
train
()
res
+=
layer
.
trainables
()
for
param
in
layer
.
parameters
():
param
.
requires_grad
=
True
return
res
def
eval_mode
(
self
):
for
k
,
layers
in
self
.
layers
.
items
():
for
layer
in
layers
:
layer
.
eval
()
for
param
in
layer
.
parameters
():
param
.
requires_grad
=
False
def
save
(
self
,
filename
):
state_dict
=
{}
...
...
@@ -426,8 +438,7 @@ def train_hypernetwork(hypernetwork_name, learn_rate, batch_size, gradient_step,
shared
.
sd_model
.
first_stage_model
.
to
(
devices
.
cpu
)
weights
=
hypernetwork
.
weights
()
for
weight
in
weights
:
weight
.
requires_grad
=
True
hypernetwork
.
train_mode
()
# Here we use optimizer from saved HN, or we can specify as UI option.
if
hypernetwork
.
optimizer_name
in
optimizer_dict
:
...
...
@@ -538,7 +549,7 @@ def train_hypernetwork(hypernetwork_name, learn_rate, batch_size, gradient_step,
if
images_dir
is
not
None
and
steps_done
%
create_image_every
==
0
:
forced_filename
=
f
'{hypernetwork_name}-{steps_done}'
last_saved_image
=
os
.
path
.
join
(
images_dir
,
forced_filename
)
hypernetwork
.
eval_mode
()
shared
.
sd_model
.
cond_stage_model
.
to
(
devices
.
device
)
shared
.
sd_model
.
first_stage_model
.
to
(
devices
.
device
)
...
...
@@ -571,7 +582,7 @@ def train_hypernetwork(hypernetwork_name, learn_rate, batch_size, gradient_step,
if
unload
:
shared
.
sd_model
.
cond_stage_model
.
to
(
devices
.
cpu
)
shared
.
sd_model
.
first_stage_model
.
to
(
devices
.
cpu
)
hypernetwork
.
train_mode
()
if
image
is
not
None
:
shared
.
state
.
current_image
=
image
last_saved_image
,
last_text_info
=
images
.
save_image
(
image
,
images_dir
,
""
,
p
.
seed
,
p
.
prompt
,
shared
.
opts
.
samples_format
,
processed
.
infotexts
[
0
],
p
=
p
,
forced_filename
=
forced_filename
,
save_to_dirs
=
False
)
...
...
@@ -593,6 +604,7 @@ Last saved image: {html.escape(last_saved_image)}<br/>
finally
:
pbar
.
leave
=
False
pbar
.
close
()
hypernetwork
.
eval_mode
()
#report_statistics(loss_dict)
filename
=
os
.
path
.
join
(
shared
.
cmd_opts
.
hypernetwork_dir
,
f
'{hypernetwork_name}.pt'
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment