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版本換了。