#python #pytorch
Вопрос:
Когда я запускал «StyleGAN2» в colab, я столкнулся с этим вопросом: Не удается привести скаляр из dtype(‘
Я долго искал, но до сих пор не знаю, как это решить. Я попробовал несколько способов. Но это не сработало.
Полный код(только часть StyleGan2):
network = 'uC18CuB140uC758uC138uACC4' network_pkl = '/content/network/' meta_data[network][0] '.pkl' print('Loading networks from "%s"...' % network_pkl) device = torch.device('cuda') with dnnlib.util.open_url(network_pkl) as f: G = legacy.load_network_pkl(f)['G_ema'].to(device) # type: ignore #@markdown **2) Seed** #@markdown Use -1 for random seed or type a specific seed (from 0 up to 2^32-1): seeds = -1#@param {type: "number"} if seeds == -1: seeds = np.random.randint(2**32 - 1, size=1) else: seeds = [seeds] print('Seed : ', seeds) #@markdown **3) Truncation** truncation_psi = 0 #@param {type:"slider", min:0, max:1, step:0.05} #@markdown **4) noise** noise_mode = 'random' #@param ['const', 'random', 'none'] # Labels label = torch.zeros([1, G.c_dim], device=device) if G.c_dim != 0: label[:, class_idx] = 1 #@markdown **Generate images** def generate_images(seeds_ = seeds, latent_vector = None, truncation_psi_ = truncation_psi, noise_mode_ = noise_mode, class_idx = label, network = network_pkl): imgs=[] with dnnlib.util.open_url(network) as f: G = legacy.load_network_pkl(f)['G_ema'].to(device) # type: ignore if latent_vector == None : for seed_idx, seed in enumerate(seeds_): # print('Generating image for seed %d (%d/%d) ...' % (seed, seed_idx, len(seeds))) z = torch.from_numpy(np.random.RandomState(seed).randn(1, G.z_dim)).to(device) img = G(z, class_idx, truncation_psi=truncation_psi_, noise_mode=noise_mode_) img = (img.permute(0, 2, 3, 1) * 127.5 128).clamp(0, 255).to(torch.uint8) imgs.append(PIL.Image.fromarray(img[0].cpu().numpy(), 'RGB')) else: for i in range(len(latent_vector)): img = G(latent_vector[i], class_idx, truncation_psi=truncation_psi_, noise_mode=noise_mode_) img = (img.permute(0, 2, 3, 1) * 127.5 128).clamp(0, 255).to(torch.uint8) imgs.append(PIL.Image.fromarray(img[0].cpu().numpy(), 'RGB')) return imgs image = generate_images('/content/input/liang.jpg') image[0].save('/content/results/generate_image.png') display(Image(filename='/content/results/generate_image.png'))
Полная Ошибка:
TypeError Traceback (most recent call last) _mt19937.pyx in numpy.random._mt19937.MT19937._legacy_seeding() TypeError: 'str' object cannot be interpreted as an integer During handling of the above exception, another exception occurred: TypeError Traceback (most recent call last) lt;ipython-input-26-aa5c6201c6e0gt; in lt;modulegt;() 86 return imgs 87 ---gt; 88 image = generate_images('/content/input/liang.jpg') 89 image[0].save('/content/results/generate_image.png') 90 display(Image(filename='/content/results/generate_image.png')) lt;ipython-input-26-aa5c6201c6e0gt; in generate_images(seeds_, latent_vector, truncation_psi_, noise_mode_, class_idx, network) 71 # print('Generating image for seed %d (%d/%d) ...' % (seed, seed_idx, len(seeds))) 72 # numpy.array(wavelength,dtype='float64') ---gt; 73 z = torch.from_numpy(np.random.RandomState(seed).randn(1, G.z_dim)).to(device) 74 img = G(z, class_idx, truncation_psi=truncation_psi_, noise_mode=noise_mode_) 75 img = (img.permute(0, 2, 3, 1) * 127.5 128).clamp(0, 255).to(torch.uint8) mtrand.pyx in numpy.random.mtrand.RandomState.__init__() _mt19937.pyx in numpy.random._mt19937.MT19937._legacy_seeding() _mt19937.pyx in numpy.random._mt19937.MT19937._legacy_seeding() TypeError: Cannot cast scalar from dtype('lt;U1') to dtype('int64') according to the rule 'safe'
Большое спасибо!!!Пожалуйста!!!!!
Комментарии:
1. Похоже
seed
, это строка, а не целое число. Проверьте, так ли это.2. Спасибо! Я пытался сделать это, но до сих пор не могу решить эту проблему 🙁
3. Я предлагаю вам распечатать
seed
непосредственно перед звонкомRandomState
.