From 76cce9a699daf2ce3f377e6049792732973c0212 Mon Sep 17 00:00:00 2001 From: rasbt Date: Wed, 25 Nov 2020 18:18:56 -0600 Subject: [PATCH] fix tf version dimension issue --- ch15/ch15_part1.ipynb | 23 +++++++++++++++++------ ch15/ch15_part1.py | 19 ++++++++++++++----- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/ch15/ch15_part1.ipynb b/ch15/ch15_part1.ipynb index 99d3dbc4..fa017554 100644 --- a/ch15/ch15_part1.ipynb +++ b/ch15/ch15_part1.ipynb @@ -697,6 +697,9 @@ } ], "source": [ + "from distutils.version import LooseVersion as Version\n", + "\n", + "\n", "####### Binary Crossentropy\n", "bce_probas = tf.keras.losses.BinaryCrossentropy(from_logits=False)\n", "bce_logits = tf.keras.losses.BinaryCrossentropy(from_logits=True)\n", @@ -704,11 +707,19 @@ "logits = tf.constant([0.8])\n", "probas = tf.keras.activations.sigmoid(logits)\n", "\n", - "tf.print(\n", - " 'BCE (w Probas): {:.4f}'.format(\n", - " bce_probas(y_true=[1], y_pred=probas)),\n", - " '(w Logits): {:.4f}'.format(\n", - " bce_logits(y_true=[1], y_pred=logits)))\n", + "if Version(tf.__version__) >= '2.3.0':\n", + " tf.print(\n", + " 'CCE (w Probas): {:.4f}'.format(\n", + " cce_probas(y_true=[[0, 0, 1]], y_pred=probas)),\n", + " '(w Logits): {:.4f}'.format(\n", + " cce_logits(y_true=[[0, 0, 1]], y_pred=logits)))\n", + " \n", + "else:\n", + " tf.print(\n", + " 'CCE (w Probas): {:.4f}'.format(\n", + " cce_probas(y_true=[0, 0, 1], y_pred=probas)),\n", + " '(w Logits): {:.4f}'.format(\n", + " cce_logits(y_true=[0, 0, 1], y_pred=logits)))\n", "\n", "\n", "####### Categorical Crossentropy\n", @@ -1260,7 +1271,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.8.2" } }, "nbformat": 4, diff --git a/ch15/ch15_part1.py b/ch15/ch15_part1.py index dfd0ef94..a6e6b6c5 100644 --- a/ch15/ch15_part1.py +++ b/ch15/ch15_part1.py @@ -10,6 +10,7 @@ import pandas as pd import matplotlib.pyplot as plt import os +from distutils.version import LooseVersion as Version # *Python Machine Learning 3rd Edition* by [Sebastian Raschka](https://sebastianraschka.com) & [Vahid Mirjalili](http://vahidmirjalili.com), Packt Publishing Ltd. 2019 # @@ -271,11 +272,19 @@ def conv2d(X, W, p=(0, 0), s=(1, 1)): logits = tf.constant([[1.5, 0.8, 2.1]]) probas = tf.keras.activations.softmax(logits) -tf.print( - 'CCE (w Probas): {:.4f}'.format( - cce_probas(y_true=[0, 0, 1], y_pred=probas)), - '(w Logits): {:.4f}'.format( - cce_logits(y_true=[0, 0, 1], y_pred=logits))) +if Version(tf.__version__) >= '2.3.0': + tf.print( + 'CCE (w Probas): {:.4f}'.format( + cce_probas(y_true=[[0, 0, 1]], y_pred=probas)), + '(w Logits): {:.4f}'.format( + cce_logits(y_true=[[0, 0, 1]], y_pred=logits))) + +else: + tf.print( + 'CCE (w Probas): {:.4f}'.format( + cce_probas(y_true=[0, 0, 1], y_pred=probas)), + '(w Logits): {:.4f}'.format( + cce_logits(y_true=[0, 0, 1], y_pred=logits))) ####### Sparse Categorical Crossentropy sp_cce_probas = tf.keras.losses.SparseCategoricalCrossentropy(