<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能開發者 正文
      發私信給汪思穎
      發送

      1

      如何用TensorFlow生成令人驚艷的分形圖案

      本文作者: 汪思穎 2017-09-08 18:23
      導語:用于學習TensorFlow的練手小項目

      雷鋒網 AI科技評論按:本文作者何之源,原文載于知乎專欄AI Insight,雷鋒網 AI科技評論獲其授權發布。

      今天來介紹一個小項目:在TensorFlow中生成分形圖案。分形本身只是一個數學概念,與機器學習并無太大關系,但是通過分形的生成,我們可以了解怎么在TensorFlow中進行數學計算,以及如何進行基本的流程控制,是學習TensorFlow的一個非常好的練手項目。

      在開始之前,需要說明的是,TensorFlow官方也提供了一個生成分形圖案的教程(地址: www.tensorflow.org/tutorials/mandelbrot),然而官方教程中生成的圖像實在是太丑了,而且只能生成一種圖案,我對官方的代碼做了一些改進,并且加入了多種類型的分形,此外,不僅可以生成圖像,還可以制作gif動畫,代碼已經放到了Github上:https://github.com/hzy46/tensorflow-fractal-playground,主要的程序只有50行,歡迎大家參考。

      Mandelbrot集合

      Mandelbrot集合是分形中最經典的一個例子。考慮迭代公式 如何用TensorFlow生成令人驚艷的分形圖案 (z和c都是復數)。當 如何用TensorFlow生成令人驚艷的分形圖案 為0時,得到的值可以組成一個數列,依次為 如何用TensorFlow生成令人驚艷的分形圖案 。當該數列發散到無窮時,對應的點就屬于Mandelbrot集合。

      如何用TensorFlow生成令人驚艷的分形圖案 時,顯然數列永遠是0,并不發散,因此0不屬于Mandelbrot集合。

      又如 如何用TensorFlow生成令人驚艷的分形圖案 時,對應的數列為 如何用TensorFlow生成令人驚艷的分形圖案 ,數字越來越龐大,因此3i就屬于Mandelbrot集合。

      在二維平面上,將所有不屬于Mandelbrot集合的點標記為黑色,將所有屬于Mandelbrot集合的點按照其發散速度賦予不同的顏色,就可以得到Mandelbrot的經典圖像:

      如何用TensorFlow生成令人驚艷的分形圖案

      上面這張圖完全是使用TensorFlow進行計算的,類似的圖大家應該在網上也見過好多了,在TensorFlow中,我們定義下面的計算步驟:

      xs = tf.constant(Z.astype(np.complex64))

      zs = tf.Variable(xs)

      ns = tf.Variable(tf.zeros_like(xs, tf.float32)) with tf.Session():
         tf.global_variables_initializer().run()
         zs_ = tf.where(tf.abs(zs) < R, zs**2 + xs, zs)
         not_diverged = tf.abs(zs_) < R
         step = tf.group(
             zs.assign(zs_),
             ns.assign_add(tf.cast(not_diverged, tf.float32))
         for i in range(ITER_NUM): step.run()
         final_step = ns.eval()
         final_z = zs_.eval()

      zs就對應我們之前迭代公式的z,而xs就對應迭代公式中的c。為了方便起見,只要計算時數值的絕對值大于一個事先指定的值R,就認為其發散。每次計算使用tf.where只對還未發散的值進行計算。結合ns和zs_就可以計算顏色,得到經典的Mandelbrot圖像。

      Julia集合

      Julia集合和Mandelbrot集合差不多,但這次我們固定c,轉而計算發散的z的值。即c是固定的常數(可以任取),數列變成 如何用TensorFlow生成令人驚艷的分形圖案 。如果該數列發散,對應的z就屬于Julia集合。對此,我們只要在原來的程序中修改兩行內容,就可以生成Julia集合:

      xs = tf.constant(np.full(shape=Z.shape, fill_value=c, dtype=Z.dtype))

      zs = tf.Variable(Z)

      我們在fill_value=c處指定了Julia集合中的c值,只要使用不同的c值,就可以生成完全不同的Julia集合!

      默認: 如何用TensorFlow生成令人驚艷的分形圖案

      如何用TensorFlow生成令人驚艷的分形圖案

      將c值變為 如何用TensorFlow生成令人驚艷的分形圖案 ,并調整顏色(調整方法參考Github頁面的說明):

      如何用TensorFlow生成令人驚艷的分形圖案

      選用 如何用TensorFlow生成令人驚艷的分形圖案 ,圖案又變得完全不同:

      如何用TensorFlow生成令人驚艷的分形圖案

      生成Julia集合的動畫

      在Julia集合中,每次都對c的值進行微小的改變,并將依次生成圖片制作為gif,就可以生成如下所示的動畫,對應的代碼為julia_gif.py:

      如何用TensorFlow生成令人驚艷的分形圖案

      這里由于上傳gif有大小限制的關系,只展示了一個小尺寸的動畫圖像。程序中提供了一個width參數,可以修改它以生成更大尺寸,質量更高的動畫圖像。

      探索Mandelbrot集合

      (注意:下面的圖片可能對密集恐懼癥患者不太友好。。。因此慎重翻頁。。)

      在前面生成的Mandelbrot集合中,我們可以將圖像放大,選取某些區域進行生成,就可以得到格式各樣造型迥異的分形圖案,對應的程序為mandelbrot_area.py。

      在Mandelbrot集合中,有很多地方圖案比較奇特,如下圖中的9個位置。

      如何用TensorFlow生成令人驚艷的分形圖案

      其中編號為2的地方被稱為“Elephant Valley”,因為此處的圖案與大象很像,直接運行mandelbrot_area.py就可以得到該區域的圖像:

      如何用TensorFlow生成令人驚艷的分形圖案

      編號為3的地方被稱為“Triple Spiral Valley”(三重螺旋),在mandelbrot_area.py修改一下坐標位置為(ratio調整的是顏色):

      start_x = -0.090  # x range

      end_x = -0.086

      start_y = 0.654  # y range

      end_y = 0.657

      width = 1000

      ratio1, ratio2, ratio3 = 0.2, 0.6, 0.6

      就可以得到該處的圖案:

      如何用TensorFlow生成令人驚艷的分形圖案

      最后編號為1的地方被稱為“Seahorse Valley”(海馬山谷),對應的坐標為:

      start_x = -0.750  # x range

      end_x = -0.747

      start_y = 0.099  # y range

      end_y = 0.102

      width = 1000

      ratio1, ratio2, ratio3 = 0.1, 0.1, 0.3

      圖像如下,確實和海馬有一點神似:

      如何用TensorFlow生成令人驚艷的分形圖案

      生成更多的圖案

      項目提供了兩個jupyter notebook:Mandelbrot.ipynb和Julia.ipynb可以對Mandelbrot集合、Julia集合做更方便的探索。其中,Mandelbrot集的更多坐標位置可以參考Quick Guide to the Mandelbrot Set(http://www.nahee.com/Derbyshire/manguide.html),Julia集中更多有趣的c值可以參考Julia set - Wikipedia(https://en.wikipedia.org/wiki/Julia_set#Quadratic_polynomials)。網上類似的資源還有很多。

      最后再安利一下項目地址:https://github.com/hzy46/tensorflow-fractal-playground。如果代碼有什么問題可以直接發在評論里或者在Github上提出issue:)

      雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知

      如何用TensorFlow生成令人驚艷的分形圖案

      分享:
      相關文章

      編輯

      關注AI學術,例如論文
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 国产在线精品一区二区在线看| 国产精品亚韩精品无码a在线| 亚洲av中文| 精品少妇爆乳无码aⅴ区| 裸体丰满白嫩大尺度尤物| 久久影院一区二区h| 免费看成人aa片无码视频吃奶| 国产xxxxxxx| 内射老阿姨1区2区3区4区| A片黄色| 中文字幕人妻一区二区三区| 元码人妻精品一区二区三区9| 黑人巨大精品欧美视频一区| 久久国产亚洲精品无码| 精品久久久久久无码中文字幕 | 亚洲成人精品无码| 一区二区三区国产| 免费国产高清在线精品一区| 日韩精品亚洲精品第一页| 国产太嫩了在线观看| 日本边吃奶边摸边做在线视频| 国产成人自拍小视频在线| 国产精品白浆一区二小说| 隆化县| 国产亚洲婷婷香蕉久久精品| 亚州成人在线| 四虎影视久久久免费| www.男人的天堂| 中文人妻不卡| 中文字幕亚洲有码| 极品人妻少妇| 97人人看| 日产久久久久| 精品国产AV| 开心色怡人综合网站| 久久精品av国产一区二区| 最近中文字幕mv在线资源| 熟女一区| 国产精品99区一区二区三| 中日韩精品视频一区二区三区 | 狠狠?亚洲?一区|