【问题标题】:how to load model and restore training tensorflow如何加载模型和恢复训练张量流
【发布时间】:2021-12-04 19:32:59
【问题描述】:

我想加载训练模型并从最后一个检查点恢复它,任何可以帮助我吗? 我正在使用 tensorflow 2.0 。我有低规格的电脑,所以我不能一次训练我的模型。

import tensorflow as tf 
from tensorflow.keras import models, layers
import matplotlib.pyplot as plt
from tensorflow.python.keras.metrics import acc
import datetime
from tensorflow.keras.callbacks import TensorBoard

IMAGE_SIZE = 224
CHANNELS = 3

from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range=10,
    horizontal_flip=True
 )
 train_generator = train_datagen.flow_from_directory(
    'data/train/',
    color_mode="rgb",
    target_size=(IMAGE_SIZE,IMAGE_SIZE),
    batch_size=32,
    class_mode="sparse",

)
print(train_generator.class_indices)

class_names = list(train_generator.class_indices.keys())
print(class_names)

validation_datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range=10,
    horizontal_flip=True)
validation_generator = validation_datagen.flow_from_directory(
    'data/validation/',
    target_size=(IMAGE_SIZE,IMAGE_SIZE),
    batch_size=32,
    class_mode="sparse"
)

test_datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range=10,
    horizontal_flip=True)

 test_generator = test_datagen.flow_from_directory(
    'data/test/',
    target_size=(IMAGE_SIZE,IMAGE_SIZE),
    batch_size=32,
    class_mode="sparse"
 )

 input_shape = (IMAGE_SIZE, IMAGE_SIZE, CHANNELS)
 n_classes = 2

 model = models.Sequential([
 layers.InputLayer(input_shape=input_shape),
 layers.Conv2D(32, kernel_size = (3,3), activation='relu'),
 layers.MaxPooling2D((2, 2)),
 layers.Conv2D(64,  kernel_size = (3,3), activation='relu'),
 layers.MaxPooling2D((2, 2)),
 layers.Conv2D(64,  kernel_size = (3,3), activation='relu'),
 layers.MaxPooling2D((2, 2)),
 layers.Conv2D(64, (3, 3), activation='relu'),
 layers.MaxPooling2D((2, 2)),
 layers.Conv2D(64, (3, 3), activation='relu'),
 layers.MaxPooling2D((2, 2)),
 layers.Conv2D(64, (3, 3), activation='relu'),
 layers.MaxPooling2D((2, 2)),
 layers.Flatten(),
 layers.Dense(64, activation='relu'),
 layers.Dense(n_classes, activation='softmax'),
 ])
 model.summary()
 model.compile(
 optimizer='adam',
 loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
 metrics=['accuracy']
 )
import os
checkpoint_path = "teta/cp.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
cp_callback = tf.keras.callbacks.ModelCheckpoint(
checkpoint_path,save_weights_only=True,verbose=1)

history = model.fit(
train_generator,
steps_per_epoch=30,
batch_size=32,
validation_data=validation_generator,
validation_steps=22,
verbose=1,
callbacks=[cp_callback],
epochs=2,
)

我想加载训练模型并从最后一个检查点恢复它,任何可以帮助我吗? 我正在使用 tensorflow 2.0 。我有低规格的电脑,所以我不能一次训练我的模型。

【问题讨论】:

    标签: python tensorflow keras tensorflow2.0


    【解决方案1】:

    我建议使用model.save(*) 保存整个模型,然后使用model.load(*) 再次加载它。有关更多信息,请参阅此documentation。在你的情况下,你可以运行:

    model.load_weights('teta/your_checkpoint')
    

    在再次致电model.fit(*) 之前。

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多