如何定义TensorFlow输入节点


Posted in Python onJanuary 23, 2020

TensorFlow中有如下几种定义输入节点的方法。

通过占位符定义:一般使用这种方式。

通过字典类型定义:一般用于输入比较多的情况。

直接定义:一般很少使用。

一 占位符定义

示例:

具体使用tf.placeholder函数,代码如下:

X = tf.placeholder("float")
Y = tf.placeholder("float")

二 字典类型定义

1 实例

通过字典类型定义输入节点

2 关键代码

# 创建模型
# 占位符
inputdict = {
  'x': tf.placeholder("float"),
  'y': tf.placeholder("float")
}

3 解释

通过字典定义的方式和第一种比较像,只不过是堆叠到一起。

4 全部代码

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
plotdata = { "batchsize":[], "loss":[] }
def moving_average(a, w=10):
  if len(a) < w:
    return a[:]  
  return [val if idx < w else sum(a[(idx-w):idx])/w for idx, val in enumerate(a)]
#生成模拟数据
train_X = np.linspace(-1, 1, 100)
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3 # y=2x,但是加入了噪声
#图形显示
plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.legend()
plt.show()
# 创建模型
# 占位符
inputdict = {
  'x': tf.placeholder("float"),
  'y': tf.placeholder("float")
}
# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.zeros([1]), name="bias")
# 前向结构
z = tf.multiply(inputdict['x'], W)+ b
#反向优化
cost =tf.reduce_mean( tf.square(inputdict['y'] - z))
learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #Gradient descent
# 初始化变量
init = tf.global_variables_initializer()
#参数设置
training_epochs = 20
display_step = 2
# 启动session
with tf.Session() as sess:
  sess.run(init)
  # Fit all training data
  for epoch in range(training_epochs):
    for (x, y) in zip(train_X, train_Y):
      sess.run(optimizer, feed_dict={inputdict['x']: x, inputdict['y']: y})
    #显示训练中的详细信息
    if epoch % display_step == 0:
      loss = sess.run(cost, feed_dict={inputdict['x']: train_X, inputdict['y']:train_Y})
      print ("Epoch:", epoch+1, "cost=", loss,"W=", sess.run(W), "b=", sess.run(b))
      if not (loss == "NA" ):
        plotdata["batchsize"].append(epoch)
        plotdata["loss"].append(loss)
  print (" Finished!")
  print ("cost=", sess.run(cost, feed_dict={inputdict['x']: train_X, inputdict['y']: train_Y}), "W=", sess.run(W), "b=", sess.run(b))
  #图形显示
  plt.plot(train_X, train_Y, 'ro', label='Original data')
  plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')
  plt.legend()
  plt.show()
  
  plotdata["avgloss"] = moving_average(plotdata["loss"])
  plt.figure(1)
  plt.subplot(211)
  plt.plot(plotdata["batchsize"], plotdata["avgloss"], 'b--')
  plt.xlabel('Minibatch number')
  plt.ylabel('Loss')
  plt.title('Minibatch run vs. Training loss')
   
  plt.show()
  print ("x=0.2,z=", sess.run(z, feed_dict={inputdict['x']: 0.2}))

5 运行结果

如何定义TensorFlow输入节点

三 直接定义

1 实例

直接定义输入结果

2 解释

直接定义:将定义好的Python变量直接放到OP节点中参与输入的运算,将模拟数据的变量直接放到模型中训练。

3 代码

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#生成模拟数据
train_X =np.float32( np.linspace(-1, 1, 100))
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3 # y=2x,但是加入了噪声
#图形显示
plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.legend()
plt.show()
# 创建模型
# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.zeros([1]), name="bias")
# 前向结构
z = tf.multiply(W, train_X)+ b
#反向优化
cost =tf.reduce_mean( tf.square(train_Y - z))
learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #Gradient descent
# 初始化变量
init = tf.global_variables_initializer()
#参数设置
training_epochs = 20
display_step = 2
# 启动session
with tf.Session() as sess:
  sess.run(init)
  # Fit all training data
  for epoch in range(training_epochs):
    for (x, y) in zip(train_X, train_Y):
      sess.run(optimizer)
    #显示训练中的详细信息
    if epoch % display_step == 0:
      loss = sess.run(cost)
      print ("Epoch:", epoch+1, "cost=", loss,"W=", sess.run(W), "b=", sess.run(b))
  print (" Finished!")
  print ("cost=", sess.run(cost), "W=", sess.run(W), "b=", sess.run(b))

4 运行结果

如何定义TensorFlow输入节点

以上这篇如何定义TensorFlow输入节点就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
Python的时间模块datetime详解
Apr 17 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
May 16 Python
Python简单读取json文件功能示例
Nov 30 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
pyhton中__pycache__文件夹的产生与作用详解
Nov 24 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
python二维图制作的实例代码
Dec 03 Python
java字符串格式化输出实例讲解
Jan 06 Python
Python OpenCV 图像平移的实现示例
Jun 04 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 #Python
python动态文本进度条的实例代码
Jan 22 #Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
Jan 22 #Python
使用Python实现Wake On Lan远程开机功能
Jan 22 #Python
python定义类self用法实例解析
Jan 22 #Python
通过实例解析python描述符原理作用
Jan 22 #Python
python基于property()函数定义属性
Jan 22 #Python
You might like
php设计模式 Facade(外观模式)
2011/06/26 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
php+mysql数据库查询实例
2015/01/21 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
详解Javascript动态操作CSS
2014/12/08 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
Vue-路由导航菜单栏的高亮设置方法
2018/03/17 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
Python中列表的一些基本操作知识汇总
2015/05/20 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
python win32 简单操作方法
2017/05/25 Python
基于django传递数据到后端的例子
2019/08/16 Python
python 默认参数相关知识详解
2019/09/18 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
中考标语大全
2014/06/05 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
MySQL的安装与配置详细教程
2021/06/26 MySQL
netty 实现tomcat的示例代码
2022/06/05 Servers