前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tensorflow学习笔记(一)——《案例:自实现线性回归》代码校正调整

tensorflow学习笔记(一)——《案例:自实现线性回归》代码校正调整

作者头像
诡途
发布2022-05-09 19:06:15
4090
发布2022-05-09 19:06:15
举报
文章被收录于专栏:诡途的python路

快速阅读

1.环境说明

环境名称

我自己的环境

视频教程环境

系统环境

windows10

macOS

IDE解释器

pycharm

pycharm

tensorflow系统

CPU

CPU

tensorflow版本

2.2.0

1.8

2.代码报错修改

No1.tf.random_normal报错问题

tensorflow2.x版本里改为了tf.random.normal

代码语言:javascript
复制
# 1) 准备数据
X = tf.random.normal(shape=[100, 1])
# X = tf.random_normal(shape=[100, 1])
y_true = tf.matmul(X, [[0.8]])+0.7

# 2) 构造模型
# 定义模型参数 用变量
weights = tf.Variable(initial_value=tf.random.normal(shape=[1, 1]))
bias = tf.Variable(initial_value=tf.random.normal(shape=[1, 1]))
y_predict = tf.matmul(X, weights) + bias

No2.GradientDescentOptimizer

代码语言:javascript
复制
 #报错: 
 AttributeError: module 'tensorflow_core._api.v2.train' has no attribute 'GradientDescentOptimizer'
 #原代码:
 tf.train.GradientDescentOptimizer(learning_rate=0.01)
 #改为:
 tf.compat.v1.train.GradientDescentOptimizer(learn_rate=0.01)

No3.会话开启方式

Tensorflow 2.0版本中已经移除了Session这一模块,改换运行代码 tf.compat.v1.Session()

代码语言:javascript
复制
#AttributeError: module 'tensorflow' has no attribute 'Session'
# 开启会话
with tf.compat.v1.Session() as sess:
	 # 初始化向量
	 sess.run(init)
	 # 查看初始化模型参数之后的值
	 print("训练前模型参数为:权重 %f,偏置%f" % (weights.eval(), bias.eval()))

No.4 optimizer报错

原理详见文章:Tensorflow 2 错误处理

代码语言:javascript
复制
#报错
RuntimeError: `loss` passed to Optimizer.compute_gradients should be a function when eager execution
#在下句代码之前 
#optimizer = tf.compat.v1.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)
#添加tf.compat.v1.disable_eager_execution()

#更改后代码

tf.compat.v1.disable_eager_execution()
optimizer = tf.compat.v1.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)

3.总结

本来想着与时俱进,这个tf2.x进的太多了,墙裂不建议新手安装2.x,尤其 是 你的教程版本是1.x的 情况,如果不幸安装了2.x,又不想卸载重装的话(反正我是不想卸载重装,装了好几次才整个不知道什么原因),执行不了的语句(如果实在找不到原因)都用tf.compat.v1切成1.x吧!好像还挺好使的

4.完整代码

代码语言:javascript
复制
import tensorflow as tf

def linear_regression():
    """
    自实现一个线性回归
    :return:
    """
    # 1) 准备数据
    X = tf.random.normal(shape=[100, 1])
    # X = tf.random_normal(shape=[100, 1])
    y_true = tf.matmul(X, [[0.8]])+0.7

    # 2) 构造模型
    # 定义模型参数 用变量
    weights = tf.Variable(initial_value=tf.random.normal(shape=[1, 1]))
    bias = tf.Variable(initial_value=tf.random.normal(shape=[1, 1]))
    y_predict = tf.matmul(X, weights) + bias

    # 3) 构造损失函数
    error = tf.reduce_mean(tf.square(y_predict - y_true))

    # 4) 优化损失
    tf.compat.v1.disable_eager_execution()
    optimizer = tf.compat.v1.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)

    # 显示初始化变量
    init = tf.compat.v1.global_variables_initializer()

    # 开启会话
    with tf.compat.v1.Session() as sess:
        # 初始化向量
        sess.run(init)

        # 查看初始化模型参数之后的值
        print("训练前模型参数为:权重 %f,偏置%f" % (weights.eval(), bias.eval()))
    return None


if __name__ == "__main__":
    linear_regression()

5.其他学习资料

① tensorflowAPI文档 ② tf.global_variables_initializer()什么时候用?


写在最后的最后,报错太多了,我决定还是卸载掉,重装个1.8了,改的要哭了,学习进度几乎为 0

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速阅读
  • 1.环境说明
  • 2.代码报错修改
    • No1.tf.random_normal报错问题
      • No2.GradientDescentOptimizer
        • No3.会话开启方式
          • No.4 optimizer报错
          • 3.总结
          • 4.完整代码
          • 5.其他学习资料
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档