日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

mybatis generator 打印出来表了 但是没有生成未见_Python丨深度学习中使用生成器加速数据读取与训练...

發布時間:2025/3/12 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis generator 打印出来表了 但是没有生成未见_Python丨深度学习中使用生成器加速数据读取与训练... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、什么是生成器

我們可以把生成器理解為一個高端的列表。生成器就是一個集算法和列表還有依次讀取于一體的功能。因為如果列表存儲的內容過多就會造成內存的浪費。但是如果“列表”內的元素可以通過某種規則展示出來、且我們只需要前幾項的元素,我們就可以通過使用生成器來進行。

2、生成器怎么用

# 列表的用法 a = [x for x in range(10)] =>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 生成器的用法 a = (x for x in range(10)) =><generator object <genexpr> at 0x0000027656609408>

我們輸出的是一個generator。而列表打印的出來的就是元素。我們如何將generator的元素打印出來呢?使用next函數,將generator的元素打印出來。

next(b) =>0 next(b) =>1 next(b) =>2 next(b) =>3 next(b) =>4 next(b) =>5 ........ #當元素超出時報錯停止 next(b) =>Traceback (most recent call last):File "<stdin>", line 1, in <module> StopIteration

對于這種情況,我們不必一直使用next對其進行調用,我們可以使用使用for循環對其進行調用,這樣就可以省去很多事情,便于操作。

這是一種簡單的用法,下面我們將函數信息與生成器結合使用。其大致使用方法跟一般的函數(循環)的使用。

#使用generator達到生成器的效果 def fid(max):n, a, b = 0, 0 ,1while n < max:yield ba , b = b , a + bn += 1 f = fid(6) =><generator object fid at 0x00000201278195E8> next(f) =>1 next(f) =>1 next(f) =>2 next(f) =>3

我們可以看出yield的效果和return的效果差不都,但是yield不會使函數值返回,而是使得函數的值暫時掛起。我們使用next使得函數的值輸出,這極大的提高了我們的效率。

3、生成器在深度學習中的應用

def xs_gen_pro(data,batch_size):lists = datanum_batch = math.ceil(len(lists) / batch_size) # 確定每輪有多少個batchfor i in range(num_batch):if(i==0):np.random.shuffle(lists)batch_list = lists[i * batch_size : i * batch_size + batch_size]np.random.shuffle(batch_list)batch_x = np.array([x for x in batch_list[:,0]])batch_y = np.array([y for y in batch_list[:,1]])yield batch_x, batch_y ? if __name__ == "__main__":#data_gen = xs_gen(data,5)for x,y in xs_gen(data,5):print("item",x,y)for x,y in xs_gen(data,5):print("item",x,y)

為了方便演示,上面是直接對列表進行讀入操作,一般在用的時候是讀取path列表,在按照path提取數據。

item [50 30 20 90 80] [5 3 2 9 8] item [ 60 0 100 110 40] [ 6 0 10 11 4] item [120 10 140 130 150] [12 1 14 13 15] item [70] [7] item [120 90 70 80 130] [12 9 7 8 13] item [ 10 150 100 0 50] [ 1 15 10 0 5] item [140 30 60 20 110] [14 3 6 2 11] item [40] [4]

這樣就可以很好的讀取到數據了。

4、再看生成器

前面已經對生成器有了感性的認識,我們以生成器函數為例,再來深入探討一下Python的生成器:

1、語法上和函數類似:生成器函數和常規函數幾乎是一樣的。它們都是使用def語句進行定義,差別在于,生成器使用yield語句返回一個值,而常規函數使用return語句返回一個值。

2、自動實現迭代器協議:對于生成器,Python會自動實現迭代器協議,以便應用到迭代背景中(如for循環,sum函數)。由于生成器自動實現了迭代器協議,所以,我們可以調用它的next方法,并且,在沒有值可以返回的時候,生成器自動產生StopIteration異常。

3、狀態掛起:生成器使用yield語句返回一個值。yield語句掛起該生成器函數的狀態,保留足夠的信息,以便之后從它離開的地方繼續執行。

5、使用生成器所需的注意事項

我們通過對上面的輸出進行分析可以得出,我們可以知道,輸出僅有一次。因此我們使用生成器時需要注意的是:生成器只能遍歷一次。

6、參考

賴明星——《python生成器到底有什么優點?》

小宋是呢——《[開發技巧]·深度學習使用生成器加速數據讀取與訓練簡明教(TensorFlow,pytorch,keras)》

總結

以上是生活随笔為你收集整理的mybatis generator 打印出来表了 但是没有生成未见_Python丨深度学习中使用生成器加速数据读取与训练...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。