如何定義TensorFlow輸入節(jié)點
TensorFlow中有如下幾種定義輸入節(jié)點的方法。
通過占位符定義:一般使用這種方式。
通過字典類型定義:一般用于輸入比較多的情況。
直接定義:一般很少使用。
一 占位符定義
示例:
具體使用tf.placeholder函數(shù),代碼如下:
X = tf.placeholder("float")
Y = tf.placeholder("float")
二 字典類型定義
1 實例
通過字典類型定義輸入節(jié)點
2 關(guān)鍵代碼
# 創(chuàng)建模型
# 占位符
inputdict = {
'x': tf.placeholder("float"),
'y': tf.placeholder("float")
}
3 解釋
通過字典定義的方式和第一種比較像,只不過是堆疊到一起。
4 全部代碼
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
plotdata = { "batchsize":[], "loss":[] }
def moving_average(a, w=10):
if len(a) < w:
return a[:]
return [val if idx < w else sum(a[(idx-w):idx])/w for idx, val in enumerate(a)]
#生成模擬數(shù)據(jù)
train_X = np.linspace(-1, 1, 100)
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3 # y=2x,但是加入了噪聲
#圖形顯示
plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.legend()
plt.show()
# 創(chuàng)建模型
# 占位符
inputdict = {
'x': tf.placeholder("float"),
'y': tf.placeholder("float")
}
# 模型參數(shù)
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.zeros([1]), name="bias")
# 前向結(jié)構(gòu)
z = tf.multiply(inputdict['x'], W)+ b
#反向優(yōu)化
cost =tf.reduce_mean( tf.square(inputdict['y'] - z))
learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #Gradient descent
# 初始化變量
init = tf.global_variables_initializer()
#參數(shù)設(shè)置
training_epochs = 20
display_step = 2
# 啟動session
with tf.Session() as sess:
sess.run(init)
# Fit all training data
for epoch in range(training_epochs):
for (x, y) in zip(train_X, train_Y):
sess.run(optimizer, feed_dict={inputdict['x']: x, inputdict['y']: y})
#顯示訓(xùn)練中的詳細(xì)信息
if epoch % display_step == 0:
loss = sess.run(cost, feed_dict={inputdict['x']: train_X, inputdict['y']:train_Y})
print ("Epoch:", epoch+1, "cost=", loss,"W=", sess.run(W), "b=", sess.run(b))
if not (loss == "NA" ):
plotdata["batchsize"].append(epoch)
plotdata["loss"].append(loss)
print (" Finished!")
print ("cost=", sess.run(cost, feed_dict={inputdict['x']: train_X, inputdict['y']: train_Y}), "W=", sess.run(W), "b=", sess.run(b))
#圖形顯示
plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')
plt.legend()
plt.show()
plotdata["avgloss"] = moving_average(plotdata["loss"])
plt.figure(1)
plt.subplot(211)
plt.plot(plotdata["batchsize"], plotdata["avgloss"], 'b--')
plt.xlabel('Minibatch number')
plt.ylabel('Loss')
plt.title('Minibatch run vs. Training loss')
plt.show()
print ("x=0.2,z=", sess.run(z, feed_dict={inputdict['x']: 0.2}))
5 運行結(jié)果

三 直接定義
1 實例
直接定義輸入結(jié)果
2 解釋
直接定義:將定義好的Python變量直接放到OP節(jié)點中參與輸入的運算,將模擬數(shù)據(jù)的變量直接放到模型中訓(xùn)練。
3 代碼
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#生成模擬數(shù)據(jù)
train_X =np.float32( np.linspace(-1, 1, 100))
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3 # y=2x,但是加入了噪聲
#圖形顯示
plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.legend()
plt.show()
# 創(chuàng)建模型
# 模型參數(shù)
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.zeros([1]), name="bias")
# 前向結(jié)構(gòu)
z = tf.multiply(W, train_X)+ b
#反向優(yōu)化
cost =tf.reduce_mean( tf.square(train_Y - z))
learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #Gradient descent
# 初始化變量
init = tf.global_variables_initializer()
#參數(shù)設(shè)置
training_epochs = 20
display_step = 2
# 啟動session
with tf.Session() as sess:
sess.run(init)
# Fit all training data
for epoch in range(training_epochs):
for (x, y) in zip(train_X, train_Y):
sess.run(optimizer)
#顯示訓(xùn)練中的詳細(xì)信息
if epoch % display_step == 0:
loss = sess.run(cost)
print ("Epoch:", epoch+1, "cost=", loss,"W=", sess.run(W), "b=", sess.run(b))
print (" Finished!")
print ("cost=", sess.run(cost), "W=", sess.run(W), "b=", sess.run(b))
4 運行結(jié)果

以上這篇如何定義TensorFlow輸入節(jié)點就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JupyterNotebook設(shè)置Python環(huán)境的方法步驟
這篇文章主要介紹了JupyterNotebook設(shè)置Python環(huán)境的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Python數(shù)據(jù)擬合與廣義線性回歸算法學(xué)習(xí)
這篇文章主要為大家詳細(xì)介紹了Python數(shù)據(jù)擬合與廣義線性回歸算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Python3網(wǎng)絡(luò)爬蟲開發(fā)實戰(zhàn)之極驗滑動驗證碼的識別
本節(jié)我們的目標(biāo)是用程序來識別并通過極驗驗證碼的驗證,其步驟有分析識別思路、識別缺口位置、生成滑塊拖動路徑,最后模擬實現(xiàn)滑塊拼合通過驗證。需要的朋友可以參考下2019-08-08
python email smtplib模塊發(fā)送郵件代碼實例
本篇文章給大家分享了python email smtplib模塊發(fā)送郵件的相關(guān)代碼分享,有需要的朋友參考學(xué)習(xí)下。2018-04-04
Python析構(gòu)函數(shù)__del__定義原理解析
這篇文章主要介紹了Python析構(gòu)函數(shù)__del__定義原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
一文帶你深入理解python中pytest-repeat插件的工作原理
這篇文章主要和大家一起深入探討到底pytest_repeat插件的具體功能是如何實現(xiàn)的呢,相信具體了解了該插件,其他三方插件也可以很快了解它內(nèi)部運行機制,所以本文詳細(xì)講解了python pytest-repeat插件的工作原理,需要的朋友可以參考下2023-09-09

