1
0
Fork 0

feat(api): build a single token for multi-layer Textual Inversions (#212)

This commit is contained in:
Sean Sube 2023-03-18 07:47:36 -05:00
parent af62c1c3b6
commit 5dd14c19ce
Signed by: ssube
GPG Key ID: 3EED7B957D362AF1
1 changed files with 10 additions and 0 deletions

View File

@ -65,14 +65,24 @@ def blend_textual_inversions(
num_tokens = trained_embeds.shape[0]
logger.debug("generating %s layer tokens for %s", num_tokens, name)
sum_layer = np.zeros(trained_embeds[0, :].shape)
for i in range(num_tokens):
token = f"{base_token or name}-{i}"
layer = trained_embeds[i, :].cpu().numpy().astype(dtype)
layer *= weight
sum_layer += layer
if token in embeds:
embeds[token] += layer
else:
embeds[token] = layer
# add sum layer to embeds
sum_token = f"{base_token or name}-all"
if sum_token in embeds:
embeds[sum_token] += sum_layer
else:
embeds[sum_token] = sum_layer
else:
raise ValueError(f"unknown Textual Inversion format: {format}")