tensorflow33《TensorFlow实战》笔记-06-01 TensorFlow实现AlexNet code
来源:互联网 发布:编程语言收入排行榜 编辑:程序博客网 时间:2024/05/16 13:45
# 《TensorFlow实战》06 TensorFlow实现经典卷积神经网络# win10 Tensorflow1.0.1 python3.5.3# CUDA v8.0 cudnn-8.0-windows10-x64-v5.1# filename:sz06.01.py # TensorFlow实现AlexNet# 参考内容# https://github.com/tensorflow/models/blob/master/tutorials/image/alexnet/alexnet_benchmark.py# https://github.com/tensorflow/models.git# tensorflow_models\tutorials\image\alexnet\alexnet_benchmark.pyfrom datetime import datetimeimport mathimport timeimport tensorflow as tfbatch_size = 32num_batches = 100def print_activations(t): print(t.op.name, ' ', t.get_shape().as_list())def infrence(images): parameters = [] with tf.name_scope('conv1') as scope: kernel = tf.Variable(tf.truncated_normal([11, 11, 3, 64], dtype = tf.float32, stddev = 1e-1), name = 'weights') conv = tf.nn.conv2d(images, kernel, [1, 4, 4, 1], padding = 'SAME') biases = tf.Variable(tf.constant(0.0, shape = [64], dtype = tf.float32), trainable = True, name = 'biases') bias = tf.nn.bias_add(conv, biases) conv1 = tf.nn.relu(bias, name = scope) print_activations(conv1) parameters = [kernel, biases] lrn1 = tf.nn.lrn(conv1, 4, bias = 1.0, alpha = 0.001/9, beta = 0.75, name = 'lrn1') pool1 = tf.nn.max_pool(lrn1, ksize = [1, 3, 3, 1], strides = [1, 2, 2, 1], padding = 'VALID', name = 'pool1') print_activations(pool1) with tf.name_scope('conv2') as scope: kernel = tf.Variable(tf.truncated_normal([5, 5, 64, 192], dtype = tf.float32, stddev = 1e-1), name = 'weights') conv = tf.nn.conv2d(pool1, kernel, [1, 1, 1, 1], padding = 'SAME') biases = tf.Variable(tf.constant(0.0, shape=[192], dtype = tf.float32), trainable = True, name = 'biases') bias = tf.nn.bias_add(conv, biases) conv2 = tf.nn.relu(bias, name=scope) parameters += [kernel, biases] print_activations(conv2) lrn2 = tf.nn.lrn(conv2, 4, bias=1.0, alpha = 0.001/9, beta = 0.75, name = 'lrn2') pool2 = tf.nn.max_pool(lrn2, ksize = [1, 3, 3, 1], strides = [1, 2, 2, 1], padding = 'VALID', name = 'pool2') print_activations(pool2) with tf.name_scope('conv3') as scope: kernel = tf.Variable(tf.truncated_normal([3, 3, 192, 384], dtype = tf.float32, stddev = 1e-1), name = 'weights') conv = tf.nn.conv2d(pool2, kernel, [1, 1, 1, 1], padding = 'SAME') biases = tf.Variable(tf.constant(0.0, shape=[384], dtype = tf.float32), trainable=True, name = 'biases') bias = tf.nn.bias_add(conv, biases) conv3 = tf.nn.relu(bias, name = scope) parameters += [kernel, biases] print_activations(conv3) with tf.name_scope('conv4') as scope: kernel = tf.Variable(tf.truncated_normal([3, 3, 384, 256], dtype = tf.float32, stddev = 1e-1), name = 'weights') conv = tf.nn.conv2d(conv3, kernel, [1, 1, 1, 1], padding='SAME') biases = tf.Variable(tf.constant(0.0, shape=[256], dtype = tf.float32), trainable = True, name = 'biases') bias = tf.nn.bias_add(conv, biases) conv4 = tf.nn.relu(bias, name = scope) parameters += [kernel, biases] print_activations(conv4) with tf.name_scope('conv5') as scope: kernel = tf.Variable(tf.truncated_normal([3, 3, 256, 256], dtype = tf.float32, stddev=1e-1), name = 'weights') conv = tf.nn.conv2d(conv4, kernel, [1, 1, 1, 1], padding='SAME') biases = tf.Variable(tf.constant(0.0, shape=[256], dtype=tf.float32), trainable=True, name='biases') bias = tf.nn.bias_add(conv, biases) conv5 = tf.nn.relu(bias, name=scope) parameters += [kernel, biases] print_activations(conv5) pool5 =tf.nn.max_pool(conv5, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding = 'VALID', name = 'pool5') print_activations(pool5) return pool5, parametersdef time_tensorflow_run(session, target, info_string): num_steps_burn_in = 10 total_duration = 0.0 total_duration_squared = 0.0 for i in range(num_batches + num_steps_burn_in): start_time = time.time() _ = session.run(target) duration = time.time() - start_time if i >= num_steps_burn_in: if not i %10: print('%s: step %d, duration = %.3f' %(datetime.now(), i - num_steps_burn_in, duration)) total_duration += duration total_duration_squared += duration * duration mn = total_duration / num_batches vr = total_duration_squared / num_batches - mn * mn sd = math.sqrt(vr) print('%s: %s across %d steps, %.3f +/- %.3f sec / batch' %(datetime.now(), info_string, num_batches, mn, sd))def run_benchmark(): with tf.Graph().as_default(): image_size = 224 images = tf.Variable(tf.random_normal([batch_size, image_size, image_size, 3], dtype = tf.float32, stddev = 1e-1)) pool5, parameters = infrence(images) init = tf.global_variables_initializer() sess = tf.Session() sess.run(init) time_tensorflow_run(sess, pool5, "Forward") objective = tf.nn.l2_loss(pool5) grad = tf.gradients(objective, parameters) time_tensorflow_run(sess, grad, "Forward-backward")run_benchmark()'''conv1 [32, 56, 56, 64]pool1 [32, 27, 27, 64]conv2 [32, 27, 27, 192]pool2 [32, 13, 13, 192]conv3 [32, 13, 13, 384]conv4 [32, 13, 13, 256]conv5 [32, 13, 13, 256]pool5 [32, 6, 6, 256]2017-04-13 16:28:25.177867: step 0, duration = 0.0592017-04-13 16:28:25.769441: step 10, duration = 0.0592017-04-13 16:28:26.361012: step 20, duration = 0.0592017-04-13 16:28:26.951583: step 30, duration = 0.0592017-04-13 16:28:27.543156: step 40, duration = 0.0592017-04-13 16:28:28.131719: step 50, duration = 0.0592017-04-13 16:28:28.724311: step 60, duration = 0.0592017-04-13 16:28:29.314866: step 70, duration = 0.0592017-04-13 16:28:29.905437: step 80, duration = 0.0592017-04-13 16:28:30.496006: step 90, duration = 0.0592017-04-13 16:28:31.033435: Forward across 100 steps, 0.059 +/- 0.001 sec / batch2017-04-13 16:28:33.830872: step 0, duration = 0.2042017-04-13 16:28:35.877314: step 10, duration = 0.2032017-04-13 16:28:37.911570: step 20, duration = 0.2042017-04-13 16:28:39.954005: step 30, duration = 0.2052017-04-13 16:28:41.987445: step 40, duration = 0.2052017-04-13 16:28:44.026828: step 50, duration = 0.2032017-04-13 16:28:46.063242: step 60, duration = 0.2042017-04-13 16:28:48.103667: step 70, duration = 0.2042017-04-13 16:28:50.141083: step 80, duration = 0.2022017-04-13 16:28:52.172485: step 90, duration = 0.2032017-04-13 16:28:54.002348: Forward-backward across 100 steps, 0.204 +/- 0.001 sec / batch'''
0 0
- tensorflow33《TensorFlow实战》笔记-06-01 TensorFlow实现AlexNet code
- tensorflow34《TensorFlow实战》笔记-06-02 TensorFlow实现VGGNet code
- tensorflow35《TensorFlow实战》笔记-06-03 TensorFlow实现 GoogleInceptionV3 code
- tensorflow36《TensorFlow实战》笔记-06-04 TensorFlow实现 ResNet code
- tensorflow37《TensorFlow实战》笔记-07-01 TensorFlow实现Word2Vec code
- tensorflow32《TensorFlow实战》笔记-05 TensorFlow实现卷积神经网络 code
- Tensorflow实战学习(三十)【实现AlexNet】
- tensorflow40《TensorFlow实战》笔记-08-01 TensorFlow实现深度强化学习-策略网络 code
- TensorFlow学习笔记(10)--实现AlexNet
- tensorflow-Alexnet学习笔记
- AlexNet 的tensorflow 实现
- tensorflow实现AlexNet
- TensorFlow-7实现AlexNet
- tensorflow实现AlexNet
- Tensorflow实例:实现AlexNet
- tensorflow实现AlexNet
- tensorflow31《TensorFlow实战》笔记-04 TensorFlow实现自编码器及多层感知机 code
- tensorflow38《TensorFlow实战》笔记-07-02 TensorFlow实现基于LSTM的语言模型 code
- 找工作绕不过之JVM内存分配
- 基于Servlet的技术问答网站系统实现(附源码)
- CSU
- hexo安装总结
- HTML table、form表单标签的介绍
- tensorflow33《TensorFlow实战》笔记-06-01 TensorFlow实现AlexNet code
- MyBatis中CaChe标签的参数
- Ecshop模板开发(二十五):顶部导航、注册、登录、退出等功能实现
- 并发式IO的解决方案---非阻塞式、多路复用和异步通知(异步IO)
- stm32工程需要哪些文件
- 13年山东省赛——The number of steps
- jQuery检查DOM元素是否绑定某些事件
- strspn()函数
- TLD算法