| import torch | |
| from safetensors.torch import save_file, safe_open | |
| # Open the safetensors file | |
| model = safe_open('F:/sd3_test/sd3_medium.safetensors', framework='pt') # Updated the backslashes to forward slashes for compatibility | |
| # Retrieve keys and create a dictionary of tensors | |
| keys = model.keys() | |
| dic = {key: model.get_tensor(key) for key in keys} | |
| # Part of the key to filter by | |
| parts = ['diffusion_model'] | |
| count = 0 | |
| # Loop through the keys | |
| for k in keys: | |
| # Check if all parts are in the key | |
| if all(part in k for part in parts): | |
| v = dic[k] # Get the tensor | |
| print(f'{k}: {v.std()}') # Corrected the print statement to use 'v' | |
| # Add noise to the tensor | |
| noise = torch.normal(torch.zeros_like(v) * v.mean(), torch.ones_like(v) * v.std() * 0.02) | |
| dic[k] += noise | |
| count += 1 | |
| # Print the count of modified tensors | |
| print(count) | |
| # Save the modified tensors to a new file | |
| save_file(dic, 'F:/sd3_test/sd3_medium_perturbed_marduk191-3.safetensors', metadata=model.metadata()) | |