<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網易首頁 > 網易號 > 正文 申請入駐

      JAX核心設計解析:函數式編程讓代碼更可控

      0
      分享至

      很多人剛接觸JAX都會有點懵——參數為啥要單獨傳?隨機數還要自己管key?這跟PyTorch的畫風完全不一樣啊。

      其實根本原因就一個:JAX是函數式編程而不是面向對象那套,想明白這點很多設計就都說得通了。



      先說個核心區別

      PyTorch里,模型是個對象,權重藏在里面,訓練的時候自己更新自己。這是典型的面向對象思路,狀態封裝在對象內部。

      JAX的思路完全反過來。模型定義是模型定義,參數是參數,兩邊分得清清楚楚。函數本身不持有任何狀態,每次調用都把參數從外面傳進去。

      這么做的好處?JAX可以把你的函數當純數學表達式來處理。求導、編譯、并行,想怎么折騰都行,因為函數里沒有藏著掖著的東西,行為完全可預測。

      代碼對比一下就明白了

      PyTorch這么寫:

      import torch
      import torch.nn as nn
      class Model(nn.Module):
      def __init__(self):
      super().__init__()
      self.linear = nn.Linear(10, 1)
      def forward(self, x):
      return self.linear(x)
      model = Model()
      x = torch.randn(5, 10)
      output = model(x)

      權重在self.linear里,模型自己管自己。

      JAX配Flax是這樣:

      import jax
      import jax.numpy as jnp
      from flax import linen as nn
      class Model(nn.Module):
      @nn.compact
      def __call__(self, x):
      return nn.Dense(1)(x)
      model = Model()
      key = jax.random.PRNGKey(0)
      dummy = jnp.ones((1, 10))
      params = model.init(key, dummy)['params']
      x = jnp.ones((5, 10))
      output = model.apply({'params': params}, x)

      參數要先init出來,用的時候再apply進去。麻煩是麻煩了點,但參數流向一目了然,想做什么騷操作都很方便。

      隨機數那個key是怎么回事

      這個確實是JAX最讓新手頭疼的地方。不能直接random.normal()完事,非得帶個key:

      key = jax.random.PRNGKey(42)
      x = jax.random.normal(key, (3,))

      原因還是那個——函數式編程不允許隱藏狀態。

      普通框架的隨機數生成器內部維護一個種子狀態,每次調用偷偷改一下。JAX不干這事。你得顯式給它一個key,它用完就扔,下次想生成隨機數再給個新的。

      好處是隨機性完全可控可復現。jit編譯、多卡訓練、梯度計算,不管代碼怎么變換,只要key一樣結果就一樣。調試的時候不會遇到那種"明明代碼沒改怎么結果不一樣了"的玄學問題。

      key不能復用,用之前要split

      還有個規矩:同一個key只能用一次。要生成多個隨機數,得先split:

      key = jax.random.PRNGKey(0)
      key, subkey = jax.random.split(key)
      a = jax.random.normal(subkey)
      key, subkey = jax.random.split(key)
      b = jax.random.uniform(subkey)

      每次split出來的subkey都是獨立的隨機源。這套機制在分布式場景下特別香,不同機器拿不同的key,隨機性既獨立又可追溯。

      合在一起看個完整例子

      def forward(params, x):
      w, b = params
      return w * x + b
      def init_params(key):
      key_w, key_b = jax.random.split(key)
      w = jax.random.normal(key_w)
      b = jax.random.normal(key_b)
      return w, b
      key = jax.random.PRNGKey(0)
      params = init_params(key)
      x = jnp.array(2.0)
      output = forward(params, x)

      forward是純函數,輸入決定輸出,沒有副作用。隨機性在init_params里一次性處理完。參數獨立存放,想存哪存哪。

      這種代碼JAX處理起來特別順手——jit編譯、自動微分、vmap批處理、多卡并行,都是開箱即用。

      什么場景下JAX更合適

      說實話JAX學習曲線是陡了點。但有些場景下它的優勢很明顯:做研究需要魔改模型結構的時候;物理仿真對數值精度和可復現性要求高的時候;大規模分布式訓練不想被隱藏狀態坑的時候;想自己擼optimizer或者自定義layer的時候。

      適應了這套顯式風格之后其實挺舒服的。參數在哪、隨機數哪來的、函數干了啥,全都擺在明面上。沒有黑魔法,debug的時候心里有底。

      https://avoid.overfit.cn/post/52fcdfd1d8054dcbb31783ed0547850e

      作者:Ali Nawaz

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      爭奪霍爾木茲海峽,都拼了,但……

      爭奪霍爾木茲海峽,都拼了,但……

      新民周刊
      2026-03-05 09:10:56
      “俄羅斯向伊朗分享美軍坐標,又有核武大國進場”

      “俄羅斯向伊朗分享美軍坐標,又有核武大國進場”

      觀察者網
      2026-03-07 08:36:07
      中國向全世界披露:美國4400顆衛星,包圍中國空間站,這是要做啥

      中國向全世界披露:美國4400顆衛星,包圍中國空間站,這是要做啥

      丁丁鯉史紀
      2026-03-06 17:20:34
      馬克龍就伊朗局勢表態:法國不會在中東“打仗”

      馬克龍就伊朗局勢表態:法國不會在中東“打仗”

      參考消息
      2026-03-06 12:58:11
      44+9+5,三節填滿數據欄,湖人這波太輕松了

      44+9+5,三節填滿數據欄,湖人這波太輕松了

      體育新角度
      2026-03-07 16:56:44
      中國駐法國使館發言人就中方對日本出口管制措施答記者問

      中國駐法國使館發言人就中方對日本出口管制措施答記者問

      環球網資訊
      2026-03-07 06:58:05
      伊朗的第一個盟友,下場了!

      伊朗的第一個盟友,下場了!

      深度知局
      2026-03-06 23:02:41
      中國古代歷史上“最牛”的地方割據勢力,傳承29世,割據724年!

      中國古代歷史上“最牛”的地方割據勢力,傳承29世,割據724年!

      小豫講故事
      2026-03-07 06:00:06
      美參院決議川普打伊不必再請示,川普稱古巴是下一個,果真如此?

      美參院決議川普打伊不必再請示,川普稱古巴是下一個,果真如此?

      邵旭峰域
      2026-03-06 16:32:04
      比亞迪再扔王炸,DM6.0橫空出世,燃油車這次真要涼了?

      比亞迪再扔王炸,DM6.0橫空出世,燃油車這次真要涼了?

      老特有話說
      2026-03-06 16:03:17
      7天之后,臺灣怎么辦?

      7天之后,臺灣怎么辦?

      人生就是要簡單
      2026-03-07 07:41:23
      斯普利特:拼盡全力沒能贏比賽有點失望,克林根今晚攻框很棒

      斯普利特:拼盡全力沒能贏比賽有點失望,克林根今晚攻框很棒

      懂球帝
      2026-03-07 12:57:45
      為什么中國不下場支援伊朗?背后有哪些原因

      為什么中國不下場支援伊朗?背后有哪些原因

      楓冷慕詩
      2026-03-06 15:10:27
      曾經走紅,如今卻“淪為笑柄”的4種數碼產品,還是別再買了

      曾經走紅,如今卻“淪為笑柄”的4種數碼產品,還是別再買了

      美家指南
      2026-03-06 10:31:36
      冷知識:真的不建議大家買超大藍莓

      冷知識:真的不建議大家買超大藍莓

      大象新聞
      2026-03-05 20:15:04
      澤連斯基:美國與俄羅斯竟給出相同的勸降——想停戰就放棄頓巴斯

      澤連斯基:美國與俄羅斯竟給出相同的勸降——想停戰就放棄頓巴斯

      老馬拉車莫少裝
      2026-02-22 12:25:15
      國家發改委主任:新建、改擴建1000所普通高中,增加學位200萬個以上,支持雙一流高校本科擴招10萬人以上

      國家發改委主任:新建、改擴建1000所普通高中,增加學位200萬個以上,支持雙一流高校本科擴招10萬人以上

      極目新聞
      2026-03-06 18:28:25
      全國政協委員楊建德 : 建議將春節連續9天假期固定下來,順應民生期盼、保障休假權益、激發內需活力、疏解春運壓力

      全國政協委員楊建德 : 建議將春節連續9天假期固定下來,順應民生期盼、保障休假權益、激發內需活力、疏解春運壓力

      每日經濟新聞
      2026-03-07 16:12:40
      文旅部部長:7名外國游客到上海旅游,買了40箱貨;“成為中國人”成了熱詞

      文旅部部長:7名外國游客到上海旅游,買了40箱貨;“成為中國人”成了熱詞

      上觀新聞
      2026-03-07 12:47:05
      爆笑女友經典糗事笑話,去年五一放假帶女友回家由于是第一次來我家,飯桌上她不好意思放開量地吃!

      爆笑女友經典糗事笑話,去年五一放假帶女友回家由于是第一次來我家,飯桌上她不好意思放開量地吃!

      天天明星
      2026-03-06 15:05:05
      2026-03-07 17:35:00
      deephub incentive-icons
      deephub
      CV NLP和數據挖掘知識
      1940文章數 1456關注度
      往期回顧 全部

      科技要聞

      OpenClaw爆火,六位"養蝦人"自述與AI共生

      頭條要聞

      伊朗總統:絕不可能無條件投降 向鄰國表示歉意

      頭條要聞

      伊朗總統:絕不可能無條件投降 向鄰國表示歉意

      體育要聞

      塔圖姆298天走完這段路 只用27分鐘征服這座城

      娛樂要聞

      周杰倫田馥甄的“JH戀” 被扒得底朝天

      財經要聞

      針對"不敢休、不讓休"怪圈 國家出手了

      汽車要聞

      逃離ICU,上汽通用“止血”企穩

      態度原創

      本地
      時尚
      教育
      數碼
      公開課

      本地新聞

      食味印象|一口入魂!康樂烤肉串起千年絲路香

      這些才是適合普通人的穿搭!搭配腰帶、多穿牛仔褲,簡單舒適

      教育要聞

      教育部部長懷進鵬:我國義務教育達高收入國家平均水平 #我國義務教育達高收入國家平均水平#2026全國...

      數碼要聞

      AI存儲需求進一步增長,三星NAND閃存被曝Q2將繼續漲價

      公開課

      李玫瑾:為什么性格比能力更重要?

      無障礙瀏覽 進入關懷版