mirror of
https://github.com/ArthurDanjou/handson-ml3.git
synced 2026-02-02 21:17:49 +01:00
Replace keras with tf.keras
This commit is contained in:
@@ -211,7 +211,7 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"y_pred = X_valid[:, -1]\n",
|
||||
"np.mean(keras.losses.mean_squared_error(y_valid, y_pred))"
|
||||
"np.mean(tf.keras.losses.mean_squared_error(y_valid, y_pred))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -240,9 +240,9 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.Flatten(input_shape=[50, 1]),\n",
|
||||
" keras.layers.Dense(1)\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.Flatten(input_shape=[50, 1]),\n",
|
||||
" tf.keras.layers.Dense(1)\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\")\n",
|
||||
@@ -306,11 +306,11 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.SimpleRNN(1, input_shape=[None, 1])\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.SimpleRNN(1, input_shape=[None, 1])\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"optimizer = keras.optimizers.Adam(learning_rate=0.005)\n",
|
||||
"optimizer = tf.keras.optimizers.Adam(learning_rate=0.005)\n",
|
||||
"model.compile(loss=\"mse\", optimizer=optimizer)\n",
|
||||
"history = model.fit(X_train, y_train, epochs=20,\n",
|
||||
" validation_data=(X_valid, y_valid))"
|
||||
@@ -362,10 +362,10 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" keras.layers.SimpleRNN(20, return_sequences=True),\n",
|
||||
" keras.layers.SimpleRNN(1)\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" tf.keras.layers.SimpleRNN(20, return_sequences=True),\n",
|
||||
" tf.keras.layers.SimpleRNN(1)\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\")\n",
|
||||
@@ -419,10 +419,10 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" keras.layers.SimpleRNN(20),\n",
|
||||
" keras.layers.Dense(1)\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" tf.keras.layers.SimpleRNN(20),\n",
|
||||
" tf.keras.layers.Dense(1)\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\")\n",
|
||||
@@ -572,7 +572,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"np.mean(keras.metrics.mean_squared_error(Y_valid, Y_pred))"
|
||||
"np.mean(tf.keras.metrics.mean_squared_error(Y_valid, Y_pred))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -589,7 +589,7 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"Y_naive_pred = np.tile(X_valid[:, -1], 10) # take the last time step value, and repeat it 10 times\n",
|
||||
"np.mean(keras.metrics.mean_squared_error(Y_valid, Y_naive_pred))"
|
||||
"np.mean(tf.keras.metrics.mean_squared_error(Y_valid, Y_naive_pred))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -601,9 +601,9 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.Flatten(input_shape=[50, 1]),\n",
|
||||
" keras.layers.Dense(10)\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.Flatten(input_shape=[50, 1]),\n",
|
||||
" tf.keras.layers.Dense(10)\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\")\n",
|
||||
@@ -627,10 +627,10 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" keras.layers.SimpleRNN(20),\n",
|
||||
" keras.layers.Dense(10)\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" tf.keras.layers.SimpleRNN(20),\n",
|
||||
" tf.keras.layers.Dense(10)\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\")\n",
|
||||
@@ -707,16 +707,16 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" keras.layers.SimpleRNN(20, return_sequences=True),\n",
|
||||
" keras.layers.TimeDistributed(keras.layers.Dense(10))\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" tf.keras.layers.SimpleRNN(20, return_sequences=True),\n",
|
||||
" tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(10))\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"def last_time_step_mse(Y_true, Y_pred):\n",
|
||||
" return keras.metrics.mean_squared_error(Y_true[:, -1], Y_pred[:, -1])\n",
|
||||
" return tf.keras.metrics.mean_squared_error(Y_true[:, -1], Y_pred[:, -1])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=keras.optimizers.Adam(learning_rate=0.01), metrics=[last_time_step_mse])\n",
|
||||
"model.compile(loss=\"mse\", optimizer=tf.keras.optimizers.Adam(learning_rate=0.01), metrics=[last_time_step_mse])\n",
|
||||
"history = model.fit(X_train, Y_train, epochs=20,\n",
|
||||
" validation_data=(X_valid, Y_valid))"
|
||||
]
|
||||
@@ -760,12 +760,12 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" keras.layers.BatchNormalization(),\n",
|
||||
" keras.layers.SimpleRNN(20, return_sequences=True),\n",
|
||||
" keras.layers.BatchNormalization(),\n",
|
||||
" keras.layers.TimeDistributed(keras.layers.Dense(10))\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" tf.keras.layers.BatchNormalization(),\n",
|
||||
" tf.keras.layers.SimpleRNN(20, return_sequences=True),\n",
|
||||
" tf.keras.layers.BatchNormalization(),\n",
|
||||
" tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(10))\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n",
|
||||
@@ -795,15 +795,15 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"class LNSimpleRNNCell(keras.layers.Layer):\n",
|
||||
"class LNSimpleRNNCell(tf.keras.layers.Layer):\n",
|
||||
" def __init__(self, units, activation=\"tanh\", **kwargs):\n",
|
||||
" super().__init__(**kwargs)\n",
|
||||
" self.state_size = units\n",
|
||||
" self.output_size = units\n",
|
||||
" self.simple_rnn_cell = keras.layers.SimpleRNNCell(units,\n",
|
||||
" self.simple_rnn_cell = tf.keras.layers.SimpleRNNCell(units,\n",
|
||||
" activation=None)\n",
|
||||
" self.layer_norm = LayerNormalization()\n",
|
||||
" self.activation = keras.activations.get(activation)\n",
|
||||
" self.activation = tf.keras.activations.get(activation)\n",
|
||||
" def get_initial_state(self, inputs=None, batch_size=None, dtype=None):\n",
|
||||
" if inputs is not None:\n",
|
||||
" batch_size = tf.shape(inputs)[0]\n",
|
||||
@@ -824,11 +824,11 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.RNN(LNSimpleRNNCell(20), return_sequences=True,\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.RNN(LNSimpleRNNCell(20), return_sequences=True,\n",
|
||||
" input_shape=[None, 1]),\n",
|
||||
" keras.layers.RNN(LNSimpleRNNCell(20), return_sequences=True),\n",
|
||||
" keras.layers.TimeDistributed(keras.layers.Dense(10))\n",
|
||||
" tf.keras.layers.RNN(LNSimpleRNNCell(20), return_sequences=True),\n",
|
||||
" tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(10))\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n",
|
||||
@@ -849,7 +849,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"class MyRNN(keras.layers.Layer):\n",
|
||||
"class MyRNN(tf.keras.layers.Layer):\n",
|
||||
" def __init__(self, cell, return_sequences=False, **kwargs):\n",
|
||||
" super().__init__(**kwargs)\n",
|
||||
" self.cell = cell\n",
|
||||
@@ -887,11 +887,11 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" MyRNN(LNSimpleRNNCell(20), return_sequences=True,\n",
|
||||
" input_shape=[None, 1]),\n",
|
||||
" MyRNN(LNSimpleRNNCell(20), return_sequences=True),\n",
|
||||
" keras.layers.TimeDistributed(keras.layers.Dense(10))\n",
|
||||
" tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(10))\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n",
|
||||
@@ -917,10 +917,10 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.LSTM(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" keras.layers.LSTM(20, return_sequences=True),\n",
|
||||
" keras.layers.TimeDistributed(keras.layers.Dense(10))\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.LSTM(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" tf.keras.layers.LSTM(20, return_sequences=True),\n",
|
||||
" tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(10))\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n",
|
||||
@@ -988,10 +988,10 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.GRU(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" keras.layers.GRU(20, return_sequences=True),\n",
|
||||
" keras.layers.TimeDistributed(keras.layers.Dense(10))\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.GRU(20, return_sequences=True, input_shape=[None, 1]),\n",
|
||||
" tf.keras.layers.GRU(20, return_sequences=True),\n",
|
||||
" tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(10))\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n",
|
||||
@@ -1080,12 +1080,12 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.Conv1D(filters=20, kernel_size=4, strides=2, padding=\"valid\",\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.Conv1D(filters=20, kernel_size=4, strides=2, padding=\"valid\",\n",
|
||||
" input_shape=[None, 1]),\n",
|
||||
" keras.layers.GRU(20, return_sequences=True),\n",
|
||||
" keras.layers.GRU(20, return_sequences=True),\n",
|
||||
" keras.layers.TimeDistributed(keras.layers.Dense(10))\n",
|
||||
" tf.keras.layers.GRU(20, return_sequences=True),\n",
|
||||
" tf.keras.layers.GRU(20, return_sequences=True),\n",
|
||||
" tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(10))\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n",
|
||||
@@ -1124,12 +1124,12 @@
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential()\n",
|
||||
"model.add(keras.layers.InputLayer(input_shape=[None, 1]))\n",
|
||||
"model = tf.keras.Sequential()\n",
|
||||
"model.add(tf.keras.layers.InputLayer(input_shape=[None, 1]))\n",
|
||||
"for rate in (1, 2, 4, 8) * 2:\n",
|
||||
" model.add(keras.layers.Conv1D(filters=20, kernel_size=2, padding=\"causal\",\n",
|
||||
" model.add(tf.keras.layers.Conv1D(filters=20, kernel_size=2, padding=\"causal\",\n",
|
||||
" activation=\"relu\", dilation_rate=rate))\n",
|
||||
"model.add(keras.layers.Conv1D(filters=10, kernel_size=1))\n",
|
||||
"model.add(tf.keras.layers.Conv1D(filters=10, kernel_size=1))\n",
|
||||
"model.compile(loss=\"mse\", optimizer=\"adam\", metrics=[last_time_step_mse])\n",
|
||||
"history = model.fit(X_train, Y_train, epochs=20,\n",
|
||||
" validation_data=(X_valid, Y_valid))"
|
||||
@@ -1148,14 +1148,14 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"class GatedActivationUnit(keras.layers.Layer):\n",
|
||||
"class GatedActivationUnit(tf.keras.layers.Layer):\n",
|
||||
" def __init__(self, activation=\"tanh\", **kwargs):\n",
|
||||
" super().__init__(**kwargs)\n",
|
||||
" self.activation = keras.activations.get(activation)\n",
|
||||
" self.activation = tf.keras.activations.get(activation)\n",
|
||||
" def call(self, inputs):\n",
|
||||
" n_filters = inputs.shape[-1] // 2\n",
|
||||
" linear_output = self.activation(inputs[..., :n_filters])\n",
|
||||
" gate = keras.activations.sigmoid(inputs[..., n_filters:])\n",
|
||||
" gate = tf.keras.activations.sigmoid(inputs[..., n_filters:])\n",
|
||||
" return self.activation(linear_output) * gate"
|
||||
]
|
||||
},
|
||||
@@ -1166,11 +1166,11 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def wavenet_residual_block(inputs, n_filters, dilation_rate):\n",
|
||||
" z = keras.layers.Conv1D(2 * n_filters, kernel_size=2, padding=\"causal\",\n",
|
||||
" z = tf.keras.layers.Conv1D(2 * n_filters, kernel_size=2, padding=\"causal\",\n",
|
||||
" dilation_rate=dilation_rate)(inputs)\n",
|
||||
" z = GatedActivationUnit()(z)\n",
|
||||
" z = keras.layers.Conv1D(n_filters, kernel_size=1)(z)\n",
|
||||
" return keras.layers.Add()([z, inputs]), z"
|
||||
" z = tf.keras.layers.Conv1D(n_filters, kernel_size=1)(z)\n",
|
||||
" return tf.keras.layers.Add()([z, inputs]), z"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1179,7 +1179,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"keras.backend.clear_session()\n",
|
||||
"tf.keras.backend.clear_session()\n",
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)\n",
|
||||
"\n",
|
||||
@@ -1188,17 +1188,17 @@
|
||||
"n_filters = 32 # 128 in the paper\n",
|
||||
"n_outputs = 10 # 256 in the paper\n",
|
||||
"\n",
|
||||
"inputs = keras.layers.Input(shape=[None, 1])\n",
|
||||
"z = keras.layers.Conv1D(n_filters, kernel_size=2, padding=\"causal\")(inputs)\n",
|
||||
"inputs = tf.keras.layers.Input(shape=[None, 1])\n",
|
||||
"z = tf.keras.layers.Conv1D(n_filters, kernel_size=2, padding=\"causal\")(inputs)\n",
|
||||
"skip_to_last = []\n",
|
||||
"for dilation_rate in [2**i for i in range(n_layers_per_block)] * n_blocks:\n",
|
||||
" z, skip = wavenet_residual_block(z, n_filters, dilation_rate)\n",
|
||||
" skip_to_last.append(skip)\n",
|
||||
"z = keras.activations.relu(keras.layers.Add()(skip_to_last))\n",
|
||||
"z = keras.layers.Conv1D(n_filters, kernel_size=1, activation=\"relu\")(z)\n",
|
||||
"Y_proba = keras.layers.Conv1D(n_outputs, kernel_size=1, activation=\"softmax\")(z)\n",
|
||||
"z = tf.keras.activations.relu(tf.keras.layers.Add()(skip_to_last))\n",
|
||||
"z = tf.keras.layers.Conv1D(n_filters, kernel_size=1, activation=\"relu\")(z)\n",
|
||||
"Y_proba = tf.keras.layers.Conv1D(n_outputs, kernel_size=1, activation=\"softmax\")(z)\n",
|
||||
"\n",
|
||||
"model = keras.models.Model(inputs=[inputs], outputs=[Y_proba])"
|
||||
"model = tf.keras.Model(inputs=[inputs], outputs=[Y_proba])"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1269,7 +1269,7 @@
|
||||
"source": [
|
||||
"DOWNLOAD_ROOT = \"http://download.tensorflow.org/data/\"\n",
|
||||
"FILENAME = \"quickdraw_tutorial_dataset_v1.tar.gz\"\n",
|
||||
"filepath = keras.utils.get_file(FILENAME,\n",
|
||||
"filepath = tf.keras.utils.get_file(FILENAME,\n",
|
||||
" DOWNLOAD_ROOT + FILENAME,\n",
|
||||
" cache_subdir=\"datasets/quickdraw\",\n",
|
||||
" extract=True)"
|
||||
@@ -1472,18 +1472,18 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.Conv1D(32, kernel_size=5, strides=2, activation=\"relu\"),\n",
|
||||
" keras.layers.BatchNormalization(),\n",
|
||||
" keras.layers.Conv1D(64, kernel_size=5, strides=2, activation=\"relu\"),\n",
|
||||
" keras.layers.BatchNormalization(),\n",
|
||||
" keras.layers.Conv1D(128, kernel_size=3, strides=2, activation=\"relu\"),\n",
|
||||
" keras.layers.BatchNormalization(),\n",
|
||||
" keras.layers.LSTM(128, return_sequences=True),\n",
|
||||
" keras.layers.LSTM(128),\n",
|
||||
" keras.layers.Dense(len(class_names), activation=\"softmax\")\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.Conv1D(32, kernel_size=5, strides=2, activation=\"relu\"),\n",
|
||||
" tf.keras.layers.BatchNormalization(),\n",
|
||||
" tf.keras.layers.Conv1D(64, kernel_size=5, strides=2, activation=\"relu\"),\n",
|
||||
" tf.keras.layers.BatchNormalization(),\n",
|
||||
" tf.keras.layers.Conv1D(128, kernel_size=3, strides=2, activation=\"relu\"),\n",
|
||||
" tf.keras.layers.BatchNormalization(),\n",
|
||||
" tf.keras.layers.LSTM(128, return_sequences=True),\n",
|
||||
" tf.keras.layers.LSTM(128),\n",
|
||||
" tf.keras.layers.Dense(len(class_names), activation=\"softmax\")\n",
|
||||
"])\n",
|
||||
"optimizer = keras.optimizers.SGD(learning_rate=1e-2, clipnorm=1.)\n",
|
||||
"optimizer = tf.keras.optimizers.SGD(learning_rate=1e-2, clipnorm=1.)\n",
|
||||
"model.compile(loss=\"sparse_categorical_crossentropy\",\n",
|
||||
" optimizer=optimizer,\n",
|
||||
" metrics=[\"accuracy\", \"sparse_top_k_categorical_accuracy\"])\n",
|
||||
@@ -1507,7 +1507,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"np.mean(keras.metrics.sparse_top_k_categorical_accuracy(y_test, y_probas))"
|
||||
"np.mean(tf.keras.metrics.sparse_top_k_categorical_accuracy(y_test, y_probas))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1557,7 +1557,7 @@
|
||||
"source": [
|
||||
"DOWNLOAD_ROOT = \"https://github.com/ageron/handson-ml2/raw/master/datasets/jsb_chorales/\"\n",
|
||||
"FILENAME = \"jsb_chorales.tgz\"\n",
|
||||
"filepath = keras.utils.get_file(FILENAME,\n",
|
||||
"filepath = tf.keras.utils.get_file(FILENAME,\n",
|
||||
" DOWNLOAD_ROOT + FILENAME,\n",
|
||||
" cache_subdir=\"datasets/jsb_chorales\",\n",
|
||||
" extract=True)"
|
||||
@@ -1792,19 +1792,19 @@
|
||||
"source": [
|
||||
"n_embedding_dims = 5\n",
|
||||
"\n",
|
||||
"model = keras.models.Sequential([\n",
|
||||
" keras.layers.Embedding(input_dim=n_notes, output_dim=n_embedding_dims,\n",
|
||||
"model = tf.keras.Sequential([\n",
|
||||
" tf.keras.layers.Embedding(input_dim=n_notes, output_dim=n_embedding_dims,\n",
|
||||
" input_shape=[None]),\n",
|
||||
" keras.layers.Conv1D(32, kernel_size=2, padding=\"causal\", activation=\"relu\"),\n",
|
||||
" keras.layers.BatchNormalization(),\n",
|
||||
" keras.layers.Conv1D(48, kernel_size=2, padding=\"causal\", activation=\"relu\", dilation_rate=2),\n",
|
||||
" keras.layers.BatchNormalization(),\n",
|
||||
" keras.layers.Conv1D(64, kernel_size=2, padding=\"causal\", activation=\"relu\", dilation_rate=4),\n",
|
||||
" keras.layers.BatchNormalization(),\n",
|
||||
" keras.layers.Conv1D(96, kernel_size=2, padding=\"causal\", activation=\"relu\", dilation_rate=8),\n",
|
||||
" keras.layers.BatchNormalization(),\n",
|
||||
" keras.layers.LSTM(256, return_sequences=True),\n",
|
||||
" keras.layers.Dense(n_notes, activation=\"softmax\")\n",
|
||||
" tf.keras.layers.Conv1D(32, kernel_size=2, padding=\"causal\", activation=\"relu\"),\n",
|
||||
" tf.keras.layers.BatchNormalization(),\n",
|
||||
" tf.keras.layers.Conv1D(48, kernel_size=2, padding=\"causal\", activation=\"relu\", dilation_rate=2),\n",
|
||||
" tf.keras.layers.BatchNormalization(),\n",
|
||||
" tf.keras.layers.Conv1D(64, kernel_size=2, padding=\"causal\", activation=\"relu\", dilation_rate=4),\n",
|
||||
" tf.keras.layers.BatchNormalization(),\n",
|
||||
" tf.keras.layers.Conv1D(96, kernel_size=2, padding=\"causal\", activation=\"relu\", dilation_rate=8),\n",
|
||||
" tf.keras.layers.BatchNormalization(),\n",
|
||||
" tf.keras.layers.LSTM(256, return_sequences=True),\n",
|
||||
" tf.keras.layers.Dense(n_notes, activation=\"softmax\")\n",
|
||||
"])\n",
|
||||
"\n",
|
||||
"model.summary()"
|
||||
@@ -1823,7 +1823,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"optimizer = keras.optimizers.Nadam(learning_rate=1e-3)\n",
|
||||
"optimizer = tf.keras.optimizers.Nadam(learning_rate=1e-3)\n",
|
||||
"model.compile(loss=\"sparse_categorical_crossentropy\", optimizer=optimizer,\n",
|
||||
" metrics=[\"accuracy\"])\n",
|
||||
"model.fit(train_set, epochs=20, validation_data=valid_set)"
|
||||
|
||||
Reference in New Issue
Block a user