使用TensorFlow构建简单线性模型

# 变量,初始值为0,这个变量会被后面的optimizer所改变
# 加入了噪声: 以和trX同样的结构,生成正态分布的噪声
# sess.run(cost)需要为两个placeholder提供输入,
# cost是一个计算图,含义是:在当前的Variable(持久化的变量),和当下输入的xy,计算出cost

# 使用global_variables_initializer,init_all_variables depricated
# tf.mul 改成 tf.multiply

# 分开自己的重点和博客给别人看的重点,博客只要为自己服务
# 整理博客分类

import numpy as np
import tensorflow as tf

# 生成训练数据 + 噪声,下面为了拟合   Y = 2X   这个函数
trX = np.linspace(-1, 1, 101)
trY = 2 * trX + np.random.randn(*trX.shape) * 0.33 # y=2x,但是加入了噪声: 以和trX同样的结构,生成正态分布的噪声

# 构建计算图
X = tf.placeholder("float") #输入输出符号变量
Y = tf.placeholder("float")

# 定义模型
# 模型可以是线性函数,多项式,还可以是神经网络
def model(X, w):
    return tf.multiply(X, w) # 线性回归只需要调用乘法操作即可。

# 模型权重 W 用变量表示
w = tf.Variable(0.0, name="weights") # 变量,初始值为0,这个变量会被后面的optimizer所改变
y_model = model(X, w)

# 定义损失函数
cost = (tf.pow(Y-y_model, 2)) # 平方损失函数

# 构建优化器,最小化损失函数。
train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost) 

# 构建会话
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
print(sess.run(w))

  

时间: 2024-08-12 03:37:06

使用TensorFlow构建简单线性模型的相关文章

机器学习与Tensorflow(1)——机器学习基本概念、tensorflow实现简单线性回归

一.机器学习基本概念 1.训练集和测试集 训练集(training set/data)/训练样例(training examples): 用来进行训练,也就是产生模型或者算法的数据集 测试集(testing set/data)/测试样例 (testing examples):用来专门进行测试已经学习好的模型或者算法的数据集 2.特征向量 特征向量(features/feature vector):属性的集合,通常用一个向量来表示,附属于一个实例 3.分类问题和回归问题 分类 (classific

TensorFlow的简单实用

定义常量 import tensorflow as tf # 定义常量 m1 = tf.constant([[3, 3]]) m2 = tf.constant([[2], [3]]) # 定义乘法 product = tf.matmul(m1, m2) # 这里不会直接输出结果,会打印出一个tensor # 想要输出结果要在sess中进行 print(product) # 第一种方式定义session sess = tf.Session() result = sess.run(product)

Linux服务--iptables之nat转发和构建简单的DMZ防火墙

iptables之nat转发和构建简单的DMZ防火墙 一.NAT iptables 中的nat表: nat:Network Address Translation:NAT不仅完美地解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机. nat有三种实现方式:SNAT,DNAT和端口多路复用OverLoad 在了解Nat工作原理之前先了解一下私网IP和公网IP.私网IP地址是指局域网内部网络或主机的IP地址,公网地址是指在因特尔网上全球唯一的IP地址. 私有

构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介

构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介 熟悉将用于 Apache Tuscany SCA for C++ 的 API.您将通过本文了解该 API 的主要组成部分,以便快速入门. 查看本系列更多内容 | 0 评论: Ed Slattery ([email protected]), 软件工程师, IBM UK Pete Robbins ([email protected]), 软件工程师, IBM UK Andrew Borley ([email pro

Ant——使用Ant构建简单Java项目(二)

博客<Ant--使用Ant构建简单Java项目(一)>演示了使用Ant工具构建简单的Java项目,接着这个例子来进一步学习Ant: 上面例子执行build.xml文件脚本比较繁杂,能不能简化执行的脚本呢?答案是肯定的,可以将build.xml文件中的脚本改成下面的脚本: <?xml version="1.0" encoding="UTF-8"?> <project name="test" default="

Ant——使用Ant构建简单Java项目(三)

博客<Ant--使用Ant构建简单Java项目(二)>我们简化了执行Test类中main方法需要执行的命令,本博客来介绍一下如何使build.xml文件和其中使用property标签定义的属性分离: 1.在test文件夹中新建名为build.properties的文件,文件中以"key=value"的形式输入原来在build.xml文件中定义的属性及其属性值如下: src=src lib=build/lib dest=build/classes np_jar=build/l

Ant—使用Ant构建简单Java项目(三)

博客<Ant-使用Ant构建简单Java项目(二)>我们简化了运行Test类中main方法须要运行的命令,本博客来介绍一下如何使build.xml文件和当中使用property标签定义的属性分离: 1.在test目录中新建名为build.properties的文件,文件里以"key=value"的形式输入原来在build.xml文件里定义的属性及其属性值例如以下: src=src lib=build/lib dest=build/classes np_jar=build/l

三、使用Maven构建简单的java项目

前边,我刚搭建了Maven环境,还有给大家推荐了学习资源,这个小节,我们来就来,,简单的玩玩maven. 1.所需工具: 1.Eclipse     2.apache-maven-3.3.9   3.JDK  1.7 2.命令构建简单的java项目 (1)运行cmd 切换盘符到你指定的文件夹下,如图 (2)键入以下命令: mvn archetype:generate -DgroupId=com.software.wg -DartifactId=FirstMvn -DarchetypeArtifa

构建简单的Maven工程,使用测试驱动的方式开发项目

构建简单的Maven工程很简单,这里写这篇随笔的原因是希望自己能记住几个小点. 一.安装Maven 1.下载maven:https://maven.apache.org/download.cgi 2.解压压缩包到指定路径,如E:/Java/maven.得到文件夹apache-maven-3.3.9. 3.以第二步得到的目录E:/Java/maven/apache-maven-3.3.9作为Maven的根目录,配置Maven的环境变量.注意因为maven是Java语言开发的所以需要依赖JDK,所以