モデルをテンソルフローで一度トレーニングしてから、いくつかの機能を予測するために訓練されたモデルを使用したいと考えています。我々は詳細に入る前に、機能のいくつかを定義することができます...ここで再トレーニングのないテンソルフロー計算
def runTF(func, inpDict):
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
result = sess.run(func, feed_dict = inpDict)
sess.close()
return result
と
def optTF(opt, res, others, inpDict, nSteps, printSteps=50):
os, re = [], []
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
for i in range(nSteps):
# First run the optimizer ...
sess.run(opt, feed_dict = inpDict)
# Save all the data you want to save
temp = sess.run([res] + others, feed_dict = inpDict)
re.append(temp[0])
os.append(temp[1:])
if (i%printSteps) == 0:
print('{:5d}'.format(i))
sess.close()
return re, os
は私がやっているものを...
A.ためのステップのカップルですいくつかのデータの生成
N = 500
features = 2
nSteps = 1000
X = np.array([np.random.random(N), np.random.random(N)])
data = [X.T, X[0].reshape(-1, 1)]
B.は、単純な線形モデルを作成
d = tf.placeholder(shape = np.shape(data[0]), dtype = tf.float32, name='d') # input layer
dOut = tf.placeholder(shape = np.shape(data[1]), dtype = tf.float32, name='dOut') # output layer
W = tf.Variable( np.random.randn(features, 1), dtype = tf.float32, name='W')
b = tf.Variable( np.zeros((1,1)), dtype = tf.float32, name='b')
result = tf.matmul(d, W)+b
cost = tf.reduce_mean((dOut - result)**2)
optimizer = tf.train.AdamOptimizer(learning_rate = 0.1).minimize(cost)
C.は、私は結果をチェックして、ここでオプティマイザ
inpDict = {d: data[0], dOut:data[1]}
ot = optTF(optimizer, result, [W, cost], inpDict, 200, 50)
を実行し、それは私が欲しいものであることを確認できます。したがって、オプティマイザは正常に動作しています。モデルは最適化されています。さて、私はいくつかの他のデータで予測をしたいと思います。だから、私は...
r = runTF(result, inpDict)
この新しい結果は、私は同じ訓練を受けたモデルから期待されるものではありません。
今、私が同じtf.Session()
の中にいる限り、私たちは大丈夫です。しかし、私はセッションを終えても予測をしたいと思っています。だから私の質問は、私たちが別のセッションで1つのセッションでそれを訓練したらどのようにモデルを使用するのですか?
注:全体的なことは、私が別のセッションで行ったことですか?
編集:
ot = optTF(optimizer, result, [cost]+weights+biases, inpDict, 200, 50)
r = runTF([result], inpDict, 'models/temp.ckpt')
:
私は...節約を組み込むために
def runTF(func, inpDict, modelFile=None):
if modelFile is not None:
saver = tf.train.Saver()
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
if modelFile is not None:
ckpt = tf.train.get_checkpoint_state(modelFile)
print(modelFile, ckpt)
if ckpt and ckpt.model_checkpoint_path:
saver.restore(sess, ckpt.model_checkpoint_path)
print('Session restored')
result = sess.run(func, feed_dict = inpDict)
sess.close()
return result
と
def optTF(opt, res, others, inpDict, nSteps, printSteps=50, modelFile='models/temp.ckpt'):
os, re = [], []
saver = tf.train.Saver()
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
for i in range(nSteps):
# First run the optimizer ...
sess.run(opt, feed_dict = inpDict)
# Save all the data you want to save
temp = sess.run([res] + others, feed_dict = inpDict)
re.append(temp[0])
os.append(temp[1:])
if (i%printSteps) == 0:
print('{:5d}'.format(i))
path = saver.save(sess, modelFile)
print('Model saved in: {}'.format(path))
sess.close()
return re, os
そして、モデルを実行している2つの機能を編集しました
まだ何もありません!
- チェックポイント
- temp.ckpt.index
- temp.ckpt.data-:は
ckpt
の値は、モデルフォルダには、次のファイルを持っているNone
- です:私がいることを確認しました00000-of-00001
- temp.ckpt.meta
ありがとう@andresbravog。私はあなたが言及したように状態を保存しようとしました。私は自分の答えを編集しました。上記をご覧ください – ssm