tensorflow 2.x系列03 模型断点续训,自动停训

tensorflow 2.x系列03 模型断点续训,自动停训

本期文章是一个系列课程,本文是这个系列的第3篇复习笔记

(1)Build and train neural network models using TensorFlow 2.x

(2)Image classification

(3)Natural language processing(NLP)

(4)Time series, sequences and predictions

断点续训

断点续传主要是模型序列化,然后重新加载模型继续训练,这个对于实际生产应用非常有帮助,可以实现在线实时训练.而不用丢失之前的训练进度. 主要通过model.laod_weights函数来完成模型的加载,tensorflow的模型文件格式一般是ckpt文件

读取模型

checkponit_save_path="./checkponit/fashion.ckpt"ifos.path.exists(checkponit_save_path+".index"):print("------------load the model -------------")    model.load_weights(checkponit_save_path)

保存模型

tf.keras.callbacks.ModelCheckpoint(    filepath="路径文件名",    save_weights_only=True/False,    save_best_only=True/False)

训练时调用

cp_callback=tf.keras.callbacks.ModelCheckpoint(filepath=checkponit_save_pathsave_weights_only=True,save_best_only=True)history=model.fit(x,y,batch_size=32,epochs=5,validation_data=(x_test,y_test),validation_freq=1,callbacks=[cp_callback])

自动停止训练

主要是实现一个callback的子类来获取实际中的参数来控制stop_training变量达到停止训练目的.

classMyCallback(tf.keras.callbacks.Callback):defon_epoch_end(self,epoch,logs={}):if(logs.get("loss")<0.25):            print("\n loss is low so cancel train")            self.model.stop_training=True

代码实战

importtensorflowastfimportnumpyasnpimportmatplotlib.pyplotaspltprint(tf.__version__)(train_x,train_y),(test_x,test_y)=tf.keras.datasets.fashion_mnist.load_data()model=tf.keras.models.Sequential()model.add(tf.keras.layers.Flatten(input_shape=(28,28)))model.add(tf.keras.layers.Dense(128,activation=tf.nn.relu))model.add(tf.keras.layers.Dense(10,activation=tf.nn.softmax))model.compile(optimizer="adam",loss=tf.keras.losses.sparse_categorical_crossentropy,metrics=["accuracy"])checkponit_save_path="/tmp/checkponit/fashion.ckpt"ifos.path.exists(checkponit_save_path+".index"):    print("------------load the model -------------")    model.load_weights(checkponit_save_path)classMyCallback(tf.keras.callbacks.Callback):defon_epoch_end(self,epoch,logs={}):iflogs.get("loss")<0.3:            print("\n loss is low so cancel train")            self.model.stop_training=Truemodel_save_callback=tf.keras.callbacks.ModelCheckpoint(filepath=checkponit_save_path,    monitor ='val_loss',    save_weights_only=True,    save_best_only=True)auto_stop_callback=MyCallback()history=model.fit(train_x/255,train_y,batch_size=32,epochs=50,validation_data=(test_x,test_y),validation_freq=1,callbacks=[auto_stop_callback,model_save_callback])model.evaluate(test_x/255,test_y)t=np.array(test_x[0]/255).reshape(1,28,28)print(np.argmax(model.predict(t)))plt.imshow(test_x[0])

2.3.0------------load the model -------------Epoch1/501853/1875[============================>.] - ETA:0s - loss:0.2806- accuracy:0.8959loss is low so cancel train1875/1875[==============================] -4s2ms/step - loss:0.2801- accuracy:0.8960- val_loss:54.3266- val_accuracy:0.8685313/313[==============================] -0s1ms/step - loss:0.3418- accuracy:0.8796WARNING:tensorflow:7out of the last7calls to .predict_functionat0x7f76704549d8>triggeredtf.functionretracing.Tracingisexpensiveandtheexcessivenumberoftracingscouldbedueto(1)creating @tf.functionrepeatedlyinaloop,(2)passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.functionoutsideoftheloop.For(2), @tf.functionhasexperimental_relax_shapes=Trueoptionthatrelaxesargumentshapesthatcanavoidunnecessaryretracing.For(3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_argsandhttps://www.tensorflow.org/api_docs/python/tf/functionformoredetails.9

总结

通过实现不同的callback,可以对模型训练期间进行精确控制. 包括模型的断点续训和自动停止训练

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容