GradientTape berechnet die Gradienten nach der Wiederherstellung eines Modells von ModelCheckpoint (TensorFlow) nichtPython

Python-Programme
Anonymous
 GradientTape berechnet die Gradienten nach der Wiederherstellung eines Modells von ModelCheckpoint (TensorFlow) nicht

Post by Anonymous »

Ich trainiere einen CNN auf Tensorflow für binäre Klassifizierung und führt meinen Code in Google Colab aus.

Code: Select all

CNN_model = tf.keras.Sequential([
tf.keras.layers.Input(shape=(IMAGE_SIZE, IMAGE_SIZE, 3)),
tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation="relu", name='conv1'),
tf.keras.layers.Conv2D(filters=64, kernel_size=3, activation="relu", name='conv2'),
tf.keras.layers.MaxPooling2D(pool_size=2, name='maxpool1'),
tf.keras.layers.Conv2D(filters=128, kernel_size=3, activation="relu", name='conv3'),

tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu', name='dense1'),
tf.keras.layers.Dense(1, activation='sigmoid', name='prediction')

], name='CNN_model')
< /code>
Da es eine Weile dauert, bis das Modell trainiert, sollte ich es speichern (über den Modellcheckpoint -Rückruf) und bei Bedarf wiederherstellen. < /p>
callbacks = [
tf.keras.callbacks.ModelCheckpoint("best_CNN.keras",
save_best_only=True),
]
< /code>
CNN_model = tf.keras.models.load_model("best_CNN.keras")
< /code>
Es ging in Ordnung, bis ich Grad-CAM implementiert habe (zur Entscheidungstransparenz). Ich werde den ersten Abschnitt von make_gradcam_heatmap 
:
einfügen

Code: Select all

def make_gradcam_heatmap(img_array, model, last_conv_layer_name):

grad_model = tf.keras.models.Model(
model.inputs,
[model.get_layer(last_conv_layer_name).output, model.layers[-1].input]
)

with tf.GradientTape() as tape:
tape.watch(img_array)

last_conv_layer_output, last_layer_input = grad_model(img_array)

logits = tf.matmul(last_layer_input, model.layers[-1].kernel) + model.layers[-1].bias

grads = tape.gradient(logits, last_conv_layer_output)
Beim Training des Modells und beim Erstellen von Heatmaps in derselben Sitzung gibt es kein Problem, aber wenn ich make_gradcam_heatmap ein restauriertes Modell, Tape.gradient (Logits, last_conv_layer_output) zurückgibt. Cnn_model.trainable ist wahr.

Code: Select all

for layer in CNN_model.layers:
layer.trainable = True
Für den Fall, dass es hilfreich ist, verwende ich Datensatz 'Malaria' aus TensorFlow -Datensätzen

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post