如何定义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 相关文章推荐
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
Python读取指定目录下指定后缀文件并保存为docx
Apr 23 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
Python合并多个Excel数据的方法
Jul 16 Python
python实现三维拟合的方法
Dec 29 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
python+logging+yaml实现日志分割
Jul 22 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
python语言实现贪吃蛇游戏
Nov 13 Python
Django url 路由匹配过程详解
Jan 22 Python
Python实现仓库管理系统
May 30 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函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
php分页示例分享
2014/04/30 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
java必学必会之static关键字
2015/12/03 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
python super函数使用方法详解
2020/02/14 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
渗透攻击的测试步骤
2014/06/07 面试题
责任书格式范文
2014/07/28 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
python某漫画app逆向
2021/03/31 Python
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android