Coder Social home page Coder Social logo

Comments (6)

andyclsr avatar andyclsr commented on June 19, 2024 1

ok I know it. really thank you for your generous explanations! wish you a good day!

from trojanzoo.

andyclsr avatar andyclsr commented on June 19, 2024

can concretely tell me how to store the attacked model after this step:
image

from trojanzoo.

ain-soph avatar ain-soph commented on June 19, 2024

attack_dir sets the folder_path of Attack instance, which is attack.folder_path. This property is used in many places including saving method (see following)

def attack(self, epochs: int, **kwargs):
kwargs['validate_fn'] = kwargs.get('validate_fn', self.validate_fn)
kwargs['save_fn'] = kwargs.get('save_fn', self.save)

def save(self, filename: str = None, **kwargs):
r"""Save attack results to files."""
filename = filename or self.get_filename(**kwargs)
file_path = os.path.join(self.folder_path, filename)
np.save(file_path + '.npy', self.mark.mark.detach().cpu().numpy())
F.to_pil_image(self.mark.mark).save(file_path + '.png')
self.model.save(file_path + '.pth')
print('attack results saved at: ', file_path)

The save_fn is passed to model._train method and used in

if save:
save_fn(file_path=file_path, folder_path=folder_path,
suffix=suffix, verbose=verbose)


This structure is to save model during training intervals. If you simply want to save model in your main script after training, you can always use model._model, which is a standard torch.nn.Module. You can use torch.save(model._model.state_dict(), save_path)

from trojanzoo.

ain-soph avatar ain-soph commented on June 19, 2024

To control the interval to save models, use validate_interval parameter (command-line argument as well)

if validate_interval != 0 and (_epoch % validate_interval == 0 or _epoch == epochs):

group.add_argument('--validate_interval', type=int,

from trojanzoo.

andyclsr avatar andyclsr commented on June 19, 2024

To control the interval to save models, use validate_interval parameter (command-line argument as well)

if validate_interval != 0 and (_epoch % validate_interval == 0 or _epoch == epochs):

group.add_argument('--validate_interval', type=int,

what if i want to save multiple models? not just updating one model.

from trojanzoo.

ain-soph avatar ain-soph commented on June 19, 2024

@andyclsr You have 2 options:

  1. pass your own save_fn to model._train in attack.attack
  2. overload save_fn in your own Attack class

def attack(self, epochs: int, **kwargs):
kwargs['validate_fn'] = kwargs.get('validate_fn', self.validate_fn)
kwargs['save_fn'] = kwargs.get('save_fn', self.save)

from trojanzoo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.