最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Tensorflow實(shí)現(xiàn)AlexNet卷積神經(jīng)網(wǎng)絡(luò)及運(yùn)算時(shí)間評(píng)測(cè)

 更新時(shí)間:2018年05月24日 14:12:05   作者:Felaim  
這篇文章主要為大家詳細(xì)介紹了Tensorflow實(shí)現(xiàn)AlexNet卷積神經(jīng)網(wǎng)絡(luò)及運(yùn)算時(shí)間評(píng)測(cè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Tensorflow實(shí)現(xiàn)AlexNet卷積神經(jīng)網(wǎng)絡(luò)的具體實(shí)現(xiàn)代碼,供大家參考,具體內(nèi)容如下

之前已經(jīng)介紹過(guò)了AlexNet的網(wǎng)絡(luò)構(gòu)建了,這次主要不是為了訓(xùn)練數(shù)據(jù),而是為了對(duì)每個(gè)batch的前饋(Forward)和反饋(backward)的平均耗時(shí)進(jìn)行計(jì)算。在設(shè)計(jì)網(wǎng)絡(luò)的過(guò)程中,分類的結(jié)果很重要,但是運(yùn)算速率也相當(dāng)重要。尤其是在跟蹤(Tracking)的任務(wù)中,如果使用的網(wǎng)絡(luò)太深,那么也會(huì)導(dǎo)致實(shí)時(shí)性不好。

from datetime import datetime
import math
import time
import tensorflow as tf

batch_size = 32
num_batches = 100

def print_activations(t):
 print(t.op.name, '', t.get_shape().as_list())

def inference(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, parameters

def 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 = inference(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()

這里的代碼都是之前講過(guò)的,只是加了一個(gè)計(jì)算時(shí)間和現(xiàn)實(shí)網(wǎng)絡(luò)的卷積核的函數(shù),應(yīng)該很容易就看懂了,就不多贅述了。我在GTX TITAN X上前饋大概需要0.024s, 反饋大概需要0.079s。哈哈,自己動(dòng)手試一試哦。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python批量爬取下載抖音視頻

    python批量爬取下載抖音視頻

    這篇文章主要為大家詳細(xì)介紹了python批量爬取下載抖音視頻,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python使用lambda拋出異常實(shí)現(xiàn)方法解析

    Python使用lambda拋出異常實(shí)現(xiàn)方法解析

    這篇文章主要介紹了Python使用lambda拋出異常實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 神經(jīng)網(wǎng)絡(luò)算法RNN實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)

    神經(jīng)網(wǎng)絡(luò)算法RNN實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)

    這篇文章主要為大家介紹了神經(jīng)網(wǎng)絡(luò)算法RNN實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 進(jìn)一步探究Python的裝飾器的運(yùn)用

    進(jìn)一步探究Python的裝飾器的運(yùn)用

    這篇文章主要介紹了更為深入的Python的裝飾器的運(yùn)用,Python的裝飾器是Python學(xué)習(xí)進(jìn)階當(dāng)中的重要知識(shí)點(diǎn),需要的朋友可以參考下
    2015-05-05
  • Python中的asyncio代碼詳解

    Python中的asyncio代碼詳解

    asyncio 是用來(lái)編寫 并發(fā) 代碼的庫(kù),使用 async/await 語(yǔ)法。 asyncio 被用作多個(gè)提供高性能 Python 異步框架的基礎(chǔ),包括網(wǎng)絡(luò)和網(wǎng)站服務(wù),數(shù)據(jù)庫(kù)連接庫(kù),分布式任務(wù)隊(duì)列等等。這篇文章主要介紹了Python中的asyncio,需要的朋友可以參考下
    2019-06-06
  • django中間件及自定義中間件的實(shí)現(xiàn)方法

    django中間件及自定義中間件的實(shí)現(xiàn)方法

    中間件就是在目標(biāo)和結(jié)果之間進(jìn)行的額外處理過(guò)程,在Django中就是request和response之間進(jìn)行的處理,相對(duì)來(lái)說(shuō)實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,這篇文章主要介紹了django中間件以及自定義中間件?,需要的朋友可以參考下
    2023-06-06
  • PyTorch中的squeeze()和unsqueeze()解析與應(yīng)用案例

    PyTorch中的squeeze()和unsqueeze()解析與應(yīng)用案例

    這篇文章主要介紹了PyTorch中的squeeze()和unsqueeze()解析與應(yīng)用案例,文章內(nèi)容介紹詳細(xì),需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-03-03
  • Python實(shí)現(xiàn)的FTP通信客戶端與服務(wù)器端功能示例

    Python實(shí)現(xiàn)的FTP通信客戶端與服務(wù)器端功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的FTP通信客戶端與服務(wù)器端功能,涉及Python基于socket的端口監(jiān)聽、文件傳輸?shù)认嚓P(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • python3生成隨機(jī)數(shù)實(shí)例

    python3生成隨機(jī)數(shù)實(shí)例

    這篇文章主要介紹了python3生成隨機(jī)數(shù)的用法,實(shí)例講述了基于Python的隨機(jī)數(shù)的小程序,需要的朋友可以參考下
    2014-10-10
  • 關(guān)于python selenium 運(yùn)行時(shí)彈出窗口問(wèn)題

    關(guān)于python selenium 運(yùn)行時(shí)彈出窗口問(wèn)題

    最近在做一個(gè)網(wǎng)頁(yè)代填項(xiàng)目,用到了python的selenium知識(shí),經(jīng)過(guò)了各種嘗試與搜索最后終算是較完美的解決了,下面小編給大家?guī)?lái)了python selenium 運(yùn)行時(shí)彈出窗口問(wèn)題,感興趣的朋友一起看看吧
    2021-11-11

最新評(píng)論

石首市| 西乌| 牙克石市| 张北县| 普安县| 南通市| 长寿区| 文山县| 多伦县| 庆安县| 泊头市| 绥化市| 从化市| 屯门区| 清远市| 扎兰屯市| 武功县| 四平市| 同德县| 永宁县| 溆浦县| 石泉县| 微山县| 四子王旗| 岑溪市| 祁门县| 崇礼县| 丽江市| 闽清县| 离岛区| 江津市| 石家庄市| 泽普县| 西青区| 文水县| 阿坝县| 灌阳县| 邹城市| 镇巴县| 抚松县| 无锡市|