代码来自ros机器人开发实践
显示有问题,双击代码查看。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#import tensorflow as tf #倒入tensorflow库同是给其起别名tf
#tf.compat.v1.disable_eager_execution() #这个是因为下载的tensorflow2目前的语法用的1.1版本,少东西,
加上这句花才能运行
import tensorflow.compat.v1 as tf #本行及下一行作用和上一行一样,但效果比上一行全面。
tf.disable_v2_behavior()
import numpy as np #同tensorflow解释,numpy是一个库,主要用于维度数组和矩阵计算
提供了重要的数据对象ndarray以及数组矩阵处理函数 ;
# 从-1到1等差采样101个点
trX = np.linspace(-1, 1, 101) #trX代表从-1到1,一共有101个点。这里可以理解为我们有很多这样
的数据
# 根据线性关系计算每个x对应的y值,
并且加入一些噪声
trY = 2 * trX + \
np.ones(*trX.shape) * 4 + \ #生成101个为1的数
np.random.randn(*trX.shape) * 0.03 #噪声代码,生成一个含有n个符合标准正态分布的随机数的数
组,*trX.shape代表101,是一种数量的表达方
式,*trX.shape(0)输出结果相同。
# 创建变量占位符
X = tf.placeholder(tf.float32) #placeholder占位符号,告诉系统这里有一个值/向量/矩阵,但没办
法给出具体
数值,站位的数据类型,tf.float32,32位浮点数
Y = tf.placeholder(tf.float32)
# 创建模型
w = tf.Variable(0.0, name="weights") #权重,应该是给名叫weights的变量赋值为0。
b = tf.Variable(0.0, name="biases") #阀值,这个赋值方法好像可以在计算结束后将变量保存下来,因为
一般情况下是不保存的。
y_model = tf.multiply(X, w) + b # 线性回归模型y=X*w + b
# 创建代价函数
cost = tf.square(Y - y_model)
# 构建一个优化器,尽量拟合所有的数据点,使得代价函数的值最小
train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost)
# 在会话中运行计算图
sess=tf.compat.v1.Session() #sess = tf.Session()
# 初始化所有变量
init = tf.global_variables_initializer()
sess.run(init)
# 开始训练模型
for i in range(100):
for (x, y) in zip(trX, trY):
sess.run(train_op, feed_dict={X: x, Y: y})
w_ = sess.run(w) # it should be something around 2
b_ = sess.run(b) # it should be something atound 4
# 打印训练得到的线性回归模型
print("Result : trY = " + str(w_) + "*trX + " + str(b_))
博文:np.random.randn的全方位解析_笔记大全_设计学院
零基础从20K到25K的深度学习之路--3 用keras做一个回归模型_51CTO博客_keras模型训练
科学网-Python中*和**作用及随机数产生函数 np.random.rand()/numpy.random.unifo...-张伟的博文
python中星号(*),即(*train_x.shape)的用法_*x.shape_漠北尘-Gavin的博客-CSDN博客
python 中的np.zeros()和np.ones()函数_python np.zeros_帅奇奇的博客的博客-CSDN博客
博文(比较全):
TensorFlow2.x(二) ---- 常用函数讲解(创建张量)_ 适合入门学习的最全最细讲解_tf.float32_无涯.的博客-CSDN博客