怎樣定義TensorFlow輸入節(jié)點(diǎn)-創(chuàng)新互聯(lián)

這篇文章主要介紹了怎樣定義TensorFlow輸入節(jié)點(diǎn),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為賈汪企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站,賈汪網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

TensorFlow中有如下幾種定義輸入節(jié)點(diǎn)的方法。

通過(guò)占位符定義:一般使用這種方式。

通過(guò)字典類(lèi)型定義:一般用于輸入比較多的情況。

直接定義:一般很少使用。

一 占位符定義

示例:

具體使用tf.placeholder函數(shù),代碼如下:

X = tf.placeholder("float")
Y = tf.placeholder("float")

二 字典類(lèi)型定義

1 實(shí)例

通過(guò)字典類(lèi)型定義輸入節(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é)果

怎樣定義TensorFlow輸入節(jié)點(diǎn)

三 直接定義

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)

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎樣定義TensorFlow輸入節(jié)點(diǎn)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

網(wǎng)頁(yè)標(biāo)題:怎樣定義TensorFlow輸入節(jié)點(diǎn)-創(chuàng)新互聯(lián)
文章地址:http://muchs.cn/article20/cedjco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、手機(jī)網(wǎng)站建設(shè)、企業(yè)建站、品牌網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化全網(wǎng)營(yíng)銷(xiāo)推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)