床长人工智能——搭建第一个tensorflow神经网络
原文链接:(26条消息) 构建第一个tensorflow神经网络_人工智能AI技术的博客-CSDN博客
原文使用的是tensorflow 1.x版本,我电脑上tensorflow版本为2.6,现将原文中的代码更新为tensorflow 2.x版本
代码所要解决的问题:寻找一个w值,使函数结果最小
(下方代码语法形式为tensorlow 2.x版本)
import numpy as np
import tensorflow as tf
# 定义一个类型为float32的tensorflow变量w
w = tf.Variable(0, dtype=tf.float32)
# 定义成本函数cost
# cost = tf.add(tf.add(w ** 2, tf.multiply(-10., w)), 25)
cost = w ** 2 - 10 * w + 25
# 定义梯度下降实例对象,learning rate = 0.01,并最小化cost
tf.compat.v1.disable_eager_execution()
optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(cost)
# 创建一个tensorflow的session对象
init = tf.compat.v1.global_variables_initializer()
with tf.compat.v1.Session() as sess:
sess.run(init) # 用session.run(w)获取w的当前值(初始值)
print(sess.run(w))
# sess.run(train) # 执行一次梯度下降后的w
# print(sess.run(w))
for i in range(1000):
sess.run(train)
print(sess.run(w)) # 执行1000次梯度下降后的w
使用占位符功能placehold后:
(下方代码的语法形式是tensorflow 1.x 版本,只是用import tensorflow.compat.v1使tensorflow 2.x能兼容tensorflow 1.x版本的代码)
import numpy as np
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
coefficients = np.array([[1], [-10], [25]])
w = tf.Variable([0], dtype=tf.float32)
x = tf.placeholder(tf.float32, [3, 1])
cost = x[0][0] * w ** 2 + x[1][0] * w + x[2][0]
train = tf.train.GradientDescentOptimizer(0.01).minimize(cost)
init = tf.global_variables_initializer()
session = tf. Session()
session.run(init)
print(session.run(w))
for i in range(1000):
session.run(train, feed_dict={x:coefficients}) # 将数值向量coefficients填充到我们的占位符x中
print(session.run(w))
版权声明:本文为sunshine_dx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。