Thank you @mattdeitke
transforms.Grayscale ran without errors, but it gave [1, 50, 50] shape, and showed green image without cmap=plt.cm.binary option.
Could it be a problem with the original dataset?
class MyDataset(Dataset):

    def __init__(self, csv_file_path, root_dir, transform=None):
        self.image_dataframe = pd.read_csv(csv_file_path)
        self.root_dir = root_dir
        self.transform = transform

    def __len__(self):
        return len(self.image_dataframe)

    def __getitem__(self, idx):
        label = self.image_dataframe.iat[idx, LABEL_IDX]
        img_name = os.path.join(self.root_dir, 'data', 'load_data', self.image_dataframe.iat[idx, IMG_IDX]) 
        image = Image.open(img_name)
        if self.transform:
            image = self.transform(image)

        return image, label

imgDataset = MyDataset(csv_file_path, ROOT_DIR, transform=transforms.Compose([
    transforms.Grayscale(num_output_channels=1),
    transforms.Resize(50),
    transforms.ToTensor(),
    MyNormalize()
    ]))

print(imgDataset[0][0].size)
#<built-in method size of Tensor object at 0x1c2fce0708>
print(imgDataset[0][0].shape)
#torch.Size([1, 50, 50])