1. 程式人生 > 其它 >Tensorflow基礎學習程式碼筆記1

Tensorflow基礎學習程式碼筆記1

技術標籤:tensorflow學習筆記tensorflow神經網路python深度學習

@TOC
沒有授權轉載,只是如果大家想學習的話可以去b站看原視訊

這個筆記是我跟著up主的教程打程式碼的時候遇到了一些問題(大部分是tensorflow版本問題)以及一些解決辦法

先看原教程程式碼
(附部分up講解的註釋)*****

import tensorflow as tf
import numpy as np


#create data#
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3 

###create tensorflow structure start###
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))#weight可能是多元矩陣所以最好大寫# biases = tf.Variable(tf.zeros([1]))#不要忘記zeros的s# y = Weights*x_data + biases#計算預測的y的準確度# loss = tf.reduce_mean(tf.square(y-y_data)) optimizer = optimizer = tf.train.GradientDescentOptimizer(0.5)#建立優化器,0.5是學習效率# train = optimizer.
minimize(loss)#優化器減少誤差,提升神經網路引數準確度# init = tf.initialize_all_variables_()#初始化網路結構# ###create tensorflow structure end### #session# sess = tf.session() sess.run(init) #activate cnn很重要# #開始訓練,201次數# for step in range(201): sess.run(train) if step % 20 == 0 : #每隔20步列印# print(step,sess.run(
Weights),sess.run(biases))

由於我用Tensorflow2.0版本,教程為其他版本問題出現以下報錯
1
AttributeError: module ‘tensorflow’ has no attribute 'random_uniform’
在這裡插入圖片描述
檢視程式碼

Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))

更改為

Weights = tf.Variable(tf.random.uniform([1],-1.0,1.0))

成功執行

2
AttributeError: module ‘tensorflow._api.v2.train’ has no attribute 'GradientDescentOptimizer’
在這裡插入圖片描述
檢視程式碼

optimizer = optimizer = tf.train.GradientDescentOptimizer(0.5)

改為

optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.5)

這裡我因為少打了引數0.5,所以報過這樣一個錯誤
TypeError: minimize() missing 1 required positional argument: 'loss’
在這裡插入圖片描述
檢視程式碼為

optimizer = tf.compat.v1.train.GradientDescentOptimizer

補充引數(0.5)即可

3
"loss passed to Optimizer.compute_gradients should "
RuntimeError: loss passed to Optimizer.compute_gradients should be a function when eager execution is enabled.

在這裡插入圖片描述
看別的博主說這是因為
“loss傳遞給Optimizer.compute_gradients啟用了一個立即執行的函式。在Tensorflow 2.0中,eager execution預設開啟。”

**解決方法:**我在import 之後新增下面這句程式碼就可以了。
(我覺得在loss傳輸之前輸入這句就可以)

tf.compat.v1.disable_eager_execution()

4
AttributeError: module ‘tensorflow’ has no attribute ‘initialize_all_variables’
AttributeError: module ‘tensorflow’ has no attribute 'global_variables_initializer’

在這裡插入圖片描述
檢視程式碼

init = tf.initialize_all_variables_()

這裡在查了一些解決辦法後發現以下兩種方案均已棄用

init = tf.initialize_all_variables()
init = tf.global_variables_initializer()

改為以下程式碼可正常執行

init = tf.compat.v1.global_variables_initializer()

5
AttributeError: module ‘tensorflow’ has no attribute 'session’
在這裡插入圖片描述
因為Tensorflow2.0已經移除Session模組
將程式碼修改為

sess = tf.compat.v1.Session()

解決了以上所有問題後代碼成功執行
執行結果如下
在這裡插入圖片描述
最後附所有修改好的程式碼

import tensorflow as tf
import numpy as np

#關閉立即執行的函式#
tf.compat.v1.disable_eager_execution()

#create data#
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3 

###create tensorflow structure start###

Weights = tf.Variable(tf.random.uniform([1],-1.0,1.0))#weight可能是多元矩陣所以最好大寫#
biases = tf.Variable(tf.zeros([1]))#不要忘記zeros的s#

y = Weights*x_data + biases#計算預測的y的準確度#

loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.5)#建立優化器,0.5是學習效率#
train = optimizer.minimize(loss)#優化器減少誤差,提升神經網路引數準確度#

init = tf.compat.v1.global_variables_initializer()#初始化網路結構#

###create tensorflow structure end###

#session#
sess = tf.compat.v1.Session()
sess.run(init) #activate cnn很重要#

#開始訓練,201次數#
for step in range(201):
    sess.run(train)
    if step % 20 == 0 : #每隔20步列印#
        print(step,sess.run(Weights),sess.run(biases))

第一次用CSDN記筆記,所以哪裡做的不好歡迎交流指正。
當然之後可能會嘗試把2.0版本換了。