Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IndexError: During training 0-dim tensor error #117

Open
divyanshujhawar opened this issue Jul 24, 2020 · 2 comments
Open

IndexError: During training 0-dim tensor error #117

divyanshujhawar opened this issue Jul 24, 2020 · 2 comments

Comments

@divyanshujhawar
Copy link

divyanshujhawar commented Jul 24, 2020

While executing the train.py file,

IndexError: invalid index of a 0-dim tensor. Use tensor.item() in Python or tensor.item<T>() in C++ to convert a 0-dim tensor to a number

The complete log has been attached below:

D_adam_b1: 0.5
D_adam_b2: 0.999
G_adam_b1: 0.5
G_adam_b2: 0.999
aus_file: aus_openface.pkl
batch_size: 4
checkpoints_dir: ./checkpoints
cond_nc: 17
data_dir: GANimation-master/sample_dataset1
dataset_mode: aus
display_freq_s: 300
do_saturate_mask: False
gpu_ids: [0]
image_size: 128
images_folder: imgs
is_train: True
lambda_D_cond: 4000
lambda_D_gp: 10
lambda_D_prob: 1
lambda_cyc: 10
lambda_mask: 0.1
lambda_mask_smooth: 1e-05
load_epoch: 0
lr_D: 0.0001
lr_G: 0.0001
model: ganimation
n_threads_test: 1
n_threads_train: 4
name: experiment_1
nepochs_decay: 10
nepochs_no_decay: 20
num_iters_validate: 1
poses_g_sigma: 0.06
print_freq_s: 60
save_latest_freq_s: 3600
serial_batches: False
test_ids_file: test_ids.csv
train_G_every_n_iterations: 5
train_ids_file: train_ids.csv
-------------- End ----------------
./checkpoints/experiment_1
Dataset AusDataset was created
Dataset AusDataset was created
#train images = 15
#test images = 15
Network generator_wasserstein_gan was created
Network discriminator_wasserstein_gan was created
Model GANimation was created
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
/content/GANimation-master/train.py in <module>()
    139 
    140 if __name__ == "__main__":
--> 141     Train()

4 frames
/content/GANimation-master/models/ganimation.py in get_current_errors(self)
    318         loss_dict = OrderedDict([('g_fake', self._loss_g_fake.data[0]),
    319                                  ('g_cond', self._loss_g_cond.data[0]),
--> 320                                  ('g_mskd_fake', self._loss_g_masked_fake.data[0]),
    321                                  ('g_mskd_cond', self._loss_g_masked_cond.data[0]),
    322                                  ('g_cyc', self._loss_g_cyc.data[0]),

IndexError: invalid index of a 0-dim tensor. Use tensor.item() in Python or tensor.item<T>() in C++ to convert a 0-dim tensor to a number


I have run all the previous commands, including the requirements.txt file. While looking for this over the net, I found that it is due to the update in the Pytorch version which does not allow accessing the last element as [0], we need to use .item(). But, even after changing it, I am getting the same error.

Anyone facing the same issues?

@Sinerei
Copy link

Sinerei commented Oct 14, 2022

Hi @divyanshujhawar ,
I have encountered the same problem. Could you find the solution?

@Sinerei
Copy link

Sinerei commented Oct 14, 2022

I think i have the solution for the upper version of pytorch hier:
Change he indexed loss.data[0] to loss.data:

in ganimation.py change:

    def get_current_errors(self):
        loss_dict = OrderedDict([('g_fake', self._loss_g_fake.data[0]),
                                 ('g_cond', self._loss_g_cond.data[0]),
                                 ('g_mskd_fake', self._loss_g_masked_fake.data[0]),
                                 ('g_mskd_cond', self._loss_g_masked_cond.data[0]),
                                 ('g_cyc', self._loss_g_cyc.data[0]),
                                 ('g_rgb', self._loss_rec_real_img_rgb.data[0]),
                                 ('g_rgb_un', self._loss_g_unmasked_rgb.data[0]),
                                 ('g_rgb_s', self._loss_g_fake_imgs_smooth.data[0]),
                                 ('g_m1', self._loss_g_mask_1.data[0]),
                                 ('g_m2', self._loss_g_mask_2.data[0]),
                                 ('g_m1_s', self._loss_g_mask_1_smooth.data[0]),
                                 ('g_m2_s', self._loss_g_mask_2_smooth.data[0]),
                                 ('g_idt', self._loss_g_idt.data[0]),
                                 ('d_real', self._loss_d_real.data[0]),
                                 ('d_cond', self._loss_d_cond.data[0]),
                                 ('d_fake', self._loss_d_fake.data[0]),
                                 ('d_gp', self._loss_d_gp.data[0])])
        return loss_dict

to:

def get_current_errors(self):
        loss_dict = OrderedDict([('g_fake', self._loss_g_fake.data),
                                 ('g_cond', self._loss_g_cond.data),
                                 ('g_mskd_fake', self._loss_g_masked_fake.data),
                                 ('g_mskd_cond', self._loss_g_masked_cond.data),
                                 ('g_cyc', self._loss_g_cyc.data),
                                 ('g_rgb', self._loss_rec_real_img_rgb.data),
                                 ('g_rgb_un', self._loss_g_unmasked_rgb.data),
                                 ('g_rgb_s', self._loss_g_fake_imgs_smooth.data),
                                 ('g_m1', self._loss_g_mask_1.data),
                                 ('g_m2', self._loss_g_mask_2.data),
                                 ('g_m1_s', self._loss_g_mask_1_smooth.data),
                                 ('g_m2_s', self._loss_g_mask_2_smooth.data),
                                 ('g_idt', self._loss_g_idt.data),
                                 ('d_real', self._loss_d_real.data),
                                 ('d_cond', self._loss_d_cond.data),
                                 ('d_fake', self._loss_d_fake.data),
                                 ('d_gp', self._loss_d_gp.data)])
        return loss_dict

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants