日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

給大家推薦一名網(wǎng)友開(kāi)源的Python庫(kù)

zhKF_jqr_AI ? 來(lái)源:未知 ? 作者:李倩 ? 2018-11-05 15:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

編者按:近年來(lái),雖然關(guān)于強(qiáng)化學(xué)習(xí)進(jìn)展的新聞屢見(jiàn)報(bào)端,對(duì)強(qiáng)化學(xué)習(xí)感興趣的人也很多,但對(duì)普通學(xué)習(xí)者來(lái)說(shuō),真正做一個(gè)自己感興趣的強(qiáng)化學(xué)習(xí)項(xiàng)目還是太麻煩了。今天論智給大家推薦的是一名網(wǎng)友開(kāi)源的Python庫(kù),它提供了一個(gè)可以玩任何舊版街機(jī)游戲的API,操作方式非常親民。

這是一個(gè)允許你在幾乎任何街機(jī)游戲中訓(xùn)練你的強(qiáng)化學(xué)習(xí)算法的Python庫(kù),它目前在Linux系統(tǒng)上可用。通過(guò)這個(gè)工具包,你可以定制算法逐步完成游戲過(guò)程,同時(shí)接收每一幀的數(shù)據(jù)和內(nèi)部存儲(chǔ)器地址值以跟蹤游戲狀態(tài),以及發(fā)送與游戲交互的動(dòng)作。

安裝

GitHub地址:github.com/M-J-Murray/MAMEToolkit/blob/master/README.md

你可以用pip安裝這個(gè)庫(kù),只需運(yùn)行以下命令:

pip install MAMEToolkit

演示示例:街霸

在街機(jī)愛(ài)好者心中,街霸是史上最經(jīng)典的游戲之一?,F(xiàn)在工具包內(nèi)包含的街霸版本是街頭霸王3:三度沖擊(Japan 990608, NO CD),我們以此為例,用以下代碼寫(xiě)一個(gè)隨機(jī)智能體:

import random

fromMAMEToolkit.sf_environment importEnvironment

roms_path = "roms/"

env = Environment("env1", roms_path)

env.start()

whileTrue:

move_action = random.randint(0, 8)

attack_action = random.randint(0, 9)

frames, reward, round_done, stage_done, game_done = env.step(move_action, attack_action)

if game_done:

env.new_game()

elif stage_done:

env.next_stage()

elif round_done:

env.next_round()

這個(gè)工具包還支持hogwild!訓(xùn)練:

什么是hogwild!?Niu等人引入了一個(gè)叫做 Hogwild! 的更新策略,可以使 SGD 可以在多 CPU 上并行更新。處理器在無(wú)需對(duì)參數(shù)加鎖的情況下就可以訪問(wèn)共享內(nèi)存。但僅在輸入的是稀疏數(shù)據(jù)時(shí)才有效,因?yàn)槊看胃聝H修改所有參數(shù)的一小部分。他們展示了在這種情況下,更新策略幾乎可以達(dá)到一個(gè)最優(yōu)的收斂率,因?yàn)樘幚砥鞑惶赡芨采w掉有用的信息。

from threading importThread

import random

fromMAMEToolkit.sf_environment importEnvironment

def run_env(env):

env.start()

whileTrue:

move_action = random.randint(0, 8)

attack_action = random.randint(0, 9)

frames, reward, round_done, stage_done, game_done = env.step(move_action, attack_action)

if game_done:

env.new_game()

elif stage_done:

env.next_stage()

elif round_done:

env.next_round()

def main():

workers = 8

# Environments must be created outside of the threads

roms_path = "roms/"

envs = [Environment(f"env{i}", roms_path) for i in range(workers)]

threads = [Thread(target=run_env, args=(envs[i], )) for i in range(workers)]

[thread.start() for thread in threads]

建立自己的游戲環(huán)境

這個(gè)工具包之所以易于上手,是因?yàn)樗?a href="http://m.sdkjxy.cn/analog/" target="_blank">模擬器本身不需要太多交互,只需注意兩點(diǎn)——一是查找你關(guān)注的內(nèi)部狀態(tài)相關(guān)聯(lián)的內(nèi)存地址值,二是用選取的環(huán)境跟蹤狀態(tài)。你可以用MAME Cheat Debugger,它會(huì)反饋游戲的內(nèi)存地址值如何隨時(shí)間變化。如果要?jiǎng)?chuàng)建游戲模擬,你得先獲得正在模擬的游戲的ROM,并知道MAME使用的游戲ID,比如街霸的ID是'sfiii3n'。

游戲ID

你可以通過(guò)運(yùn)行以下代碼找到游戲的ID:

fromMAMEToolkit.emulator importEmulator

emulator = Emulator("env1", "", "", memory_addresses)

這個(gè)命令會(huì)打開(kāi)MAME仿真器。你可以搜索游戲列表以找到想要的游戲,游戲的ID位于游戲標(biāo)題末尾的括號(hào)中。

內(nèi)存地址

如果獲得了ID,也有了想要跟蹤的內(nèi)存地址,你可以開(kāi)始模擬:

fromMAMEToolkit.emulator importEmulator

fromMAMEToolkit.emulator importAddress

roms_path = "roms/"

game_id = "sfiii3n"

memory_addresses = {

"fighting": Address('0x0200EE44', 'u8'),

"winsP1": Address('0x02011383', 'u8'),

"winsP2": Address('0x02011385', 'u8'),

"healthP1": Address('0x02068D0B', 's8'),

"healthP2": Address('0x020691A3', 's8')

}

emulator = Emulator("env1", roms_path, "sfiii3n", memory_addresses)

這會(huì)啟動(dòng)仿真器,并在工具包連接到模擬器進(jìn)程時(shí)暫停。

分步運(yùn)行仿真器

連接工具箱后,你可以分步運(yùn)行仿真器:

data = emulator.step([])

frame = data["frame"]

is_fighting = data["fighting"]

player1_wins = data["winsP1"]

player2_wins = data["winsP2"]

player1_health = data["healthP1"]

player2_health = data["healthP2"]

step函數(shù)會(huì)把幀數(shù)據(jù)作為NumPy矩陣返回,同時(shí),它也會(huì)返回該時(shí)間步長(zhǎng)的所有內(nèi)存地址整數(shù)值。

如果要向仿真器輸入動(dòng)作,你還需要確定游戲支持的輸入端口和字段。比如玩街霸需要先投幣,這個(gè)代碼是:

fromMAMEToolkit.emulator importAction

insert_coin = Action(':INPUTS', 'Coin 1')

data = emulator.step([insert_coin])

要確定哪些端口可用,請(qǐng)使用list actions命令:

fromMAMEToolkit.emulator import list_actions

roms_path = "roms/"

game_id = "sfiii3n"

print(list_actions(roms_path, game_id))

下面這個(gè)返回的列表就包含街霸環(huán)境中可用于向步驟函數(shù)發(fā)送動(dòng)作的所有端口和字段:

[

{'port': ':scsi:1:cdrom:SCSI_ID', 'field': 'SCSI ID'},

{'port': ':INPUTS', 'field': 'P2 Jab Punch'},

{'port': ':INPUTS', 'field': 'P1 Left'},

{'port': ':INPUTS', 'field': 'P2 Fierce Punch'},

{'port': ':INPUTS', 'field': 'P1 Down'},

{'port': ':INPUTS', 'field': 'P2 Down'},

{'port': ':INPUTS', 'field': 'P2 Roundhouse Kick'},

{'port': ':INPUTS', 'field': 'P2 Strong Punch'},

{'port': ':INPUTS', 'field': 'P1 Strong Punch'},

{'port': ':INPUTS', 'field': '2 Players Start'},

{'port': ':INPUTS', 'field': 'Coin 1'},

{'port': ':INPUTS', 'field': '1 Player Start'},

{'port': ':INPUTS', 'field': 'P2 Right'},

{'port': ':INPUTS', 'field': 'Service 1'},

{'port': ':INPUTS', 'field': 'Coin 2'},

{'port': ':INPUTS', 'field': 'P1 Jab Punch'},

{'port': ':INPUTS', 'field': 'P2 Up'},

{'port': ':INPUTS', 'field': 'P1 Up'},

{'port': ':INPUTS', 'field': 'P1 Right'},

{'port': ':INPUTS', 'field': 'Service Mode'},

{'port': ':INPUTS', 'field': 'P1 Fierce Punch'},

{'port': ':INPUTS', 'field': 'P2 Left'},

{'port': ':EXTRA', 'field': 'P2 Short Kick'},

{'port': ':EXTRA', 'field': 'P2 Forward Kick'},

{'port': ':EXTRA', 'field': 'P1 Forward Kick'},

{'port': ':EXTRA', 'field': 'P1 Roundhouse Kick'},

{'port': ':EXTRA', 'field': 'P1 Short Kick'}

]

仿真器類(lèi)還有一個(gè)frame_ratio參數(shù),可用于調(diào)整算法所見(jiàn)的幀速率。默認(rèn)情況下,MAME以每秒60幀的速度生成幀,如果你覺(jué)得這太多了,想把它改成每秒20幀,可以輸入以下代碼:

fromMAMEToolkit.emulator importEmulator

emulator = Emulator(roms_path, game_id, memory_addresses, frame_ratio=3)

MAME性能基準(zhǔn)測(cè)試

目前這個(gè)工具包的開(kāi)發(fā)和測(cè)試已在8核AMD FX-8300 3.3GHz CPU以及3GB GeForce GTX 1060 GPU上完成。在使用單個(gè)隨機(jī)智能體的情況下,街頭霸王環(huán)境可以以正常游戲速度的600%+運(yùn)行。而如果是用8個(gè)隨機(jī)智能體進(jìn)行hogwild!訓(xùn)練,環(huán)境可以以正常游戲速度的300%+運(yùn)行。

ConvNet智能體

為了確保工具包能夠訓(xùn)練算法,作者還設(shè)置了一個(gè)簡(jiǎn)單的5層ConvNet,只需少量調(diào)整,你就可以用它進(jìn)行測(cè)試。在街霸實(shí)驗(yàn)中,這個(gè)算法能夠成功學(xué)習(xí)到游戲的一些簡(jiǎn)單技巧,比如連擊(combo)和格擋(blocking)。街霸本身的游戲機(jī)制是分成10個(gè)關(guān)卡(難度遞增),玩家在每個(gè)關(guān)卡都要迎戰(zhàn)不同的對(duì)手。剛開(kāi)始的時(shí)候,這個(gè)智能體平均只能打到第2關(guān)。但在經(jīng)過(guò)2200次訓(xùn)練后,它平均能打到第5關(guān)。

至于智能體的學(xué)習(xí)率,它是用每一局智能體所造成的凈傷害和所承受的傷害來(lái)計(jì)算的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    39

    文章

    7758

    瀏覽量

    172280
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4889

    瀏覽量

    90330
  • 強(qiáng)化學(xué)習(xí)

    關(guān)注

    4

    文章

    274

    瀏覽量

    12002

原文標(biāo)題:MAME:在這里,你可以用Python玩任何街機(jī)游戲

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何成為一名嵌入式C語(yǔ)言高手?

    如何成為一名嵌入式C語(yǔ)言高手? 嵌入式系統(tǒng)是當(dāng)今科技領(lǐng)域的核心,而C語(yǔ)言則是嵌入式系統(tǒng)開(kāi)發(fā)中最常用的編程語(yǔ)言之。成為一名嵌入式C語(yǔ)言高手需要長(zhǎng)時(shí)間的學(xué)習(xí)和實(shí)踐。下面將介紹些方法和
    發(fā)表于 03-25 14:12

    如何成為一名嵌入式C語(yǔ)言高手?

    如何成為一名嵌入式C語(yǔ)言高手? 嵌入式系統(tǒng)是當(dāng)今科技領(lǐng)域的核心,而C語(yǔ)言則是嵌入式系統(tǒng)開(kāi)發(fā)中最常用的編程語(yǔ)言之。成為一名嵌入式C語(yǔ)言高手需要長(zhǎng)時(shí)間的學(xué)習(xí)和實(shí)踐。下面將介紹些方法和
    發(fā)表于 04-07 16:03

    菜鳥(niǎo)一名,求教問(wèn)題

    本帖最后由 gk320830 于 2015-3-9 00:26 編輯 我是一名大學(xué)新生,想學(xué)下電路設(shè)計(jì),電路板的元件總是焊不好,用萬(wàn)用表測(cè)總是短路,求大神指教!?。。。。。?!
    發(fā)表于 10-23 22:04

    大家好,我是一名大四學(xué)生,有些問(wèn)題想咨詢大家

    本帖最后由 eehome 于 2013-1-5 09:53 編輯 我是一名大四的學(xué)生,剛?cè)ズMP試過(guò),那邊承諾的是很好啦,我也是對(duì)軟件方面很感興趣。想問(wèn)下現(xiàn)在嵌入式這方面在國(guó)內(nèi)人員的需求
    發(fā)表于 11-27 18:01

    我是一名小白

    各位友人大家好我是一名在職員工由于向提升自己想學(xué)習(xí)電氣自動(dòng)化相關(guān)的知識(shí)可是我不知道從哪學(xué)期本人零基礎(chǔ) 希望有前輩能指導(dǎo)一二 十分感激
    發(fā)表于 09-22 14:43

    一名電子初學(xué)者

    大家好,本人是一名電子初學(xué)者,平時(shí)會(huì)根據(jù)些學(xué)習(xí)資料做個(gè)小電路,苦于身邊沒(méi)有良師益友,看著書(shū)上的原理也是半知半假迷迷糊糊,為了更好的學(xué)習(xí)于是加了幾個(gè)電子討論QQ群.....天吶,怎么
    發(fā)表于 12-02 17:15

    怎樣做好一名大神

    沒(méi)想到上班了還能跟總經(jīng)理(大神)起回味大學(xué)上論壇的時(shí)光。我現(xiàn)在剛出來(lái)的只能看看別人發(fā)的求助信息,置頂信息,從別人獲取些東西。。。而大神呢?他剛開(kāi)始也是這樣的。。。后面就是那種上論壇別人回答的,因?yàn)樗鉀Q不了的問(wèn)題,論壇也解
    發(fā)表于 01-30 15:04

    想要成為一名鴻蒙開(kāi)源開(kāi)發(fā)者,要如何做呢?

    展開(kāi)正面競(jìng)爭(zhēng),當(dāng)然這也僅僅只是理論上可能。隨著鴻蒙系統(tǒng)的免費(fèi)開(kāi)源廣大開(kāi)發(fā)者帶來(lái)了機(jī)會(huì),那么要怎么才能成為一名鴻蒙開(kāi)源開(kāi)發(fā)者呢?大家可以提
    發(fā)表于 09-18 10:28

    如何成為一名電源設(shè)計(jì)師?

    成為一名電源設(shè)計(jì)師的7個(gè)跡象
    發(fā)表于 03-11 06:02

    祝賀 | 鵬城實(shí)驗(yàn)室開(kāi)源 EDA 團(tuán)隊(duì)勇奪 ICCAD 競(jìng)賽第一名

    一名的成績(jī)。四、iEDA 課題組介紹 課題組主要圍繞開(kāi)源EDA工具、智能化的芯片設(shè)計(jì)方法、開(kāi)源EDA系統(tǒng)平臺(tái)、開(kāi)源 EDA 基準(zhǔn)測(cè)試集等內(nèi)容開(kāi)展研究,打造四維
    發(fā)表于 12-13 18:29

    一名開(kāi)發(fā)工程師轉(zhuǎn)型管理的經(jīng)驗(yàn)分享

    我是一名新手項(xiàng)目經(jīng)理,轉(zhuǎn)項(xiàng)目管理崗1年半。在做管理之前,我是一名開(kāi)發(fā)。也就是說(shuō),我是最常見(jiàn)的技術(shù)轉(zhuǎn)管理了。表
    的頭像 發(fā)表于 10-16 10:16 ?8624次閱讀

    八個(gè)常用的Python GUI庫(kù)

    Python GUI 庫(kù)有很多,下面大家羅列常用的幾種 GUI 庫(kù)。下面介紹的這些GUI框架,能滿足大部分開(kāi)發(fā)人員的需要,你可以根據(jù)自己的
    的頭像 發(fā)表于 08-26 14:52 ?3477次閱讀

    Python能否成為編程語(yǔ)言榜單的第一名?

    Python 在不久的將來(lái)或?qū)⒊紺語(yǔ)言成為榜單的第一名。
    的頭像 發(fā)表于 06-15 09:31 ?2664次閱讀
    <b class='flag-5'>Python</b>能否成為編程語(yǔ)言榜單的第<b class='flag-5'>一名</b>?

    成為一名電源設(shè)計(jì)師的7個(gè)跡象

    成為一名電源設(shè)計(jì)師的7個(gè)跡象
    發(fā)表于 10-31 08:23 ?1次下載
    成為<b class='flag-5'>一名</b>電源設(shè)計(jì)師的7個(gè)跡象

    TSMaster小功能—Python小程序如何導(dǎo)入外部庫(kù)

    今天大家介紹TSMaster功能之Python小程序如何導(dǎo)入外部庫(kù)。通過(guò)在TSMaster默認(rèn)的解析器路徑下導(dǎo)入外部庫(kù)來(lái)介紹,以便我們?nèi)ナ?/div>
    的頭像 發(fā)表于 08-14 10:06 ?2162次閱讀
    TSMaster小功能—<b class='flag-5'>Python</b>小程序如何導(dǎo)入外部<b class='flag-5'>庫(kù)</b>
    万荣县| 蒙山县| 通州市| 奈曼旗| 尚志市| 兴文县| 达拉特旗| 安义县| 山东| 图木舒克市| 伊金霍洛旗| 松桃| 康平县| 瑞金市| 同心县| 神池县| 新密市| 上栗县| 双桥区| 彰化县| 内丘县| 台南县| 绥芬河市| 上林县| 资兴市| 永康市| 左权县| 枣庄市| 永新县| 凉城县| 武山县| 常宁市| 林甸县| 墨竹工卡县| 巫山县| 秀山| 新沂市| 武隆县| 和田市| 五大连池市| 商丘市|