{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"from keras.losses import binary_crossentropy, categorical_crossentropy\nimport keras.backend as K\nimport numpy as np\nfrom prettytable import PrettyTable\nfrom prettytable import ALL\nfrom sklearn.metrics import f1_score, accuracy_score\nfrom matplotlib import pyplot as plt","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e1d692b461fb33db38a14e8e2c172203feabd9db","scrolled":false},"cell_type":"code","source":"# ground truth\nY0 = np.zeros((12,3))\n# first label is assigned to 20 % of observations\nY0[0:4,0] = 1\n# # second label is assigned to 80 % of observations\nY0[4:8,1] = 1\nY0[8:,2] = 1\n# Y[3,3] = 1\n# Y[4,4] = 1\n# ground truth with shape (BATCH_SIZE, NO_OF_LABELS)\nprint(Y0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\nres = []\ndef dfs(tmp,d):\n    if d == 3:\n        res.append(tmp)\n        return\n    for i in np.arange(0,1.1,0.1):\n        dfs(tmp+' '+str(i),d+1)\ndfs(\"\",0)\nprint(res)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import torch\nimport torch.nn.functional as F\nimport random\npred = []\nfor p in res:\n    p = p.split()\n    for i in range(len(p)):\n        p[i] = round(float(p[i]),2)\n    pred.append(p)\nprint(pred)\nprint(np.array(random.sample(pred, 12)))\nprint(Y0)\nloss = F.cross_entropy(torch.from_numpy(np.array([p])), torch.tensor(np.array([0])))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from plotly import graph_objs as go\nfrom mpl_toolkits.mplot3d import Axes3D\n%matplotlib inline","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def acc_loss(y_true, y_pred):\n    # y_pred = y_pred.round()\n    tp = (y_pred*y_true).sum(0)\n#     print(y_pred*y_true)\n    fp = ((1-y_true)*y_pred).sum(0)\n    fn = (y_true*(1-y_pred)).sum(0)\n    tn = ((1-y_true)*(1-y_pred)).sum(0)\n    acc = (tp+tn)/(tp+fp+fn+tn)\n    return 1-acc.mean()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"losses1 = []\nlosses2 = []\nacces_loss = []\nacces = []\n\nfor i in range(100):\n    Y = torch.from_numpy(Y0)\n#     target = torch.randint(2, (10,), dtype=torch.int64)\n    p = torch.from_numpy(np.array(random.sample(pred, 12)))\n#     print(F.softmax(p, 1))\n#     print(Y)\n    loss = F.cross_entropy(p, Y.argmax(1).long())\n    loss_of_acc = acc_loss(Y,F.softmax(p, 1))\n    acc = accuracy_score(p.argmax(1).long(),Y.argmax(1).long())\n    losses2.append(loss.numpy().tolist())\n    acces_loss.append(loss_of_acc.tolist())\n    acces.append(acc.tolist())\n# print(acces)\n# print(losses2)\nplt.scatter(acces_loss, losses2)\nplt.xlabel('Acc loss')\nplt.ylabel('Cross-Entropy Loss')\nplt.show()\nplt.scatter(acces, losses2)\nplt.xlabel('Acc')\nplt.ylabel('Cross-Entropy Loss')\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"efa7a100ef7ac1fd6ed9fb5c9f291c492660776c"},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}