成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

GTAV智能駕駛源碼詳解(二)——Train the AlexNet

jayzou / 1738人閱讀

摘要:智能駕駛源碼詳解二模型簡(jiǎn)介本使用進(jìn)行圖像分類前進(jìn)左轉(zhuǎn)右轉(zhuǎn)。其性能超群,在年圖像識(shí)別比賽上展露頭角,是當(dāng)時(shí)的冠軍,由團(tuán)隊(duì)開(kāi)發(fā),領(lǐng)頭人物為教父。

GTAV智能駕駛源碼詳解(二)——Train the AlexNet 模型簡(jiǎn)介:

本AI(ScooterV2)使用AlexNet進(jìn)行圖像分類(前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn))。
Alexnet是一個(gè)經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò),有5個(gè)卷積層,其后為3個(gè)全連接層,最后的輸出激活函數(shù)為分類函數(shù)softmax。其性能超群,在2012年ImageNet圖像識(shí)別比賽上展露頭角,是當(dāng)時(shí)的冠軍Model,由SuperVision團(tuán)隊(duì)開(kāi)發(fā),領(lǐng)頭人物為AI教父Jeff Hinton。

網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示:


圖1 AlexNet示意圖

定義模型:
#導(dǎo)入依賴庫(kù)(tflearn backended)
import tflearn
from tflearn.layers.conv import conv_2d, max_pool_2d
from tflearn.layers.core import input_data, dropout, fully_connected
from tflearn.layers.estimator import regression
from tflearn.layers.normalization import local_response_normalization
from collections import Counter
from numpy.random import shuffle
import numpy as np
import numpy as np
import pandas as pd

#定義AlexNet模型
def alexnet(width, height, lr):
    network = input_data(shape=[None, width, height, 1], name="input")
    network = conv_2d(network, 96, 11, strides=4, activation="relu")
    network = max_pool_2d(network, 3, strides=2)
    network = local_response_normalization(network)
    network = conv_2d(network, 256, 5, activation="relu")
    network = max_pool_2d(network, 3, strides=2)
    network = local_response_normalization(network)
    network = conv_2d(network, 384, 3, activation="relu")
    network = conv_2d(network, 384, 3, activation="relu")
    network = conv_2d(network, 256, 3, activation="relu")
    network = max_pool_2d(network, 3, strides=2)
    network = local_response_normalization(network)
    network = fully_connected(network, 4096, activation="tanh")
    network = dropout(network, 0.5)
    network = fully_connected(network, 4096, activation="tanh")
    network = dropout(network, 0.5)
    network = fully_connected(network, 3, activation="softmax")
    network = regression(network, 
                         optimizer="momentum",
                         loss="categorical_crossentropy",
                         learning_rate=lr, 
                         name="targets")

    model = tflearn.DNN(network, 
                        checkpoint_path="model_alexnet",
                        max_checkpoints=1, 
                        tensorboard_verbose=2, 
                        tensorboard_dir="log")

    return model
AlexNet注釋:

模型傳入?yún)?shù)為3個(gè):圖像的長(zhǎng)度、寬度和梯度下降學(xué)習(xí)率;

模型的Input Layer接受數(shù)據(jù)集中的圖片作為輸入,圖像長(zhǎng)度160,高度為90,channel數(shù)量為三,輸入數(shù)據(jù)為m*160*90*3的張量,m為一次英處理的樣本數(shù)量;

Input Layer后跟著第一個(gè)卷積層,卷積核數(shù)量為96,卷積核尺寸為11*11,卷積步長(zhǎng)為4,該卷積層使用ReLu作為激活函數(shù);

第一個(gè)卷積層后跟著第一個(gè)池化層,池化類型為MaxPooling,池化尺寸3*3,池化步長(zhǎng)為2;

池化之后的結(jié)果通向LRN層,jeff hinton的標(biāo)注為模擬大腦的側(cè)向抑制,對(duì)張量中的每個(gè)元素都用它和它相鄰feature map的元素的平均值代替(雖然好像并沒(méi)有什么用),具體原理如圖2;

之后是AlexNet的第二個(gè)卷積層,卷積核數(shù)量為256,卷積核尺寸為5*5,卷積步長(zhǎng)默認(rèn)為1,該卷積層依然使用ReLu作為激活函數(shù);

之后的池化層依舊為MaxPooling,池化尺寸3*3,池化步長(zhǎng)為2;

第二個(gè)LRN層,作用同上;

之后是三個(gè)接連的卷積層,卷積核數(shù)量依次為384、384、256,卷積核尺寸都為3*3,都用ReLu作為激活函數(shù);

經(jīng)過(guò)尺寸為3*3,步長(zhǎng)為2的池化層和一個(gè)LRN層之后,卷積網(wǎng)絡(luò)部分結(jié)束,通向3個(gè)全連接層。前兩個(gè)全連接層都向后輸出長(zhǎng)度為4096的向量,使用tanh作為非線性激活函數(shù),都有50%的dropout概率,神經(jīng)元有二分之一的可能性被deactivate;第三個(gè)全連接層為輸出層,輸出3維向量,并使用softmax作為分類的激活函數(shù)。

每一次前向傳播完成后,使用交叉熵cross_entropy作為卷積網(wǎng)絡(luò)的loss函數(shù);整個(gè)神經(jīng)網(wǎng)絡(luò)使用momentum作為優(yōu)化(梯度下降加上momentum過(guò)濾由于lr過(guò)高引起的振蕩),個(gè)人覺(jué)得使用Adam也許效果會(huì)更好,收斂會(huì)更快。


圖2 Local_Response_Normolization示意圖

卷積網(wǎng)絡(luò)的訓(xùn)練:
WIDTH = 160
HEIGHT = 90
LR = 1e-3
EPOCHS = 10
MODEL_NAME = "scooterv2.model"
model = alexnet(WIDTH, HEIGHT, LR)

train_data = np.load("training_data_after_shuffle.npy")
train = train_data[:-1000]
test = train_data[-1000:]

X = np.array([i[0] for i in train]).reshape(-1,WIDTH,HEIGHT,1)
Y = [i[1] for i in train]

test_x = np.array([i[0] for i in test]).reshape(-1,WIDTH,HEIGHT,1)
test_y = [i[1] for i in test]

for index in range(1,200):

    
    model.fit({"input": X}, 
              {"targets": Y}, 
              n_epoch=EPOCHS, 
              validation_set=({"input": test_x}, {"targets": test_y}), 
              snapshot_step=500, 
              show_metric=True, 
              run_id=MODEL_NAME)
    model.save(MODEL_NAME)

學(xué)習(xí)率為0.001,for循環(huán)中每一次迭代訓(xùn)練的epoch數(shù)量為10,mini_batch的樣本數(shù)量使用默認(rèn)值64;數(shù)據(jù)集的后1000個(gè)作為validation set,剩余的都作為測(cè)試集使用。
跑一次一共訓(xùn)練了200*10=2000次,但實(shí)際上參數(shù)更新了20萬(wàn)次,每一次mini_batch都更新一次參數(shù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44463.html

相關(guān)文章

  • GTAV智能駕駛源碼詳解(一)——制作數(shù)據(jù)集

    摘要:本暫且稱之為借鑒了美國(guó)死宅的方案,只使用截圖捕捉的畫面以模擬攝像頭數(shù)據(jù)作為的輸入,并沒(méi)有真實(shí)的智能駕駛所涉及的傳感器與雷達(dá)數(shù)據(jù)。在游戲中人為駕駛小時(shí),將每一幀圖片以及其所對(duì)應(yīng)的操作向量記錄在數(shù)據(jù)集張量中。每幀保存一次數(shù)據(jù)集設(shè)置為暫停鍵。 項(xiàng)目介紹 場(chǎng)景足夠豐富,操作足夠簡(jiǎn)單,有大量的交通工具和駕駛視角可供選擇,游戲《Grand Theft Auto 5》是一個(gè)相對(duì)廉價(jià)且適合初級(jí)人工智能...

    lookSomeone 評(píng)論0 收藏0
  • 從DensNet到CliqueNet,解讀北大在卷積架構(gòu)上的探索

    摘要:首先第一種當(dāng)然是在年提出的,它奠定了整個(gè)卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)。其中局部感受野表示卷積核只關(guān)注圖像的局部特征,而權(quán)重共享表示一個(gè)卷積核在整張圖像上都使用相同的權(quán)值,最后的子采樣即我們常用的池化操作,它可以精煉抽取的特征。 近日,微軟亞洲研究院主辦了一場(chǎng)關(guān)于 CVPR 2018 中國(guó)論文分享會(huì),機(jī)器之心在分享會(huì)中發(fā)現(xiàn)了一篇非常有意思的論文,它介紹了一種新型卷積網(wǎng)絡(luò)架構(gòu),并且相比于 DenseNet...

    Jackwoo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<