import time import os torch.manual_seed(1) torch.set_num_threads(4) np.random.seed(6) mu = params.mu rho = params.rho dt = params.dt w, h = params.width, params.height n_time_steps = params.average_sequence_length save_movie = False #True# # load fluid model: logger = Logger(get_param.get_hyperparam(params), use_csv=False, use_tensorboard=False) fluid_model = toCuda(get_Net(params)) date_time, index = logger.load_state(fluid_model, None, datetime=params.load_date_time, index=params.load_index) fluid_model.eval() print(f"loaded {params.net}: {date_time}, index: {index}") # setup opencv windows: cv2.namedWindow('legend', cv2.WINDOW_NORMAL) # legend for velocity field vector = torch.cat([ torch.arange(-1, 1, 0.01).unsqueeze(0).unsqueeze(2).repeat(1, 1, 200), torch.arange(-1, 1, 0.01).unsqueeze(0).unsqueeze(1).repeat(1, 200, 1)
print(f"Parameters: {vars(params)}") mu = params.mu rho = params.rho dt = params.dt # initialize fluid model fluid_model = toCuda(get_Net(params)) fluid_model.train() # initialize Optimizer optimizer = Adam(fluid_model.parameters(), lr=params.lr) # initialize Logger and load model / optimizer if according parameters were given logger = Logger(get_hyperparam(params), use_csv=False, use_tensorboard=params.log) if params.load_latest or params.load_date_time is not None or params.load_index is not None: load_logger = Logger(get_hyperparam(params), use_csv=False, use_tensorboard=False) if params.load_optimizer: params.load_date_time, params.load_index = logger.load_state( fluid_model, optimizer, params.load_date_time, params.load_index) else: params.load_date_time, params.load_index = logger.load_state( fluid_model, None, params.load_date_time, params.load_index) params.load_index = int(params.load_index) print(f"loaded: {params.load_date_time}, {params.load_index}") params.load_index = 0 if params.load_index is None else params.load_index
import numpy as np from setups import Dataset from derivatives import dx,dy,laplace from torch.optim import Adam #torch.manual_seed(0) #np.random.seed(0) #date_time: 2020-01-08 12:15:30 index 70 gibt verhalten, das ähnlich wie karman street aussieht (bei v=-0.79/-1) mu = params.mu rho = params.rho w,h = params.width,params.height plot = True logger = Logger(get_param.get_hyperparam(params),use_csv=False,use_tensorboard=False) pde_cnn = PDE_UNet().cuda() date_time,index = logger.load_state(pde_cnn,None,datetime=params.load_date_time,index=params.load_index) print(f"date_time: {date_time}; index: {index}") with torch.no_grad(): for epoch in range(10): dataset = Dataset(w,h,1,1) for t in range(5000): v_cond,cond_mask,flow_mask,v_old,p_old = toCuda(dataset.ask()) v_new,p_new = pde_cnn(v_old,p_old,flow_mask,v_cond,cond_mask) loss_bound = torch.mean(cond_mask*(v_new-v_cond)**2) v_new = cond_mask*v_cond+flow_mask*v_new