tensorflow 中 inter_op 和 intra_op
[root@localhost custom-resnet-v2]# cat runme.sh
#python demo_slim.py -h
#python demo_slim.py --cpu_num 8 --inter_op_threads 1 --intra_op_threads 8 --dump_timeline True
# export KMP_AFFINITY=verbose,granularity=fine,proclist=[0,1,2,3],explicit
# numactl -C 0-3 python demo_slim.py --cpu_num 4 --inter_op_threads 1 --intra_op_threads 4 >& run1.log &
export OMP_NUM_THREADS=8
python demo_slim.py --cpu_num 8 --inter_op_threads 1 --intra_op_threads 8
[root@localhost custom-resnet-v2]# cat demo_slim.py
# coding: utf8
import os
import sys
import numpy as np
import tensorflow as tf
from tensorflow.python.client import timeline
import argparse
import time
def make_fake_input(batch_size, input_height, input_width, input_channel):
im = np.zeros((input_height,input_width,input_channel), np.uint8)
im[:,:,:] = 1
images = np.zeros((batch_size, input_height, input_width, input_channel), dtype=np.float32)
for i in xrange(batch_size):
images[i, 0:im.shape[0], 0:im.shape[1], :] = im
#channel_swap = (0, 3, 1, 2) # caffe
#images = np.transpose(images, channel_swap)
#cv2.imwrite("test.jpg", im)
return images
def get_parser():
"""
create a parser to parse argument "--cpu_num --inter_op_threads --intra_op_threads"
"""
parser = argparse.ArgumentParser(description="Specify tensorflow parallelism")
parser.add_argument("--cpu_num", dest="cpu_num", default=1, help="specify how many cpus to use.(default: 1)")
parser.add_argument("--inter_op_threads", dest="inter_op_threads", default=1, help="specify max inter op parallelism.(default: 1)")
parser.add_argument("--intra_op_threads", dest="intra_op_threads", default=1, help="specify max intra op parallelism.(default: 1)")
parser.add_argument("--dump_timeline", dest="dump_timeline", default=False, help="specify to dump timeline.(default: False)")
return parser
def main():
parser = get_parser()
args = parser.parse_args()
#parser.print_help()
cpu_num = int(args.cpu_num)
inter_op_threads = int(args.inter_op_threads)
intra_op_threads = int(args.intra_op_threads)
dump_timeline = bool(args.dump_timeline)
print("cpu_num: ", cpu_num)
print("inter_op_threads: ", inter_op_threads)
print("intra_op_threads: ", intra_op_threads)
print("dump_timeline: ", dump_timeline)
config = tf.ConfigProto(device_count={"CPU": cpu_num}, # limit to num_cpu_core CPU usage
inter_op_parallelism_threads = inter_op_threads,
intra_op_parallelism_threads = intra_op_threads,
log_device_placement=False)
with tf.Session(config = config) as sess:
imgs = make_fake_input(1, 224, 224, 3)
#init_start = time.time()
saver = tf.train.import_meta_graph("slim_model/slim_model.ckpt.meta")
saver.restore(sess, tf.train.latest_checkpoint("slim_model/"))
## Operations
#for op in tf.get_default_graph().get_operations():
# print(op.name)
# print(op.values())
graph = tf.get_default_graph()
input_data = graph.get_tensor_by_name("Placeholder:0")
fc6 = graph.get_tensor_by_name("resnet_v2/avg_fc_fc6_Conv2D/BiasAdd:0")
#init_end = time.time()
#print("initialization time: ", init_end-init_start, "s")
time_start = time.time()
for step in range(200):
if dump_timeline:
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()
result = sess.run(fc6, feed_dict={input_data:imgs}, options=run_options, run_metadata=run_metadata)
tm = timeline.Timeline(run_metadata.step_stats)
ctf = tm.generate_chrome_trace_format()
with open('timeline.json', 'w') as f:
f.write(ctf)
else:
result = sess.run(fc6, feed_dict={input_data:imgs})
print(result[0][0][0])
time_end = time.time()
avg_time = (time_end-time_start) * 1000 / 200;
print("AVG Time: ", avg_time, " ms")
return 0
if __name__ == "__main__":
sys.exit(main())
tensorflow 中 inter_op 和 intra_op的更多相关文章
- Tensorflow中的padding操作
转载请注明出处:http://www.cnblogs.com/willnote/p/6746668.html 图示说明 用一个3x3的网格在一个28x28的图像上做切片并移动 移动到边缘上的时候,如果 ...
- CNN中的卷积核及TensorFlow中卷积的各种实现
声明: 1. 我和每一个应该看这篇博文的人一样,都是初学者,都是小菜鸟,我发布博文只是希望加深学习印象并与大家讨论. 2. 我不确定的地方用了"应该"二字 首先,通俗说一下,CNN ...
- python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?
Python中的list/tuple,numpy中的ndarrray与tensorflow中的tensor. 用python中list/tuple理解,仅仅是从内存角度理解一个序列数据,而非数学中标量 ...
- [翻译] Tensorflow中name scope和variable scope的区别是什么
翻译自:https://stackoverflow.com/questions/35919020/whats-the-difference-of-name-scope-and-a-variable-s ...
- SSD:TensorFlow中的单次多重检测器
SSD:TensorFlow中的单次多重检测器 SSD Notebook 包含 SSD TensorFlow 的最小示例. 很快,就检测出了两个主要步骤:在图像上运行SSD网络,并使用通用算法(top ...
- 在 TensorFlow 中实现文本分类的卷积神经网络
在TensorFlow中实现文本分类的卷积神经网络 Github提供了完整的代码: https://github.com/dennybritz/cnn-text-classification-tf 在 ...
- [开发技巧]·TensorFlow中numpy与tensor数据相互转化
[开发技巧]·TensorFlow中numpy与tensor数据相互转化 个人主页–> https://xiaosongshine.github.io/ - 问题描述 在我们使用TensorFl ...
- TensorFlow中的变量和常量
1.TensorFlow中的变量和常量介绍 TensorFlow中的变量: import tensorflow as tf state = tf.Variable(0,name='counter') ...
- TensorFlow中的通信机制——Rendezvous(二)gRPC传输
背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 本篇是TensorFlow通信机制系列的第二篇文章,主要梳理使用gRPC网络传 ...
随机推荐
- java分页原理及分类
1.使用List接口最终subList()方法实现分页 2.直接使用数据库SQL语句实现分页 3.使用hibernate等框架实现跨数据库的分页 mybatis是面向SQL的,本质上和第二种分页方式相 ...
- WIN10下安装Linux子系统并安装xface4界面
WIN10下安装Linux子系统并安装xface4界面,使用win10自带的远程桌面工具登陆成功. 成功截图: 安装步骤 1.安装[适用于Linux的Windows子系统]组件 2.win10应用商店 ...
- 配置OpenLDAP,Java操作LDAP,DBC-LDAP进访问
LDAP快速入门 1. LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务.目录服务是一种特殊的 ...
- 【零售小程序】—— webview嵌套web端项目(原生开发支付功能)
index → index.wxml 套webwiew // url 活动url bindmessage 接收信息 <web-view src='{{url}}' bindmessage='m ...
- 在SOUI3.0中使用数值动画
上一篇介绍了插值动画,插值动画是直接作用于窗口对象的. 数值动画则可以作用于任何对象. SOUI内置了3种数值类型的动画,分别是SIntAnimator, SFloatAnimator, SColor ...
- 目标双站定位仿真C++代码
point-position2 初步完善版. 不再使用eigen库,行列式直接计算得出结果.判断共面异面分别处理. 先提取双站获得图像的匹配特征点,由双站位置信息解析目标位置. // point-po ...
- eclipse经常卡死
修改eclipse.ini 将启动内存,最小内存,最大内存都增大 eclipse是内存不够再去申请,直到有最大内存的 若上述方法不行则换eclipse eclipse有的版本是不稳定的,我用Ke ...
- 【mysql】查询最新的10条记录
实现查询最新10条数据方法: select * from 表名 order by id(主键) desc limit 10 参考文档: MySQL查询后10条数据并顺序输出
- Delphi中的进制转换
二进制转换 function binToDec(Value: string): integer; var str: string; i: integer; begin Str := UpperCase ...
- linux打包
1.打成tar包 sudo tar -zcf boot.tar /boot/ 2.打成zip包 sudo zip -r boot.zip ./*