TensorFlow 2.0中文開源書項(xiàng)目:日贊700,登上GitHub熱榜
TensorFlow2.0 正式版已發(fā)布一段時(shí)間,但目前系統(tǒng)性的相關(guān)教程還不夠多。這個(gè)登上 GitHub 趨勢(shì)榜的項(xiàng)目今日已獲得 700 多贊,內(nèi)容簡(jiǎn)單易懂,適合初學(xué)者和遷移到 tf2.0 的開發(fā)者使用。
深度學(xué)習(xí)中繞不開的便是對(duì)算法框架的實(shí)際使用了。如果沒有嫻熟的工程實(shí)踐能力,很多優(yōu)秀的算法設(shè)計(jì)就無法真正使用。TensorFlow2.0 正式版已發(fā)布了一段時(shí)間,然而過去使用 TensorFlow1.x 版本的開發(fā)者擔(dān)心兩個(gè)版本之間的差距過大以至于無法遷移已有的經(jīng)驗(yàn),剛?cè)腴T深度學(xué)習(xí)的人則因?yàn)?TensorFlow 那不友好的 API 和設(shè)計(jì)邏輯而望而卻步。
近日,GitHub 日趨勢(shì)榜上出現(xiàn)了這樣一個(gè)中文開源項(xiàng)目。它基于 TensorFlow2.0 框架,有配套學(xué)習(xí)的書、代碼和視頻課程,非常適合希望了解 tf2.0 的開發(fā)者學(xué)習(xí)參考。
目前該項(xiàng)目已獲得了 1000 多的點(diǎn)贊量,登上了 GitHub 熱榜,僅在今天項(xiàng)目就獲得 700 多贊。
項(xiàng)目地址:https://github.com/dragen1860/Deep-Learning-with-TensorFlow-book
該項(xiàng)目作者為 Jackie Loong(龍良曲),曾為新加坡國(guó)立大學(xué)助理研究員,有 8 年的人工智能算法經(jīng)驗(yàn),在 AAAI 會(huì)議上發(fā)表過多篇論文。從他的 GitHub 主頁上來看,這位開發(fā)者參與了很多深度學(xué)習(xí)相關(guān)的教程項(xiàng)目的工作。
本項(xiàng)目提供了電子版的《TensorFlow 2.0 深度學(xué)習(xí)開源書》,同時(shí)按照章節(jié)在每個(gè)文件夾中提供了源代碼。你只需要下載書籍,并根據(jù)內(nèi)容和源代碼進(jìn)行學(xué)習(xí)即可。
從章節(jié)劃分上來看,本書一共分為 15 個(gè)章節(jié)。首先本書會(huì)介紹人工智能的發(fā)展歷史,然后從第二章開始介紹回歸,隨后還有分類、TensorFlow 基礎(chǔ)和進(jìn)階操作、神經(jīng)網(wǎng)絡(luò)等知識(shí)。在第 10 章以后,書還會(huì)介紹包括 CNN、RNN/LSTM、自編碼器、GAN 及其變體等多個(gè)架構(gòu),內(nèi)容很豐富。
以下為章節(jié)目錄:
代碼部分,目前作者已整理出了除第 4 章以外的大部分代碼,目前整理工作還在進(jìn)行中。
以自編碼器的代碼為例,作者在 py 文件中詳細(xì)寫出了網(wǎng)絡(luò)的架構(gòu):
- class AE(keras.Model):
- def __init__(self):
- super(AE, self).__init__()
- # Encoders
- self.encoder = Sequential([
- layers.Dense(256, activation=tf.nn.relu),
- layers.Dense(128, activation=tf.nn.relu),
- layers.Dense(h_dim)
- ])
- # Decoders
- self.decoder = Sequential([
- layers.Dense(128, activation=tf.nn.relu),
- layers.Dense(256, activation=tf.nn.relu),
- layers.Dense(784)
- ])
- def call(self, inputs, training=None):
- # [b, 784] => [b, 10]
- h = self.encoder(inputs)
- # [b, 10] => [b, 784]
- x_hat = self.decoder(h)
- return x_hat
同時(shí),每個(gè) py 文件不僅僅只有示例代碼。從代碼來看,這些 py 文件實(shí)際上都是可以直接運(yùn)行的,以下便是自編碼器文件中執(zhí)行模型訓(xùn)練的代碼:
- model = AE()
- model.build(input_shape=(None, 784))
- model.summary()
- optimizer = tf.optimizers.Adam(lr=lr)
- for epoch in range(100):
- for step, x in enumerate(train_db):
- #[b, 28, 28] => [b, 784]
- x = tf.reshape(x, [-1, 784])
- with tf.GradientTape() as tape:
- x_rec_logits = model(x)
- rec_loss = tf.losses.binary_crossentropy(x, x_rec_logits, from_logits=True)
- rec_loss = tf.reduce_mean(rec_loss)
- grads = tape.gradient(rec_loss, model.trainable_variables)
- optimizer.apply_gradients(zip(grads, model.trainable_variables))
- if step % 100 ==0:
- print(epoch, step, float(rec_loss))
這樣一來,即使沒有編程經(jīng)驗(yàn)的初學(xué)者也可以先跑通代碼,理解原理后再嘗試自行編程。
除了這些資源外,作者還貼出了一個(gè) tf2.0 實(shí)戰(zhàn)案例的項(xiàng)目庫(kù),開發(fā)者可配合使用。
項(xiàng)目地址:https://github.com/dragen1860/TensorFlow-2.x-Tutorials