强化学习笔记2-Python/OpenAI/TensorFlow/ROS-程序指令

本文涉及的产品
资源编排,不限时长
简介: 强化学习笔记2-Python/OpenAI/TensorFlow/ROS-程序指令TensorFlowTensorFlow是Google的一个开源软件库,广泛用于数值计算。它使用可在许多不同平台上共享和执行的数据流图。

强化学习笔记2-Python/OpenAI/TensorFlow/ROS-程序指令
TensorFlow
TensorFlow是Google的一个开源软件库,广泛用于数值计算。它使用可在许多不同平台上共享和执行的数据流图。

它被广泛用于构建深度学习模型,这是机器学习的一个子集。张量只不过是一个多维数组,所以当我们说TensorFlow时,它实际上是计算图中的多维数组(张量)流。安装Anaconda后,安装TensorFlow变得非常简单,直接安装tensorflow也非常简单。无论您使用何种平台,都可以通过键入以下命令轻松安装tensorflow。

conda install -c conda-forge tensorflow

pip install --user tensorflow

pip3 install --user tensorflow

如需GPU支持,需要-gpu。

运行以下hello world程序即可检查成功的tensorflow安装。

import warnings
warnings.filterwarnings('ignore')
import tensorflow as tf
hello = tf.constant("Hello World")
sess = tf.Session()
print(sess.run(hello))
显示结果如下:

b'Hello World'

变量Variables、常量Constants、占位符Placeholders
变量,常量,占位符是TensorFlow的基本要素。 但是,这三者之间总是存在混淆。 让我们逐个看到每个元素,并了解它们之间的区别。

变量
变量是用于存储值的容器。 变量将用作计算图中其他几个操作的输入。 我们可以使用tf.Variable()函数创建tensorflow变量。 在下面的示例中,我们使用随机正态分布中的值定义变量,并将其命名为权重。

weights = tf.Variable(tf.random_normal([8, 9], stddev=0.1), name="weights")

但是,在定义变量之后,我们需要使用tf.global_variables_initializer()方法显式创建初始化操作,该方法将为变量分配资源。

常量

常量与变量不同,它们的值不能改变。
它们被分配了值,它们无法在整个过程中更改。 我们可以创建常量使用tf.constant()函数。

x = tf.constant(666)

占位符

将占位符视为一个变量,您只需定义类型和维度不分配价值。 占位符定义为没有值。 占位符的值将在运行时提供。 占位符有一个名为shape的可选参数指定数据的维度。 如果形状设置为none,那么我们可以提供任何数据运行时的大小。 可以使用tf.placeholder()函数定义占位符

x = tf.placeholder("float", shape=None)

简单来说,我们使用tf.variable来存储数据,使用tf.placeholder来提供外部数据。

计算图(ROS中也有这个概念)Computation Graph
TensorFlow中的所有内容都将表示为由节点和边组成的计算图,其中节点是数学运算,例如加法,乘法等。边是张量。 计算图在优化资源方面非常有效,并且还促进了分布式计算。

假设我们有节点B,其输入依赖于节点A的输出,这种类型的依赖性称为直接依赖:

A = tf.multiply(8,5)
B = tf.multiply(A,1)

当节点B不依赖于节点A进行输入时,它被称为间接依赖:

A = tf.multiply(8,5)
B = tf.multiply(4,3)

因此,如果我们能够理解这些依赖关系,我们就可以在可用资源中分配独立计算并减少计算时间。 每当我们导入tensorflow时,将自动生成默认图形,并且我们创建的所有节点都将与默认图形相关联。

会话Sessions
只会定义计算图,为了执行计算图,我们使用tensorflow会话。 sess = tf.Session()我们可以使用tf.Session()方法为我们的计算图创建会话,该方法将分配用于存储变量当前值的内存。 创建会话后,我们可以使用sess.run()方法执行我们的图形。 为了在tensorflow中运行任何东西,我们需要为一个实例启动tensorflow会话,看下面的代码:

import tensorflow as tf
a = tf.multiply(2,3)
print(a)
输出:

Tensor("Mul_4:0", shape=(), dtype=int32)
它将打印tensorflow对象而不是6。因为如前所述,每当我们导入tensorflow时,将自动创建默认计算图,并且我们创建的所有节点将附加到图上。 为了执行图形,我们需要初始化tensorflow会话,如下所示:

import tensorflow as tf
a = tf.multiply(2,3)

create tensorflow session for executing the session

with tf.Session() as sess:
 #run the session
 print(sess.run(a))
输出:

6
综合到一个示例中:

import warnings
warnings.filterwarnings('ignore')
import tensorflow as tf
hello = tf.constant("Hello World")
sess = tf.Session()
print(sess.run(hello))
a = tf.multiply(6,8)
print(a)

create tensorflow session for executing the session

with tf.Session() as sess:

run the session

print(sess.run(a))
b'Hello World'
Tensor("Mul:0", shape=(), dtype=int32)
48

TensorBoard
TensorBoard是tensorflow的可视化工具,可用于可视化计算图。 它还可用于绘制各种中间计算的各种定量指标和结果。 使用TensorBoard,我们可以轻松地可视化复杂的模型,这对于调试和共享非常有用。 现在让我们构建一个基本的计算图并在tensorboard中可视化。

首先,让我们导入库:

import tensorflow as tf

接下来,我们初始化变量:

a = tf.constant(5)
b = tf.constant(4)
c = tf.multiply(a,b)
d = tf.constant(2)
e = tf.constant(3)
f = tf.multiply(d,e)
g = tf.add(c,f)

现在,我们将创建一个tensorflow会话,我们将使用tf.summary.FileWriter()将我们的图形结果写入称为事件文件的文件:

with tf.Session() as sess:
    writer = tf.summary.FileWriter("logs", sess.graph)
    print(sess.run(g))
    writer.close()

输出:

26

要运行tensorboard,请转到终端,找到工作目录并键入:

tensorboard --logdir=logs --port=6003

添加范围Adding Scope
范围用于降低复杂性,并通过将相关节点分组在一起来帮助更好地理解模型。例如,在上面的示例中,我们可以将图分解为两个不同的组,称为计算和结果。 如果你看一下前面的例子,我们可以看到节点,a到e执行计算,节点g计算结果。 因此,我们可以使用范围单独对它们进行分组以便于理解。 可以使用tf.name_scope()函数创建范围。

with tf.name_scope("Computation"):
    a = tf.constant(5)
    b = tf.constant(4)
    c = tf.multiply(a,b)
    d = tf.constant(2)
    e = tf.constant(3)
    f = tf.multiply(d,e)

with tf.name_scope("Result"):
     g = tf.add(c,f)

如果您看到计算范围,我们可以进一步细分为单独的部分,以便更好地理解。 假设我们可以创建作为第1部分的范围,其具有节点a到c,范围作为第2部分,其具有节点d到e,因为第1部分和第2部分彼此独立。

with tf.name_scope("Computation"):
    with tf.name_scope("Part1"):
        a = tf.constant(5)
        b = tf.constant(4)
        c = tf.multiply(a,b)
    with tf.name_scope("Part2"):
        d = tf.constant(2)
        e = tf.constant(3)
        f = tf.multiply(d,e)

通过在tensorboard中对它们进行可视化,可以更好地理解范围。 完整代码如下所示:

with tf.name_scope("Computation"):
    with tf.name_scope("Part1"):
        a = tf.constant(5)
        b = tf.constant(4)
        c = tf.multiply(a,b)
    with tf.name_scope("Part2"):
        d = tf.constant(2)
        e = tf.constant(3)
        f = tf.multiply(d,e)
with tf.name_scope("Result"):
    g = tf.add(c,f)
with tf.Session() as sess:
    writer = tf.summary.FileWriter("logs", sess.graph)
    print(sess.run(g))
    writer.close()

全部示例如下:

import tensorflow as tf
with tf.name_scope("Computation"):

with tf.name_scope("Part1"):
    a = tf.constant(5)
    b = tf.constant(4)
    c = tf.multiply(a,b)
with tf.name_scope("Part2"):
    d = tf.constant(2)
    e = tf.constant(3)
    f = tf.multiply(d,e)

with tf.name_scope("Result"):

g = tf.add(c,f)

with tf.Session() as sess:

writer = tf.summary.FileWriter("logs", sess.graph)
print(sess.run(g))
writer.close()

使用:tensorboard --logdir=logs --port=6003

在浏览器复制如下地址:TensorBoard 1.13.1 at http://TPS2:6003 (Press CTRL+C to quit)

不同系统会有差异。

扩展阅读:

OpenAI博客
TensorFlow官网
Github 


作者:zhangrelay
来源:CSDN
原文:https://blog.csdn.net/ZhangRelay/article/details/91414600
版权声明:本文为博主原创文章,转载请附上博文链接!

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
51 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
2月前
|
安全 API C语言
Python程序的安全逆向(关于我的OPENAI的APIkey是如何被盗的)
本文介绍了如何使用C语言编写一个简单的文件加解密程序,并讨论了如何为编译后的软件添加图标。此外,文章还探讨了Python的.pyc、.pyd等文件的原理,以及如何生成和使用.pyd文件来增强代码的安全性。通过视频和教程,作者详细讲解了生成.pyd文件的过程,并分享了逆向分析.pyd文件的方法。最后,文章提到可以通过定制Python解释器来进一步保护源代码。
87 6
|
2月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
356 55
|
2月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
220 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
3月前
|
机器学习/深度学习 人工智能 算法
强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用
本文探讨了强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用,通过案例分析展示了其潜力,并讨论了面临的挑战及未来发展趋势。强化学习正为游戏AI带来新的可能性。
216 4
|
3月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
141 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
3月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
179 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
3月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
175 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
91 3
|
3月前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
145 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型

热门文章

最新文章