{
  "id": 212777,
  "title": "Submission Scoring Error",
  "url": "/competitions/cassava-leaf-disease-classification/discussion/212777",
  "author_name": "zhujinxiang",
  "post_date": "2021-01-20T07:08:24.915000",
  "votes": -1,
  "comment_count": 0,
  "views": 0,
  "content": "<p>Submission errors with \"Submission Scoring Error\" with no additional details.<br>\nAny clues how can we get over this issue. Please advise.<br>\nthis  is my predict.py</p>\n<h1>predict.py</h1>\n<p>import csv<br>\nimport os</p>\n<p>import numpy as np<br>\nimport torch<br>\nimport torch.utils.data as data<br>\nimport torchvision.transforms as transforms<br>\nfrom PIL import Image<br>\nfrom torch.utils.data import DataLoader</p>\n<p>device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")</p>\n<p>transforms = transforms.Compose(<br>\n    [transforms.Resize((512, 512)), <br>\n     transforms.ToTensor(),<br>\n     transforms.Normalize(mean=[0.471, 0.475, 0.376], std=[0.205, 0.201, 0.204])])</p>\n<p>def conversion(img):<br>\n    #img: PIL format<br>\n    img = np.array(img)<br>\n    h, w, c = img.shape<br>\n    if h&gt;w:<br>\n        img2 = np.ones((h, h, c), dtype='uint8')<em>0\n        start = (h-w)//2\n        img2[:, start:start+w, :] = img\n    elif w&gt;h:\n        img2 = np.ones((w, w, c), dtype='uint8')</em>0<br>\n        start = (w-h)//2<br>\n        img2[start:start+h,:,:] = img<br>\n    else:<br>\n        img2 = img<br>\n    img2 = Image.fromarray(img2)<br>\n    return img2<br>\nclass Predict_MyDataset(data.Dataset):</p>\n<pre><code>def __init__(self, phase='predict', resize=512, transform=None):\n    # assert phase in ['train', 'val', 'test']\n    self.phase = phase\n    self.resize = resize\n    self.root = '../input/cassava-leaf-disease-classification/test_images'\n    self.image_list = os.listdir(self.root)\n    self.image_list.sort()\n\n\n    self.transform = transform\n\ndef __getitem__(self, item):\n    # image\n    image_name = self.image_list[item]\n    image = Image.open(os.path.join(self.root, self.image_list[item])).convert('RGB')\n    image = conversion(image)\n\n    output_imgs = self.transform(image)\n    return output_imgs, self.image_list[item]\n\n\ndef __len__(self):\n    return len(self.image_list)\n</code></pre>\n<h1>predict_set = Predict_MyDataset('data/test_images', transform=transforms)</h1>\n<p>predict_dataset = Predict_MyDataset('predict', transform=transforms)<br>\npredict_loader = DataLoader(predict_dataset,<br>\n                            batch_size=8,<br>\n                            shuffle=False,<br>\n                            num_workers=0,<br>\n                            pin_memory=True)</p>\n<p>def main():<br>\n    PATH = './b4.pkl'<br>\n    net = torch.load(PATH).to(device)</p>\n<pre><code>net.eval()  # change into test model\n\n\nwith torch.no_grad():\n    for data in predict_loader:\n        test_images, name = data\n        inputs = test_images.to(device)\n        outputs = net(inputs)  # eval model only have last output layer\n        predict_y = torch.max(outputs, dim=1)[1]\n\n        name_list = []\n        predicted_list = []\n        name_list += (list(np.array(name)))\n        predicted_list += (list(predict_y.cpu().numpy()))\n        name_list = np.array(name_list).reshape(len(name_list), 1)\n        predicted_list = np.array(predicted_list).reshape(len(predicted_list), 1)\n        final_result = np.concatenate((name_list, predicted_list), 1)\n\n\ncsvFile = open(\"./submission.csv\", 'w', newline='')  #创建csv文件\nwriter = csv.writer(csvFile)                  #创建写的对象\nwriter.writerow([\"image_id\", \"label\"])\nfor i, data in enumerate((final_result), 0):\n    name = data[0]\n    lable = int(data[1])\n    final=[]\n    final.append(name)\n    final.append(lable)\n    writer.writerow(final)\ncsvFile.close()\n</code></pre>\n<p>if <strong>name</strong> == '<strong>main</strong>':<br>\n    main()</p>",
  "messages": [
    {
      "id": 1160845,
      "postDate": "2021-01-20T07:08:24.917Z",
      "content": "<p>Submission errors with \"Submission Scoring Error\" with no additional details.<br>\nAny clues how can we get over this issue. Please advise.<br>\nthis  is my predict.py</p>\n<h1>predict.py</h1>\n<p>import csv<br>\nimport os</p>\n<p>import numpy as np<br>\nimport torch<br>\nimport torch.utils.data as data<br>\nimport torchvision.transforms as transforms<br>\nfrom PIL import Image<br>\nfrom torch.utils.data import DataLoader</p>\n<p>device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")</p>\n<p>transforms = transforms.Compose(<br>\n    [transforms.Resize((512, 512)), <br>\n     transforms.ToTensor(),<br>\n     transforms.Normalize(mean=[0.471, 0.475, 0.376], std=[0.205, 0.201, 0.204])])</p>\n<p>def conversion(img):<br>\n    #img: PIL format<br>\n    img = np.array(img)<br>\n    h, w, c = img.shape<br>\n    if h&gt;w:<br>\n        img2 = np.ones((h, h, c), dtype='uint8')<em>0\n        start = (h-w)//2\n        img2[:, start:start+w, :] = img\n    elif w&gt;h:\n        img2 = np.ones((w, w, c), dtype='uint8')</em>0<br>\n        start = (w-h)//2<br>\n        img2[start:start+h,:,:] = img<br>\n    else:<br>\n        img2 = img<br>\n    img2 = Image.fromarray(img2)<br>\n    return img2<br>\nclass Predict_MyDataset(data.Dataset):</p>\n<pre><code>def __init__(self, phase='predict', resize=512, transform=None):\n    # assert phase in ['train', 'val', 'test']\n    self.phase = phase\n    self.resize = resize\n    self.root = '../input/cassava-leaf-disease-classification/test_images'\n    self.image_list = os.listdir(self.root)\n    self.image_list.sort()\n\n\n    self.transform = transform\n\ndef __getitem__(self, item):\n    # image\n    image_name = self.image_list[item]\n    image = Image.open(os.path.join(self.root, self.image_list[item])).convert('RGB')\n    image = conversion(image)\n\n    output_imgs = self.transform(image)\n    return output_imgs, self.image_list[item]\n\n\ndef __len__(self):\n    return len(self.image_list)\n</code></pre>\n<h1>predict_set = Predict_MyDataset('data/test_images', transform=transforms)</h1>\n<p>predict_dataset = Predict_MyDataset('predict', transform=transforms)<br>\npredict_loader = DataLoader(predict_dataset,<br>\n                            batch_size=8,<br>\n                            shuffle=False,<br>\n                            num_workers=0,<br>\n                            pin_memory=True)</p>\n<p>def main():<br>\n    PATH = './b4.pkl'<br>\n    net = torch.load(PATH).to(device)</p>\n<pre><code>net.eval()  # change into test model\n\n\nwith torch.no_grad():\n    for data in predict_loader:\n        test_images, name = data\n        inputs = test_images.to(device)\n        outputs = net(inputs)  # eval model only have last output layer\n        predict_y = torch.max(outputs, dim=1)[1]\n\n        name_list = []\n        predicted_list = []\n        name_list += (list(np.array(name)))\n        predicted_list += (list(predict_y.cpu().numpy()))\n        name_list = np.array(name_list).reshape(len(name_list), 1)\n        predicted_list = np.array(predicted_list).reshape(len(predicted_list), 1)\n        final_result = np.concatenate((name_list, predicted_list), 1)\n\n\ncsvFile = open(\"./submission.csv\", 'w', newline='')  #创建csv文件\nwriter = csv.writer(csvFile)                  #创建写的对象\nwriter.writerow([\"image_id\", \"label\"])\nfor i, data in enumerate((final_result), 0):\n    name = data[0]\n    lable = int(data[1])\n    final=[]\n    final.append(name)\n    final.append(lable)\n    writer.writerow(final)\ncsvFile.close()\n</code></pre>\n<p>if <strong>name</strong> == '<strong>main</strong>':<br>\n    main()</p>",
      "rawMarkdown": "Submission errors with \"Submission Scoring Error\" with no additional details.\nAny clues how can we get over this issue. Please advise.\nthis  is my predict.py\n\n\n#predict.py\nimport csv\nimport os\n\nimport numpy as np\nimport torch\nimport torch.utils.data as data\nimport torchvision.transforms as transforms\nfrom PIL import Image\nfrom torch.utils.data import DataLoader\n\ndevice = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n\ntransforms = transforms.Compose(\n    [transforms.Resize((512, 512)), \n     transforms.ToTensor(),\n     transforms.Normalize(mean=[0.471, 0.475, 0.376], std=[0.205, 0.201, 0.204])])\n\n\ndef conversion(img):\n    #img: PIL format\n    img = np.array(img)\n    h, w, c = img.shape\n    if h>w:\n        img2 = np.ones((h, h, c), dtype='uint8')*0\n        start = (h-w)//2\n        img2[:, start:start+w, :] = img\n    elif w>h:\n        img2 = np.ones((w, w, c), dtype='uint8')*0\n        start = (w-h)//2\n        img2[start:start+h,:,:] = img\n    else:\n        img2 = img\n    img2 = Image.fromarray(img2)\n    return img2\nclass Predict_MyDataset(data.Dataset):\n\n    def __init__(self, phase='predict', resize=512, transform=None):\n        # assert phase in ['train', 'val', 'test']\n        self.phase = phase\n        self.resize = resize\n        self.root = '../input/cassava-leaf-disease-classification/test_images'\n        self.image_list = os.listdir(self.root)\n        self.image_list.sort()\n\n\n        self.transform = transform\n\n    def __getitem__(self, item):\n        # image\n        image_name = self.image_list[item]\n        image = Image.open(os.path.join(self.root, self.image_list[item])).convert('RGB')\n        image = conversion(image)\n\n        output_imgs = self.transform(image)\n        return output_imgs, self.image_list[item]\n\n\n    def __len__(self):\n        return len(self.image_list)\n\n# predict_set = Predict_MyDataset('data/test_images', transform=transforms)\npredict_dataset = Predict_MyDataset('predict', transform=transforms)\npredict_loader = DataLoader(predict_dataset,\n                            batch_size=8,\n                            shuffle=False,\n                            num_workers=0,\n                            pin_memory=True)\n\n\ndef main():\n    PATH = './b4.pkl'\n    net = torch.load(PATH).to(device)\n\n\n    net.eval()  # change into test model\n\n\n    with torch.no_grad():\n        for data in predict_loader:\n            test_images, name = data\n            inputs = test_images.to(device)\n            outputs = net(inputs)  # eval model only have last output layer\n            predict_y = torch.max(outputs, dim=1)[1]\n      \n            name_list = []\n            predicted_list = []\n            name_list += (list(np.array(name)))\n            predicted_list += (list(predict_y.cpu().numpy()))\n            name_list = np.array(name_list).reshape(len(name_list), 1)\n            predicted_list = np.array(predicted_list).reshape(len(predicted_list), 1)\n            final_result = np.concatenate((name_list, predicted_list), 1)\n\n\n    csvFile = open(\"./submission.csv\", 'w', newline='')  #创建csv文件\n    writer = csv.writer(csvFile)                  #创建写的对象\n    writer.writerow([\"image_id\", \"label\"])\n    for i, data in enumerate((final_result), 0):\n        name = data[0]\n        lable = int(data[1])\n        final=[]\n        final.append(name)\n        final.append(lable)\n        writer.writerow(final)\n    csvFile.close()\n\nif __name__ == '__main__':\n    main()\n",
      "votes": -1
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "1160845": "Submission errors with \"Submission Scoring Error\" with no additional details.\nAny clues how can we get over this issue. Please advise.\nthis  is my predict.py\n\n\n#predict.py\nimport csv\nimport os\n\nimport numpy as np\nimport torch\nimport torch.utils.data as data\nimport torchvision.transforms as transforms\nfrom PIL import Image\nfrom torch.utils.data import DataLoader\n\ndevice = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n\ntransforms = transforms.Compose(\n    [transforms.Resize((512, 512)), \n     transforms.ToTensor(),\n     transforms.Normalize(mean=[0.471, 0.475, 0.376], std=[0.205, 0.201, 0.204])])\n\n\ndef conversion(img):\n    #img: PIL format\n    img = np.array(img)\n    h, w, c = img.shape\n    if h>w:\n        img2 = np.ones((h, h, c), dtype='uint8')*0\n        start = (h-w)//2\n        img2[:, start:start+w, :] = img\n    elif w>h:\n        img2 = np.ones((w, w, c), dtype='uint8')*0\n        start = (w-h)//2\n        img2[start:start+h,:,:] = img\n    else:\n        img2 = img\n    img2 = Image.fromarray(img2)\n    return img2\nclass Predict_MyDataset(data.Dataset):\n\n    def __init__(self, phase='predict', resize=512, transform=None):\n        # assert phase in ['train', 'val', 'test']\n        self.phase = phase\n        self.resize = resize\n        self.root = '../input/cassava-leaf-disease-classification/test_images'\n        self.image_list = os.listdir(self.root)\n        self.image_list.sort()\n\n\n        self.transform = transform\n\n    def __getitem__(self, item):\n        # image\n        image_name = self.image_list[item]\n        image = Image.open(os.path.join(self.root, self.image_list[item])).convert('RGB')\n        image = conversion(image)\n\n        output_imgs = self.transform(image)\n        return output_imgs, self.image_list[item]\n\n\n    def __len__(self):\n        return len(self.image_list)\n\n# predict_set = Predict_MyDataset('data/test_images', transform=transforms)\npredict_dataset = Predict_MyDataset('predict', transform=transforms)\npredict_loader = DataLoader(predict_dataset,\n                            batch_size=8,\n                            shuffle=False,\n                            num_workers=0,\n                            pin_memory=True)\n\n\ndef main():\n    PATH = './b4.pkl'\n    net = torch.load(PATH).to(device)\n\n\n    net.eval()  # change into test model\n\n\n    with torch.no_grad():\n        for data in predict_loader:\n            test_images, name = data\n            inputs = test_images.to(device)\n            outputs = net(inputs)  # eval model only have last output layer\n            predict_y = torch.max(outputs, dim=1)[1]\n      \n            name_list = []\n            predicted_list = []\n            name_list += (list(np.array(name)))\n            predicted_list += (list(predict_y.cpu().numpy()))\n            name_list = np.array(name_list).reshape(len(name_list), 1)\n            predicted_list = np.array(predicted_list).reshape(len(predicted_list), 1)\n            final_result = np.concatenate((name_list, predicted_list), 1)\n\n\n    csvFile = open(\"./submission.csv\", 'w', newline='')  #创建csv文件\n    writer = csv.writer(csvFile)                  #创建写的对象\n    writer.writerow([\"image_id\", \"label\"])\n    for i, data in enumerate((final_result), 0):\n        name = data[0]\n        lable = int(data[1])\n        final=[]\n        final.append(name)\n        final.append(lable)\n        writer.writerow(final)\n    csvFile.close()\n\nif __name__ == '__main__':\n    main()\n"
  }
}