注意其中tensorflow2.0的版本差异 使用下述代码可以是应该2.x版本。
# 计算损失函数 定义一些变量 tf.compat.v1.disable_eager_execution() # 保证session.run()能够正常运行 y_hat tf.constant(36, name y_hat ) # Define y_hat constant. Set to 36. y tf.constant(39, name y ) # Define y. Set to 39 loss tf.Variable((y - y_hat) ** 2, name loss ) init tf.compat.v1.global_variables_initializer() with tf.compat.v1.Session() as session: # Create a session and print the output session.run(init) # Initializes the variables print(session.run(loss))
在TensorFlow中编写和运行程序包含以下步骤
创建尚未执行的变量。在这些变量之间编写操作。初始化变量。创建一个会话session。运行会话session 这将运行你上面编写的操作。因此 当我们为损失创建变量时 我们仅将损失定义为其他数量的函数 但没有验证其值。为了验证它 我们必须运行init tf.compat.v1.global_variables_initializer()初始化损失变量 在最后一行中 我们终于能够验证loss的值并打印它。
测试一个简单的例子
# 测试简单的例子 a tf.constant(2) b tf.constant(10) c tf.multiply(a, b) print(c)
最后并没有输出c是什么 不过我们得到了一个Tensor类型的变量 没有维度 数字类型为int32。我们之前所做的一切都只是把这些东西放到了一个“计算图(computation graph)”中 而我们还没有开始运行这个计算图 为了实际计算这两个数字 我们需要创建一个会话并运行它
追加下列代码
sess tf.compat.v1.Session () print(sess.run(c))
最后得到loss值20.
接下来 我们需要了解一下占位符 placeholders 。占位符是一个对象 它的值只能在稍后指定 即先在此处占据一个位置。要指定占位符的值 可以使用一个feed字典 feed_dict变量 来传入 接下来 我们为x创建一个占位符 这将允许我们在稍后运行会话时传入一个数字。
# 利用feed_dict来改变x的值
x tf.compat.v1.placeholder(tf.int64, name x )
print(sess.run(2 * x, feed_dict {x: 3}))
sess.close()
输出为6
计算Y Wx b线性函数。其中W X X X和 b b b是从随机正态分布中抽取的。 W 的维度是 4,3 X 是 3,1 b 是 4,1 。
# 定义线性函数 def linear_function(): 实现一个线性功能 初始化W 类型为tensor的随机变量 维度为(4,3) 初始化X 类型为tensor的随机变量 维度为(3,1) 初始化b 类型为tensor的随机变量 维度为(4,1) result - 运行了session后的结果 运行的是Y WX b



