python保存log日志,實(shí)現(xiàn)用log日志畫圖
在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,我們常常需要畫出loss function的變化圖,log日志里會(huì)顯示每一次迭代的loss function的值,于是我們先把log日志保存為log.txt文檔,再利用這個(gè)文檔來(lái)畫圖。
1,先來(lái)產(chǎn)生一個(gè)log日志。
import mxnet as mx
import numpy as np
import os
import logging
logging.getLogger().setLevel(logging.DEBUG)
# Training data
logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) # 把log日志保存為log.txt
train_data = np.random.uniform(0, 1, [100, 2])
train_label = np.array([train_data[i][0] + 2 * train_data[i][1] for i in range(100)])
batch_size = 1
num_epoch=5
# Evaluation Data
eval_data = np.array([[7,2],[6,10],[12,2]])
eval_label = np.array([11,26,16])
train_iter = mx.io.NDArrayIter(train_data,train_label, batch_size, shuffle=True,label_name='lin_reg_label')
eval_iter = mx.io.NDArrayIter(eval_data, eval_label, batch_size, shuffle=False)
X = mx.sym.Variable('data')
Y = mx.sym.Variable('lin_reg_label')
fully_connected_layer = mx.sym.FullyConnected(data=X, name='fc1', num_hidden = 1)
lro = mx.sym.LinearRegressionOutput(data=fully_connected_layer, label=Y, name="lro")
model = mx.mod.Module(
symbol = lro ,
data_names=['data'],
label_names = ['lin_reg_label'] # network structure
)
model.fit(train_iter, eval_iter,
optimizer_params={'learning_rate':0.005, 'momentum': 0.9},
num_epoch=20,
eval_metric='mse',)
model.predict(eval_iter).asnumpy()
metric = mx.metric.MSE()
model.score(eval_iter, metric)
上面的代碼中l(wèi)ogging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) # 把log日志保存為log.txt 就是把log日志保存為log.txt文件。
2,log.txt文檔如下。
INFO:root:Epoch[0] Train-mse=0.470638 INFO:root:Epoch[0] Time cost=0.047 INFO:root:Epoch[0] Validation-mse=73.642301 INFO:root:Epoch[1] Train-mse=0.082987 INFO:root:Epoch[1] Time cost=0.047 INFO:root:Epoch[1] Validation-mse=41.625072 INFO:root:Epoch[2] Train-mse=0.044817 INFO:root:Epoch[2] Time cost=0.063 INFO:root:Epoch[2] Validation-mse=23.743375 INFO:root:Epoch[3] Train-mse=0.024459 INFO:root:Epoch[3] Time cost=0.063 INFO:root:Epoch[3] Validation-mse=13.511120 INFO:root:Epoch[4] Train-mse=0.013431 INFO:root:Epoch[4] Time cost=0.063 INFO:root:Epoch[4] Validation-mse=7.670062 INFO:root:Epoch[5] Train-mse=0.007408 INFO:root:Epoch[5] Time cost=0.063 INFO:root:Epoch[5] Validation-mse=4.344374 INFO:root:Epoch[6] Train-mse=0.004099 INFO:root:Epoch[6] Time cost=0.063 INFO:root:Epoch[6] Validation-mse=2.455608 INFO:root:Epoch[7] Train-mse=0.002274 INFO:root:Epoch[7] Time cost=0.062 INFO:root:Epoch[7] Validation-mse=1.385449 INFO:root:Epoch[8] Train-mse=0.001263 INFO:root:Epoch[8] Time cost=0.063 INFO:root:Epoch[8] Validation-mse=0.780387 INFO:root:Epoch[9] Train-mse=0.000703 INFO:root:Epoch[9] Time cost=0.063 INFO:root:Epoch[9] Validation-mse=0.438943 INFO:root:Epoch[10] Train-mse=0.000391 INFO:root:Epoch[10] Time cost=0.125 INFO:root:Epoch[10] Validation-mse=0.246581 INFO:root:Epoch[11] Train-mse=0.000218 INFO:root:Epoch[11] Time cost=0.047 INFO:root:Epoch[11] Validation-mse=0.138368 INFO:root:Epoch[12] Train-mse=0.000121 INFO:root:Epoch[12] Time cost=0.047 INFO:root:Epoch[12] Validation-mse=0.077573 INFO:root:Epoch[13] Train-mse=0.000068 INFO:root:Epoch[13] Time cost=0.063 INFO:root:Epoch[13] Validation-mse=0.043454 INFO:root:Epoch[14] Train-mse=0.000038 INFO:root:Epoch[14] Time cost=0.063 INFO:root:Epoch[14] Validation-mse=0.024325 INFO:root:Epoch[15] Train-mse=0.000021 INFO:root:Epoch[15] Time cost=0.063 INFO:root:Epoch[15] Validation-mse=0.013609 INFO:root:Epoch[16] Train-mse=0.000012 INFO:root:Epoch[16] Time cost=0.063 INFO:root:Epoch[16] Validation-mse=0.007610 INFO:root:Epoch[17] Train-mse=0.000007 INFO:root:Epoch[17] Time cost=0.063 INFO:root:Epoch[17] Validation-mse=0.004253 INFO:root:Epoch[18] Train-mse=0.000004 INFO:root:Epoch[18] Time cost=0.063 INFO:root:Epoch[18] Validation-mse=0.002376 INFO:root:Epoch[19] Train-mse=0.000002 INFO:root:Epoch[19] Time cost=0.063 INFO:root:Epoch[19] Validation-mse=0.001327
3,利用log.txt文件來(lái)畫圖。
import re
import matplotlib.pyplot as plt
import numpy as np
def main():
file = open('log.txt','r')
list = []
# search the line including accuracy
for line in file:
m=re.search('Train-mse', line)
if m:
n=re.search('[0]\.[0-9]+', line) # 正則表達(dá)式
if n is not None:
list.append(n.group()) # 提取精度數(shù)字
file.close()
plt.plot(list, 'go')
plt.plot(list, 'r')
plt.xlabel('count')
plt.ylabel('accuracy')
plt.title('Accuracy')
plt.show()
if __name__ == '__main__':
main()
以上這篇python保存log日志,實(shí)現(xiàn)用log日志來(lái)畫圖就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python數(shù)學(xué)建模PuLP庫(kù)線性規(guī)劃進(jìn)階基于字典詳解
在大規(guī)模的規(guī)劃問(wèn)題中,這樣逐個(gè)定義變量和設(shè)置模型參數(shù)非常繁瑣,效率很低。Pulp 庫(kù)提供了一種快捷方式,可以結(jié)合 Python語(yǔ)言的循環(huán)和容器,使用字典來(lái)創(chuàng)建問(wèn)題2021-10-10
安裝Python的web.py框架并從hello world開(kāi)始編程
這篇文章主要介紹了安裝Python的web.py框架并從hello world開(kāi)始編程,web.py的作者年輕的Aaron Swartz已經(jīng)離世,緬懷大神,需要的朋友可以參考下2015-04-04
Python實(shí)現(xiàn)電腦喚醒后自動(dòng)拍照截屏并發(fā)郵件通知
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)電腦喚醒后自動(dòng)拍照截屏并發(fā)郵件通知的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-01-01
Python的Matplotlib庫(kù)應(yīng)用實(shí)例超詳細(xì)教程
這篇文章主要介紹了Python的Matplotlib庫(kù)應(yīng)用的相關(guān)資料,Matplotlib是一個(gè)強(qiáng)大的Python數(shù)據(jù)可視化庫(kù),支持繪制2D和3D圖像,它提供了簡(jiǎn)單易用的API,廣泛應(yīng)用于數(shù)據(jù)分析和科學(xué)研究,需要的朋友可以參考下2025-01-01
Python?lambda函數(shù)保姆級(jí)使用教程
本文和你一起探索Python中的lambda函數(shù),讓你以最短的時(shí)間明白這個(gè)函數(shù)的原理。也可以利用碎片化的時(shí)間鞏固這個(gè)函數(shù),讓你在處理工作過(guò)程中更高效2022-06-06
PyTorch搭建LSTM實(shí)現(xiàn)多變量多步長(zhǎng)時(shí)序負(fù)荷預(yù)測(cè)
這篇文章主要為大家介紹了PyTorch搭建LSTM實(shí)現(xiàn)多變量多步長(zhǎng)時(shí)序負(fù)荷預(yù)測(cè),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Pycharm虛擬環(huán)境創(chuàng)建并使用命令行指定庫(kù)的版本進(jìn)行安裝
Pycharm創(chuàng)建的項(xiàng)目,使用了虛擬環(huán)境,對(duì)庫(kù)的版本進(jìn)行管理,有些項(xiàng)目的對(duì)第三方庫(kù)的版本要求不同,可使用虛擬環(huán)境進(jìn)行管理,直接想通過(guò)pip命令安裝可以參考下本文的操作步驟2022-07-07

