91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

深度學習之神經網絡的構建與理解

發布時間:2020-09-06 21:51:07 來源:網絡 閱讀:191 作者:ckllf 欄目:開發技術

  神經網絡的構建與理解

  一.神經網絡基本框架復現

  #必須放開頭,否則報錯。作用:把python新版本中print_function函數的特性導入到當前版本

  from __future__ import print_function

  import tensorflow.compat.v1 as tf#將v2版本轉化成v1版本使用

  tf.disable_v2_behavior()

  import numpy as np

  import matplotlib.pyplot as plt

  #Construct a function that adds a neural layer

  #inputs指輸入,in_size指輸入層維度,out_size指輸出層維度,activation_function()指激勵函數,默認None

  def add_layer(inputs,in_size,out_size,activation_function=None):

  Weights=tf.Variable(tf.random.normal([in_size,out_size]))#權重

  biases=tf.Variable(tf.zeros([1,out_size])+0.1)#偏置,因為一般偏置不為0,于是人為加上0.1

  Wx_plus_b=tf.matmul(inputs,Weights)+biases#tf.matmul矩陣相乘

  if activation_function is None:

  outputs = Wx_plus_b

  else:

  outputs = activation_function(Wx_plus_b)

  return outputs

  #Make up some real data

  #隨機x_data,這里一定要定義dtype,[:,np.newaxis]指降低一個維度

  x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]

  #概率密度函數np.random.normal(loc,scale,size),loc指分布中心,scale指標準差(越小擬合的越好),size指類型(默認size=None)

  noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32)

  #real y_data

  y_data = np.square(x_data) - 0.5 + noise

  #defind placeholder for inputs to network

  #此函數可以理解為形參,用于定義過程,在執行的時候再賦具體的值

  xs = tf.placeholder(tf.float32,[None,1])#一定要定義tf.float32,系統不默認

  ys = tf.placeholder(tf.float32,[None,1])

  #add hidden layer

  #這里的激勵函數為relu函數,指輸入層一個神經元,輸出層十個神經元

  l1 = add_layer(xs,1,10,activation_function = tf.nn.relu)

  #add outputs layer

  #這里激勵函數為None

  prediction = add_layer(l1,10,1,activation_function = None)

  #the error between real data and prediction

  #定義loss,指損失函數總和的平均值,注意這里必須得加上一個reduction_indices=[]。(會說明)

  loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))

  #這里用GradientDescentOptimizer做為優化器,就是梯度下降法

  train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

  #Activate

  sess = tf.Session()#非常重要

  #定義全局初始化(兩種表示方法:global_variables_initializer,initialize_all_variables)

  #建議用global_variables_initializer新版本

  init = tf.global_variables_initializer()

  sess.run(init)

  for i in range(1000):

  #train,這里的feed_dict是一個字典,用于導入數據x_data和y_data

  sess.run(train_step,feed_dict = {xs : x_data, ys : y_data})

  #每50步打印一次

  if i % 50 == 0:

  print(sess.run(loss,feed_dict = {xs : x_data, ys : y_data}))

  顯示結果

  顯然loss不斷趨近于0

  

深度學習之神經網絡的構建與理解


  部分代碼解釋鄭州專業婦科醫院 http://fk.zyfuke.com/

  當我們計算loss時必須加上reduction_indices=[1],這是一個函數的處理維度。如果沒有這個函數默認值為0,則train_step將會被降維成一個數(0維)

  reduction_indices工作原理圖

  優化器的種類(圖片)

  新手可以使用GradientDescentOptimizer

  進階一點可以使用MomenttumOptimizer或AdamOptimizer

  激勵函數的種類(圖片)

  二.結果可視化

  #Visualization of results

  fig = plt.figure()#建立一個背景

  ax = fig.add_subplot(1,1,1)#建立標注

  ax.scatter(x_data , y_data)#scatter指散點

  plt.ion()#全局變量時,最好注釋掉。作用:使圖像連續

  plt.show()

  for i in range(1000):

  # training

  sess.run(train_step, feed_dict={xs: x_data, ys: y_data})

  if i % 50 == 0:

  # to visualize the result and improvement

  #指沒有圖像就跳過(簡單理解:先抹去線,再出現下一次線)

  try:

  ax.lines.remove(lines[0])

  except Exception:

  pass

  prediction_value = sess.run(prediction, feed_dict={xs: x_data})

  # plot the prediction

  lines = ax.plot(x_data, prediction_value, 'r-', lw=3)#紅色,寬度為3

  plt.pause(0.1)#指暫停幾秒,作者實驗表明0.1~0.3可視化效果明顯

  最終得出效果圖


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长治县| 韶山市| 泰兴市| 长丰县| 仪征市| 晋中市| 黑水县| 嘉禾县| 平泉县| 盐亭县| 涿鹿县| 云阳县| 延边| 鄂州市| 高雄县| 宝山区| 绥宁县| 成都市| 石棉县| 合阳县| 临夏县| 三都| 且末县| 晋州市| 乃东县| 博白县| 临桂县| 伊川县| 宜城市| 中阳县| 天柱县| 资源县| 肥乡县| 合阳县| 东台市| 台北县| 微山县| 柞水县| 舞钢市| 布尔津县| 宜丰县|