tensorflow语法1

11 篇文章 0 订阅
4 篇文章 0 订阅

tf的图概念

g1 = tf.Graph()                         #tf里面有的首字母需要大写
with g1.as_default():
    c1 = tf.constant(1.0)  #常量1.0赋给c1,此时直接打印是打印不出来的嗯,此时需要run来运行一波
    with tf.Session() as sess:#创建会话
        print(sess.run(c1))                             #程序真正的执行的地方,从内存里面去找#输出 :1.0

g2 = tf.Graph()
with g2.as_default():
    c2 = tf.constant(1.0)
    with tf.Session() as sess2:
        result = sess2.run(c2)
        print(result)

##简写
c3 = tf.constant(3.0)
with tf.Session() as sess:
    print(sess.run(c3))

3种内存类型:


#1.常量constant,这种存于内存里面的常量不可以变
#2.Variable,变量,这种存于内存里面的值可以变化
c4 = tf.Variable(2.0)
#3.placehoder,申请了一块内存地址,里面不放实参,可以往里面填数据
c5 = tf.placeholder(tf.float32)
#总结: wx + b =  y中,w,x代表的是Variable,x,y代表的是placeholer

tf的交互式会话


sess = tf.InteractiveSession()              #打开了系统的交互式环境
x = tf.Variable([1.0,2.0])
x.initializer.run()                         #初始化,如果使用了tf中的变量,一定要对其进行初始化(这是在交互式环境中的形式),初始化的是这张图上的所有的变量
# with tf.Session() as sess:                            #这是在非交互环境中初始化,初始化后才能run
#     sess.run(tf.global_variables_initializer())
#     sess.run()
a = tf.constant([3.0,3.0])
sub = tf.subtract(x,a)
# print(sess.run())
print(sub.eval())             #[-2,-1]

一个小例子


a = tf.constant(3)
sess = tf.Session()
# print(a)                                                #打印出来的而是一个张量,Tensor("Const_2:0", shape=(), dtype=int32)
# print(sess.run(a))                                      #3,这样写的话有个缺点就是不释放内存,
with tf.Session() as sess:
    print(sess.run(a))                                  #这种写法是释放内存的

更新函数

使用变量创建一个简单的计数器

print('这是计数器')
state = tf.Variable(0,name = 'counter')
one = tf.constant(1)
new_value = tf.add(state,one)
update = tf.assign(state,new_value)

init_op = tf.global_variables_initializer()
with tf.Session() as sess:

    sess.run(init_op)                                #完成了变量的初始化
    for _  in range(3):
        sess.run(update)
        print(sess.run(state))                      #整个流程:第一次循环:run updata--->assign---> new_value--->stata,one 皆是已知
                                                    ##打印出来:1,2,3

矩阵乘法

num1 = tf.constant([[1,2,3],
                    [4,5,6]])
num2 = tf.constant([[1,2],
                    [3,4],
                    [5,6]])
num3 = tf.constant([[1,2,3],
                    [4,5,6]])
c = tf.matmul(num1,num2)                                #matmul为矩阵相乘
c1 = tf.multiply(num1,num3)                             #两个数据类型相同的数相乘
with tf.Session() as sess:
    print(sess.run(c))                                  #注:第一个矩阵的列数和第二个矩阵的行数一定要相等
    print(sess.run(c1))                                # [[ 1  4  9]
                                                        #[16 25 36]]

字符转数值


a = tf.constant('10',tf.string,name = 'a_const')           #可以是字符也可以是数字,但是它是不变的
b = tf.string_to_number(a,out_type=tf.float64,name='str_2_double')
c = tf.to_double(5.0,name='to_double')
with tf.Session() as sess:
    # tf.global_variables_initializer()     #如果没有变量,这里没有必要写,有变量就必须写
    print(sess.run(tf.add(b,c)))            #15

构建GPU的相关参数(如何调用和优化GPU)

如何分配和控制PU

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = 0.33)#这行表示只是使用GPU的三分之一,比如集群上面有10个GPU,可以只使用三分之一
with tf.Session(config=tf.ConfigProto(gpu_options = gpu_options)) as sess:
    # tf.Session(target='192.168.0.100:5321',graph=None,config=None)      #target:表示吧参数发送到哪一台主机上面去运行;graph:图优化;
    pass

进程安需要使用GPU资源

config = tf.ConfigProto()           #tf.Session()类的实例化
config.gpu_options.allow_growth = True   #把类的属性进行赋值

with tf.Session(config=config) as sess:                             #打个比方:每个显存6G,总共10台,总共60G;按照1/3就会渠道20G,但是到30G才会到负载均衡,此时会自动加到30G
    pass

tf日志功能的开启(经常用)和图优化(用的少)

optimizer = tf.OptimizerOptions(do_common_subexpression_elimination = True)
graph_options = tf.GraphOptions(optimizer_options = optimizer)

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = 0.33)
with tf.Session(config=tf.ConfigProto(graph_options = graph_options,gpu_options = gpu_options,log_device_placement = True,allow_soft_placement = True)) as sess:
    #allow_soft_placement:表示如果GPU不够大,会默认跑到cpu上面去跑
    pass

总的代码

import tensorflow as tf
import numpy as np



##tf的图概念
g1 = tf.Graph()                         #tf里面有的首字母需要大写
with g1.as_default():
    c1 = tf.constant(1.0)  #常量1.0赋给c1,此时直接打印是打印不出来的嗯,此时需要run来运行一波
    with tf.Session() as sess:#创建会话
        print(sess.run(c1))                             #程序真正的执行的地方,从内存里面去找#输出 :1.0





g2 = tf.Graph()
with g2.as_default():
    c2 = tf.constant(1.0)
    with tf.Session() as sess2:
        result = sess2.run(c2)
        print(result)

##简写
c3 = tf.constant(3.0)
with tf.Session() as sess:
    print(sess.run(c3))


##3种内存类型:

#1.常量constant,这种存于内存里面的常量不可以变
#2.Variable,变量,这种存于内存里面的值可以变化
c4 = tf.Variable(2.0)
#3.placehoder,申请了一块内存地址,里面不放实参,可以往里面填数据
c5 = tf.placeholder(tf.float32)
#总结: wx + b =  y中,w,x代表的是Variable,x,y代表的是placeholer


##tf的交互式会话

sess = tf.InteractiveSession()              #打开了系统的交互式环境
x = tf.Variable([1.0,2.0])
x.initializer.run()                         #初始化,如果使用了tf中的变量,一定要对其进行初始化(这是在交互式环境中的形式),初始化的是这张图上的所有的变量
# with tf.Session() as sess:                            #这是在非交互环境中初始化,初始化后才能run
#     sess.run(tf.global_variables_initializer())
#     sess.run()
a = tf.constant([3.0,3.0])
sub = tf.subtract(x,a)
# print(sess.run())
print(sub.eval())                                       #[-2. -1.]



##一个小例子

a = tf.constant(3)
sess = tf.Session()
# print(a)                                                #打印出来的而是一个张量,Tensor("Const_2:0", shape=(), dtype=int32)
# print(sess.run(a))                                      #3,这样写的话有个缺点就是不释放内存,
with tf.Session() as sess:
    print(sess.run(a))                                  #这种写法是释放内存的





##更新函数

##使用变量创建一个简单的计数器
print('这是计数器')
state = tf.Variable(0,name = 'counter')
one = tf.constant(1)
new_value = tf.add(state,one)
update = tf.assign(state,new_value)

init_op = tf.global_variables_initializer()
with tf.Session() as sess:

    sess.run(init_op)                                #完成了变量的初始化
    for _  in range(3):
        sess.run(update)
        print(sess.run(state))                      #整个流程:第一次循环:run updata--->assign---> new_value--->stata,one 皆是已知
                                                    ##打印出来:1,2,3

print('矩阵乘法')
num1 = tf.constant([[1,2,3],
                    [4,5,6]])
num2 = tf.constant([[1,2],
                    [3,4],
                    [5,6]])
num3 = tf.constant([[1,2,3],
                    [4,5,6]])
c = tf.matmul(num1,num2)                                #matmul为矩阵相乘
c1 = tf.multiply(num1,num3)                             #两个数据类型相同的数相乘
with tf.Session() as sess:
    print(sess.run(c))                                  #注:第一个矩阵的列数和第二个矩阵的行数一定要相等
    print(sess.run(c1))                                # [[ 1  4  9]
                                                        #[16 25 36]]

##字符转数值

a = tf.constant('10',tf.string,name = 'a_const')           #可以是字符也可以是数字,但是它是不变的
b = tf.string_to_number(a,out_type=tf.float64,name='str_2_double')
c = tf.to_double(5.0,name='to_double')
with tf.Session() as sess:
    # tf.global_variables_initializer()     #如果没有变量,这里没有必要写,有变量就必须写
    print(sess.run(tf.add(b,c)))            #15

##构建GPU的相关参数(如何调用和优化GPU)
### 如何分配和控制PU
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = 0.33)#这行表示只是使用GPU的三分之一,比如集群上面有10个GPU,可以只使用三分之一
with tf.Session(config=tf.ConfigProto(gpu_options = gpu_options)) as sess:
    # tf.Session(target='192.168.0.100:5321',graph=None,config=None)      #target:表示吧参数发送到哪一台主机上面去运行;graph:图优化;
    pass


### 进程安需要使用GPU资源
config = tf.ConfigProto()           #tf.Session()类的实例化
config.gpu_options.allow_growth = True   #把类的属性进行赋值

with tf.Session(config=config) as sess:                             #打个比方:每个显存6G,总共10台,总共60G;按照1/3就会渠道20G,但是到30G才会到负载均衡,此时会自动加到30G
    pass



### tf日志功能的开启(经常用)和图优化(用的少)
optimizer = tf.OptimizerOptions(do_common_subexpression_elimination = True)
graph_options = tf.GraphOptions(optimizer_options = optimizer)

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = 0.33)
with tf.Session(config=tf.ConfigProto(graph_options = graph_options,gpu_options = gpu_options,log_device_placement = True,allow_soft_placement = True)) as sess:
    #allow_soft_placement:表示如果GPU不够大,会默认跑到cpu上面去跑
    pass























  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值