如何定義TensorFlow輸入節(jié)點(diǎn)
TensorFlow中有如下幾種定義輸入節(jié)點(diǎn)的方法。
通過(guò)占位符定義:一般使用這種方式。
通過(guò)字典類型定義:一般用于輸入比較多的情況。
直接定義:一般很少使用。
一 占位符定義
示例:
具體使用tf.placeholder函數(shù),代碼如下:
X = tf.placeholder("float")
Y = tf.placeholder("float")
二 字典類型定義
1 實(shí)例
通過(guò)字典類型定義輸入節(jié)點(diǎn)
2 關(guān)鍵代碼
# 創(chuàng)建模型
# 占位符
inputdict = {
'x': tf.placeholder("float"),
'y': tf.placeholder("float")
}
3 解釋
通過(guò)字典定義的方式和第一種比較像,只不過(guò)是堆疊到一起。
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
# 啟動(dòng)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 運(yùn)行結(jié)果

三 直接定義
1 實(shí)例
直接定義輸入結(jié)果
2 解釋
直接定義:將定義好的Python變量直接放到OP節(jié)點(diǎn)中參與輸入的運(yùn)算,將模擬數(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
# 啟動(dòng)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 運(yùn)行結(jié)果

以上這篇如何定義TensorFlow輸入節(jié)點(diǎn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python簡(jiǎn)單鼠標(biāo)自動(dòng)點(diǎn)擊某區(qū)域的實(shí)例
今天小編就為大家分享一篇python簡(jiǎn)單鼠標(biāo)自動(dòng)點(diǎn)擊某區(qū)域的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
多個(gè)python文件調(diào)用logging模塊報(bào)錯(cuò)誤
這篇文章主要介紹了多個(gè)python文件調(diào)用logging模塊產(chǎn)生錯(cuò)誤,需要的朋友可以參考下2020-02-02
VSCode設(shè)置Python語(yǔ)言自動(dòng)格式化的詳細(xì)方案
VSCode Python自動(dòng)格式化是指使用VSCode編輯器中的Python插件,可以自動(dòng)對(duì)Python代碼進(jìn)行格式化,使其符合PEP 8規(guī)范,這篇文章主要給大家介紹了關(guān)于VSCode設(shè)置Python語(yǔ)言自動(dòng)格式化的詳細(xì)方案,需要的朋友可以參考下2023-07-07
Python自動(dòng)化處理Excel數(shù)據(jù)的操作過(guò)程
在實(shí)際數(shù)據(jù)處理和分析過(guò)程中,經(jīng)常會(huì)遇到需要從大量數(shù)據(jù)中提取出特定日期范圍內(nèi)的信息的需求,本文將介紹如何使用Python的pandas庫(kù)來(lái)處理Excel文件,感興趣的朋友跟隨小編一起看看吧2023-11-11
詳解設(shè)計(jì)模式中的工廠方法模式在Python程序中的運(yùn)用
這篇文章主要介紹了設(shè)計(jì)模式中的工廠方法模式在Python程序中的運(yùn)用,工廠方法模式主張程序在設(shè)計(jì)時(shí)要可以根據(jù)不同的條件生成各種類的實(shí)例,需要的朋友可以參考下2016-03-03
Python開發(fā)一個(gè)功能齊全的IM聊天工具(附實(shí)例代碼)
即時(shí)通訊(IM)工具現(xiàn)在已經(jīng)很常見了,從簡(jiǎn)單的文本聊天到文件傳輸、音視頻通話,IM 工具功能豐富,那么,本文使用Python開發(fā)一個(gè)基礎(chǔ)的IM聊天工具,包括:客戶端和服務(wù)端架構(gòu)、實(shí)時(shí)消息發(fā)送與接收、多用戶聊天支持、一個(gè)簡(jiǎn)單的圖形用戶界面(GUI)2024-12-12
python Pandas如何對(duì)數(shù)據(jù)集隨機(jī)抽樣
這篇文章主要介紹了python Pandas如何對(duì)數(shù)據(jù)集隨機(jī)抽樣,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python3?cookbook解壓可迭代對(duì)象賦值給多個(gè)變量的問(wèn)題及解決方案
這篇文章主要介紹了python3?cookbook-解壓可迭代對(duì)象賦值給多個(gè)變量,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01
利用Python實(shí)現(xiàn)某OA系統(tǒng)的自動(dòng)定位功能
這篇文章主要介紹了利用Python實(shí)現(xiàn)某OA系統(tǒng)的自動(dòng)定位功能,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05

