tensorflow例(10)--モデル保存と読み取り,アヤメニューラルネットワークモデル読み書き
TensorFlowはtfを通過する.train.Saverクラスはモデルの保存と抽出を実現します.
ニューラルネットワークでモデルを訓練するのに非常に長い時間がかかり、このモデルを保存すると
このモデルをテストしたり使用したりする場合は、保存したモデルを抽出し、再訓練する必要はありません.
ニューラルネットワークの基本原理とtensorflowの実現について参考になる
機械学習(1)--ニューラルネットワークの初探査
TensorFlowの例(4)--MNISTの概要と手書きデジタル分類アルゴリズム
この例は2つのpyファイルに2つのコードに分けられ、1つはモデルのトレーニングと保存、1つはモデルのテストに使用されます.
データセットの使用概要:アヤメの特徴をデータとし、共有データセットには150個のデータセットが含まれています.
3種類のsetosa(山アヤメ)、versicolor(変色アヤメ)、virginica(バージニアアヤメ)に分けられます
クラスごとに50個のデータがあり、各データは4個の属性データと1個のカテゴリデータを含む.
この150個のデータセットを100個のトレーニングデータと50個のテストデータに分けて、それぞれ2つのファイルに置きます.
トレーニングPYTHONプログラムが実行されると、指定されたディレクトリの下にモデルファイルが生成され、テストPYTHONプログラムはモデルファイルを呼び出すだけでテストされます.
ニューラルネットワークの計算方式を採用しているのでsetosa(アヤメ)、versicolor(変色アヤメ)、virginica(バージニアアヤメ)のデータ型定義
setosa(アヤメ)[1,0,0],versicolor(変色アヤメ)[0,1,0],virginica(バージニアアヤメ)[0,0,1]
アヤメデータを適用する他の機械学習例を参照してください.
機械学習(6)--素朴ベイズモデルアルゴリズムのアヤメ花データ実験
機械学習(3.2)--PCA降維鳶尾花データ降維デモ
機械学習(2)--近接アルゴリズム(KNN)
コードセグメント1:
コードセグメント2
ニューラルネットワークでモデルを訓練するのに非常に長い時間がかかり、このモデルを保存すると
このモデルをテストしたり使用したりする場合は、保存したモデルを抽出し、再訓練する必要はありません.
ニューラルネットワークの基本原理とtensorflowの実現について参考になる
機械学習(1)--ニューラルネットワークの初探査
TensorFlowの例(4)--MNISTの概要と手書きデジタル分類アルゴリズム
この例は2つのpyファイルに2つのコードに分けられ、1つはモデルのトレーニングと保存、1つはモデルのテストに使用されます.
データセットの使用概要:アヤメの特徴をデータとし、共有データセットには150個のデータセットが含まれています.
3種類のsetosa(山アヤメ)、versicolor(変色アヤメ)、virginica(バージニアアヤメ)に分けられます
クラスごとに50個のデータがあり、各データは4個の属性データと1個のカテゴリデータを含む.
この150個のデータセットを100個のトレーニングデータと50個のテストデータに分けて、それぞれ2つのファイルに置きます.
トレーニングPYTHONプログラムが実行されると、指定されたディレクトリの下にモデルファイルが生成され、テストPYTHONプログラムはモデルファイルを呼び出すだけでテストされます.
ニューラルネットワークの計算方式を採用しているのでsetosa(アヤメ)、versicolor(変色アヤメ)、virginica(バージニアアヤメ)のデータ型定義
setosa(アヤメ)[1,0,0],versicolor(変色アヤメ)[0,1,0],virginica(バージニアアヤメ)[0,0,1]
アヤメデータを適用する他の機械学習例を参照してください.
機械学習(6)--素朴ベイズモデルアルゴリズムのアヤメ花データ実験
機械学習(3.2)--PCA降維鳶尾花データ降維デモ
機械学習(2)--近接アルゴリズム(KNN)
コードセグメント1:
#-*- coding:utf-8 -*-
import numpy as np
import tensorflow as tf
train = [['5.1', '3.5', '1.4', '0.2', 'Iris-setosa'], ['4.9', '3.0', '1.4', '0.2', 'Iris-setosa'], ['4.7', '3.2', '1.3', '0.2', 'Iris-setosa'], ['5.0', '3.6', '1.4', '0.2', 'Iris-setosa'], ['5.4', '3.9', '1.7', '0.4', 'Iris-setosa'], ['4.6', '3.4', '1.4', '0.3', 'Iris-setosa'], ['4.9', '3.1', '1.5', '0.1', 'Iris-setosa'], ['4.8', '3.0', '1.4', '0.1', 'Iris-setosa'], ['4.3', '3.0', '1.1', '0.1', 'Iris-setosa'], ['5.8', '4.0', '1.2', '0.2', 'Iris-setosa'], ['5.1', '3.5', '1.4', '0.3', 'Iris-setosa'], ['5.7', '3.8', '1.7', '0.3', 'Iris-setosa'], ['5.1', '3.8', '1.5', '0.3', 'Iris-setosa'], ['4.6', '3.6', '1.0', '0.2', 'Iris-setosa'], ['5.1', '3.3', '1.7', '0.5', 'Iris-setosa'], ['5.2', '3.5', '1.5', '0.2', 'Iris-setosa'], ['5.2', '3.4', '1.4', '0.2', 'Iris-setosa'], ['4.7', '3.2', '1.6', '0.2', 'Iris-setosa'], ['4.8', '3.1', '1.6', '0.2', 'Iris-setosa'], ['5.4', '3.4', '1.5', '0.4', 'Iris-setosa'], ['5.2', '4.1', '1.5', '0.1', 'Iris-setosa'], ['5.0', '3.2', '1.2', '0.2', 'Iris-setosa'], ['5.5', '3.5', '1.3', '0.2', 'Iris-setosa'], ['4.9', '3.1', '1.5', '0.1', 'Iris-setosa'], ['4.4', '3.0', '1.3', '0.2', 'Iris-setosa'], ['5.1', '3.4', '1.5', '0.2', 'Iris-setosa'], ['5.0', '3.5', '1.3', '0.3', 'Iris-setosa'], ['4.4', '3.2', '1.3', '0.2', 'Iris-setosa'], ['5.0', '3.5', '1.6', '0.6', 'Iris-setosa'], ['4.8', '3.0', '1.4', '0.3', 'Iris-setosa'], ['5.1', '3.8', '1.6', '0.2', 'Iris-setosa'], ['4.6', '3.2', '1.4', '0.2', 'Iris-setosa'], ['5.3', '3.7', '1.5', '0.2', 'Iris-setosa'], ['5.0', '3.3', '1.4', '0.2', 'Iris-setosa'], ['7.0', '3.2', '4.7', '1.4', 'Iris-versicolor'], ['6.4', '3.2', '4.5', '1.5', 'Iris-versicolor'], ['6.9', '3.1', '4.9', '1.5', 'Iris-versicolor'], ['5.5', '2.3', '4.0', '1.3', 'Iris-versicolor'], ['6.5', '2.8', '4.6', '1.5', 'Iris-versicolor'], ['5.7', '2.8', '4.5', '1.3', 'Iris-versicolor'], ['6.3', '3.3', '4.7', '1.6', 'Iris-versicolor'], ['4.9', '2.4', '3.3', '1.0', 'Iris-versicolor'], ['6.0', '2.2', '4.0', '1.0', 'Iris-versicolor'], ['6.1', '2.9', '4.7', '1.4', 'Iris-versicolor'], ['5.6', '2.9', '3.6', '1.3', 'Iris-versicolor'], ['6.7', '3.1', '4.4', '1.4', 'Iris-versicolor'], ['5.6', '3.0', '4.5', '1.5', 'Iris-versicolor'], ['5.9', '3.2', '4.8', '1.8', 'Iris-versicolor'], ['6.1', '2.8', '4.0', '1.3', 'Iris-versicolor'], ['6.3', '2.5', '4.9', '1.5', 'Iris-versicolor'], ['6.4', '2.9', '4.3', '1.3', 'Iris-versicolor'], ['6.6', '3.0', '4.4', '1.4', 'Iris-versicolor'], ['6.8', '2.8', '4.8', '1.4', 'Iris-versicolor'], ['6.7', '3.0', '5.0', '1.7', 'Iris-versicolor'], ['5.7', '2.6', '3.5', '1.0', 'Iris-versicolor'], ['5.5', '2.4', '3.7', '1.0', 'Iris-versicolor'], ['5.8', '2.7', '3.9', '1.2', 'Iris-versicolor'], ['5.4', '3.0', '4.5', '1.5', 'Iris-versicolor'], ['6.7', '3.1', '4.7', '1.5', 'Iris-versicolor'], ['6.3', '2.3', '4.4', '1.3', 'Iris-versicolor'], ['5.6', '3.0', '4.1', '1.3', 'Iris-versicolor'], ['5.5', '2.5', '4.0', '1.3', 'Iris-versicolor'], ['5.5', '2.6', '4.4', '1.2', 'Iris-versicolor'], ['6.1', '3.0', '4.6', '1.4', 'Iris-versicolor'], ['5.8', '2.6', '4.0', '1.2', 'Iris-versicolor'], ['5.0', '2.3', '3.3', '1.0', 'Iris-versicolor'], ['5.6', '2.7', '4.2', '1.3', 'Iris-versicolor'], ['5.7', '3.0', '4.2', '1.2', 'Iris-versicolor'], ['6.2', '2.9', '4.3', '1.3', 'Iris-versicolor'], ['5.1', '2.5', '3.0', '1.1', 'Iris-versicolor'], ['6.3', '3.3', '6.0', '2.5', 'Iris-virginica'], ['7.1', '3.0', '5.9', '2.1', 'Iris-virginica'], ['6.3', '2.9', '5.6', '1.8', 'Iris-virginica'], ['6.5', '3.0', '5.8', '2.2', 'Iris-virginica'], ['7.6', '3.0', '6.6', '2.1', 'Iris-virginica'], ['4.9', '2.5', '4.5', '1.7', 'Iris-virginica'], ['7.3', '2.9', '6.3', '1.8', 'Iris-virginica'], ['6.7', '2.5', '5.8', '1.8', 'Iris-virginica'], ['7.2', '3.6', '6.1', '2.5', 'Iris-virginica'], ['6.8', '3.0', '5.5', '2.1', 'Iris-virginica'], ['5.8', '2.8', '5.1', '2.4', 'Iris-virginica'], ['7.7', '3.8', '6.7', '2.2', 'Iris-virginica'], ['7.7', '2.6', '6.9', '2.3', 'Iris-virginica'], ['6.0', '2.2', '5.0', '1.5', 'Iris-virginica'], ['6.3', '2.7', '4.9', '1.8', 'Iris-virginica'], ['7.2', '3.2', '6.0', '1.8', 'Iris-virginica'], ['6.4', '2.8', '5.6', '2.1', 'Iris-virginica'], ['7.4', '2.8', '6.1', '1.9', 'Iris-virginica'], ['6.4', '2.8', '5.6', '2.2', 'Iris-virginica'], ['6.3', '2.8', '5.1', '1.5', 'Iris-virginica'], ['6.1', '2.6', '5.6', '1.4', 'Iris-virginica'], ['6.3', '3.4', '5.6', '2.4', 'Iris-virginica'], ['6.4', '3.1', '5.5', '1.8', 'Iris-virginica'], ['6.0', '3.0', '4.8', '1.8', 'Iris-virginica'], ['6.9', '3.1', '5.4', '2.1', 'Iris-virginica'], ['5.8', '2.7', '5.1', '1.9', 'Iris-virginica'], ['6.7', '3.3', '5.7', '2.5', 'Iris-virginica'], ['6.3', '2.5', '5.0', '1.9', 'Iris-virginica'], ['6.2', '3.4', '5.4', '2.3', 'Iris-virginica'], ['5.9', '3.0', '5.1', '1.8', 'Iris-virginica']]
data=train
''' ( #--------------------- ),
,
1、 train x_data,y_data , ['5.1', '3.5', '1.4', '0.2', 'Iris-setosa']
1.1 x_data ['5.1', '3.5', '1.4', '0.2']
1.2 y_data ,setosa( )[1,0,0],versicolor( )[0,1,0],virginica( )[0,0,1]
2、tensorflow
2.1 w,b weight biase
2.2 x_pl,y_pl tensorflow
2.3 y
'''
x_data = np.array([x[0:-1] for x in data]).astype(np.float32)
y_data= np.array([[1,0,0] if x[-1] == 'Iris-setosa' else [0,1,0] if x[-1] == 'Iris-versicolor' else [0,0,1] for x in data]).astype(np.float32)
x_pl=tf.placeholder(tf.float32,[None,x_data.shape[1]],name='x_pl')
y_pl=tf.placeholder(tf.float32,[None,y_data.shape[1]],name='y_pl')
w=tf.Variable(tf.random_uniform([x_data.shape[1],y_data.shape[1]],0,1),'w')
b=tf.Variable(tf.random_uniform([y_data.shape[1]],0,1),'b')
y=tf.nn.softmax(tf.matmul(x_pl,w)+b)
#---------------------
# , , ,
loss=-tf.reduce_mean(y_pl*tf.log(y))
train=tf.train.GradientDescentOptimizer(0.005).minimize(loss)
sess=tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(10000):
sess.run(train,feed_dict={x_pl:x_data,y_pl:y_data})
if i %1000 ==0 :print(i,sess.run(loss,feed_dict={x_pl:x_data,y_pl:y_data}))
saver=tf.train.Saver()
try:
saver.save(sess,r'd:\tensorflowCkpt\Iris.ckpt') #
sess.close()
print(' ')
except :
print(' , , ')
sess.close()
コードセグメント2
#-*- coding:utf-8 -*-
import numpy as np
import tensorflow as tf
test=[['4.6', '3.1', '1.5', '0.2', 'Iris-setosa'], ['5.0', '3.4', '1.5', '0.2', 'Iris-setosa'], ['4.4', '2.9', '1.4', '0.2', 'Iris-setosa'], ['5.4', '3.7', '1.5', '0.2', 'Iris-setosa'], ['4.8', '3.4', '1.6', '0.2', 'Iris-setosa'], ['5.7', '4.4', '1.5', '0.4', 'Iris-setosa'], ['5.4', '3.9', '1.3', '0.4', 'Iris-setosa'], ['5.4', '3.4', '1.7', '0.2', 'Iris-setosa'], ['5.1', '3.7', '1.5', '0.4', 'Iris-setosa'], ['4.8', '3.4', '1.9', '0.2', 'Iris-setosa'], ['5.0', '3.0', '1.6', '0.2', 'Iris-setosa'], ['5.0', '3.4', '1.6', '0.4', 'Iris-setosa'], ['5.5', '4.2', '1.4', '0.2', 'Iris-setosa'], ['4.9', '3.1', '1.5', '0.1', 'Iris-setosa'], ['4.5', '2.3', '1.3', '0.3', 'Iris-setosa'], ['5.1', '3.8', '1.9', '0.4', 'Iris-setosa'], ['6.6', '2.9', '4.6', '1.3', 'Iris-versicolor'], ['5.2', '2.7', '3.9', '1.4', 'Iris-versicolor'], ['5.0', '2.0', '3.5', '1.0', 'Iris-versicolor'], ['5.9', '3.0', '4.2', '1.5', 'Iris-versicolor'], ['5.8', '2.7', '4.1', '1.0', 'Iris-versicolor'], ['6.2', '2.2', '4.5', '1.5', 'Iris-versicolor'], ['5.6', '2.5', '3.9', '1.1', 'Iris-versicolor'], ['6.1', '2.8', '4.7', '1.2', 'Iris-versicolor'], ['6.0', '2.9', '4.5', '1.5', 'Iris-versicolor'], ['5.5', '2.4', '3.8', '1.1', 'Iris-versicolor'], ['6.0', '2.7', '5.1', '1.6', 'Iris-versicolor'], ['6.0', '3.4', '4.5', '1.6', 'Iris-versicolor'], ['5.7', '2.9', '4.2', '1.3', 'Iris-versicolor'], ['5.7', '2.8', '4.1', '1.3', 'Iris-versicolor'], ['5.8', '2.7', '5.1', '1.9', 'Iris-virginica'], ['6.5', '3.2', '5.1', '2.0', 'Iris-virginica'], ['6.4', '2.7', '5.3', '1.9', 'Iris-virginica'], ['5.7', '2.5', '5.0', '2.0', 'Iris-virginica'], ['6.4', '3.2', '5.3', '2.3', 'Iris-virginica'], ['6.5', '3.0', '5.5', '1.8', 'Iris-virginica'], ['6.9', '3.2', '5.7', '2.3', 'Iris-virginica'], ['5.6', '2.8', '4.9', '2.0', 'Iris-virginica'], ['7.7', '2.8', '6.7', '2.0', 'Iris-virginica'], ['6.7', '3.3', '5.7', '2.1', 'Iris-virginica'], ['6.2', '2.8', '4.8', '1.8', 'Iris-virginica'], ['6.1', '3.0', '4.9', '1.8', 'Iris-virginica'], ['7.2', '3.0', '5.8', '1.6', 'Iris-virginica'], ['7.9', '3.8', '6.4', '2.0', 'Iris-virginica'], ['7.7', '3.0', '6.1', '2.3', 'Iris-virginica'], ['6.7', '3.1', '5.6', '2.4', 'Iris-virginica'], ['6.9', '3.1', '5.1', '2.3', 'Iris-virginica'], ['6.8', '3.2', '5.9', '2.3', 'Iris-virginica'], ['6.7', '3.0', '5.2', '2.3', 'Iris-virginica'], ['6.5', '3.0', '5.2', '2.0', 'Iris-virginica']]
data=test
''' ( #--------------------- ),
,
1、 train x_data,y_data , ['5.1', '3.5', '1.4', '0.2', 'Iris-setosa']
1.1 x_data ['5.1', '3.5', '1.4', '0.2']
1.2 y_data ,setosa( )[1,0,0],versicolor( )[0,1,0],virginica( )[0,0,1]
2、tensorflow
2.1 w,b weight biase
2.2 x_pl,y_pl tensorflow
2.3 y
'''
x_data = np.array([x[0:-1] for x in data]).astype(np.float32)
y_data= np.array([[1,0,0] if x[-1] == 'Iris-setosa' else [0,1,0] if x[-1] == 'Iris-versicolor' else [0,0,1] for x in data]).astype(np.float32)
x_pl=tf.placeholder(tf.float32,[None,x_data.shape[1]],name='x_pl')
y_pl=tf.placeholder(tf.float32,[None,y_data.shape[1]],name='y_pl')
w=tf.Variable(tf.random_uniform([x_data.shape[1],y_data.shape[1]],0,1),'w')
b=tf.Variable(tf.random_uniform([y_data.shape[1]],0,1),'b')
y=tf.nn.softmax(tf.matmul(x_pl,w)+b)
#---------------------
sess=tf.Session()
sess.run(tf.global_variables_initializer())
isRestore = True
saver=tf.train.Saver()
try:
saver.restore(sess,r'd:\tensorflowCkpt\Iris.ckpt') #
except :
print(' , !')
isRestore=False
if isRestore:
print(" : "+str(round((sess.run(tf.reduce_mean(tf.cast(tf.equal(tf.argmax(y_data,axis=1),tf.argmax(sess.run(y,feed_dict={x_pl:x_data}),axis=1)),tf.float32))))*100,2)) + "%")
sess.close()