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