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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

internetreadfile读取数据长度为0_【完结】TensorFlow2.0 快速上手手册

發(fā)布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 internetreadfile读取数据长度为0_【完结】TensorFlow2.0 快速上手手册 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大家好,這是專欄《TensorFlow2.0》的第五篇文章,我們對專欄《TensorFlow2.0》進行一個總結(jié)。

我們知道全新的TensorFlow2.0 Alpha已經(jīng)于2019年3月被發(fā)布,新版本對TensorFLow的使用方式進行了重大改進,為了滿足各位AI人對TensorFlow2.0的需求,我們推出了專欄《TensorFlow2.0》,前四篇文章帶大家領(lǐng)略了全新的TensorFlow2.0的變化及具體的使用方法。今天就帶大家總結(jié)下TensorFlow2.0的一些變化。

作者 | 湯興旺

編輯 | 言有三

1 默認動態(tài)圖機制

在tensorflow2.0中,動態(tài)圖是默認的不需要自己主動啟用它。

import tensorflow as tf a = tf.constant([1,2,3]) b = tf.constant([4,5,6]) print(a+b)

上面的結(jié)果是tf.Tensor([5 7 9], shape=(3,), dtype=int32)

可以說有了動態(tài)圖,計算是非常方便的了,再也不需要理解復(fù)雜的graph和Session了。

另外我們在對比看下Pytorch中是如何計算上面的結(jié)果的。

import torch a = torch.Tensor([1,2,3]) b = torch.Tensor([4,5,6]) print(a+b)

可以發(fā)現(xiàn)TensorFlow2.0和Pytorch一樣簡單了,而且代碼基本一樣。

2 棄用collections

我們知道在TensorFlow1.X中可以通過集合 (collection) 來管理不同類別的資源。例如使用tf.add_to_collection 函數(shù)可以將資源加入一個或多個集合。使用tf.get_collection獲取一個集合里面的所有資源。這些資源可以是張量、變量或者運行 Tensorflow程序所需要的資源。我們在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時會大量使用集合管理技術(shù)。如通過tf.add_n(tf.get_collection("losses")獲得總損失。

由于collection控制變量很不友好,在TensorFlow2.0中,棄用了collections,這樣代碼會更加清晰。

我們知道TensorFlow2.0非常依賴Keras API,因此如果你使用tf.keras,每個層都會處理自己的變量,當你需要獲取可訓(xùn)練變量的列表,可直接查詢每個層。

from tensorflow import keras from tensorflow.keras import Sequential model = Sequential([keras.layers.Dense(100,activation="relu",input_shape=[2]),keras.layers.Dense(100,activation="relu"),keras.layers.Dense(1) ])

我們通過model.weights,就可以查詢每一層的可訓(xùn)練的變量。結(jié)果如下面這種形式。

<tf.Variable'dense/kernel:0' shape=(2,100) dtype=float32, numpy=array([[...]]), dtype=float32)>,

另外在TensorFlow2.0中,也刪除了Variable_scopes和tf.get_variable(),需要用面向?qū)ο蟮姆绞絹硖幚碜兞抗蚕怼?/p>

3 刪除雜亂的API,重用Keras

之前TensorFlow1.X中包含了很多重復(fù)的API或者不推薦使用的 API,雜亂無章,例如可以使用 tf.layers或tf.keras.layers創(chuàng)建圖層,這樣會造成很多重復(fù)和混亂的代碼。

如今TensorFlow 2.0正在擺脫tf.layers,重用Keras 層,可以說如果你使用TensorFlow2.0,那么使用Keras構(gòu)建深度學(xué)習(xí)模型是你的不二選擇。

詳細介紹請看文后第二篇文章《以后我們再也離不開Kera了》。

另外tf.contrib的各種項目也已經(jīng)被合并到Keras等核心API 中,或者移動到單獨的項目中,還有一些將被刪除。

可以說TensorFlow 2.0會更好地組織API,使編碼更簡潔。

4 學(xué)習(xí)TensorFlow2.0的建議

不管你是AI小白,還是已經(jīng)學(xué)習(xí)很久的大神,對于TensorFlow2.0,我們或許都需要重新學(xué),因為它的變化太多了。當你學(xué)習(xí)TensorFlow2.0時,有如下建議供你參考:

首先不要上來就是import tensorflow as tf。其實沒有必要,我建議大家先把數(shù)據(jù)預(yù)處理先學(xué)會了。比如數(shù)據(jù)你怎么read,怎么數(shù)據(jù)增強。

這個可以查看文后第三篇文章《數(shù)據(jù)讀取與使用方式》。

這篇文章介紹了Tensorflow2.0讀取數(shù)據(jù)的二種方式,分別是Keras API和Dataset類對數(shù)據(jù)預(yù)處理。

另外對于數(shù)據(jù)導(dǎo)入方式,最好使用Dataset類,個人認為這個比較方便。一個簡單的例子如下:

import tensorflow as tf import tensorflow_datasets as tfds dataset, metadata = tfds.load('fashion_mnist', as_supervised=True, with_info=True) train_dataset, test_dataset = dataset['train'], dataset['test'] train_dataset = train_dataset.shuffle(100).batch(12).repeat() for img, label in train_dataset.take(1):img = img.numpy()print(img.shape)print(img)

從上面的代碼我們可以看出在2.0中導(dǎo)入數(shù)據(jù)沒有make_one_shot_iter() 這樣的方法了。這個方法已經(jīng)被棄用了,直接用 take(1)。

當你學(xué)會了讀取數(shù)據(jù)和數(shù)據(jù)增強后,你就需要學(xué)會如何使用TensorFlow2.0構(gòu)建網(wǎng)絡(luò)模型,在TensorFlow2.0中搭建網(wǎng)絡(luò)模型主要使用的就是Keras高級API。

如果你想要學(xué)會這個本領(lǐng),可以參考文后的第四篇文章《如何搭建網(wǎng)絡(luò)模型》。

在這篇文章我們詳細介紹了如何使用Keras API搭建線性模型VGG16和非線性模型Resnet。如果你是AI小白,想要更好的掌握TensorFlow2.0,建議你使用TensorFlow2.0完成搭建VGG、GoogLeNet、Resnet等模型,這樣對你掌握深度學(xué)習(xí)框架和網(wǎng)絡(luò)結(jié)構(gòu)更有幫助。

當你完成了數(shù)據(jù)讀取和模型搭建后,現(xiàn)在你需要做的就是訓(xùn)練模型和可視化了。一個簡單的示例如下:

import tensorflow as tf from tensorflow.keras.callbacks import TensorBoard from tensorflow.keras.optimizers import SGD from tensorflow.keras.preprocessing.image import ImageDataGeneratormodel = tf.keras.models.Sequential([tf.keras.layers.Conv2D(12, (3,3), activation='relu', input_shape=(48, 48, 3),strides=(2, 2), padding='same'),tf.keras.layers.BatchNormalization(axis=3),tf.keras.layers.Conv2D(24, (3,3), activation='relu',strides=(2, 2), padding='same'),tf.keras.layers.BatchNormalization(axis=3),tf.keras.layers.Conv2D(48, (3,3), activation='relu',strides=(2, 2), padding='same'),tf.keras.layers.BatchNormalization(axis=3),tf.keras.layers.Flatten(),tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dense(1, activation='sigmoid') ])model.compile(loss='binary_crossentropy',optimizer = SGD(lr=0.001, decay=1e-6, momentum=0.9),metrics=['acc']) train_datagen = ImageDataGenerator(rescale=1/255, shear_range=0.2,zoom_range=0.2, horizontal_flip=True) validation_datagen = ImageDataGenerator(rescale=1/255) train_generator = train_datagen.flow_from_directory(r"D://Learning//tensorflow_2.0//data//train", # 訓(xùn)練集的根目錄target_size=(48, 48), # 所有圖像的分辨率將被調(diào)整為48x48batch_size=32, # 每次讀取32個圖像# 類別模式設(shè)為二分類class_mode='binary')# 對驗證集做同樣的操作 validation_generator = validation_datagen.flow_from_directory(r"D://Learning//tensorflow_2.0//data//val",target_size=(48, 48),batch_size=16,class_mode='binary') history = model.fit_generator(train_generator,steps_per_epoch=28,epochs=500,verbose=1,validation_data = validation_generator,callbacks=[TensorBoard(log_dir=(r"D:Learninglogs"))],validation_steps=6)

上面簡單示例的數(shù)據(jù)集是我們框架系列文章一直所用的表情二分類數(shù)據(jù)集。從上面的代碼我們可以看出從數(shù)據(jù)讀取到模型定義再到訓(xùn)練和可視化基本用的都是Keras 高級API,這里不再贅述。需要下載數(shù)據(jù)集的請移步github。

acc和loss可視化結(jié)果如下兩圖,可以看出效果還是比較可以的,上面的代碼已經(jīng)同步到有三AI的GitHub項目,如下第一個。

5 TensorFlow2.0優(yōu)秀的github

1、https://github.com/tangxingwang/yousan.ai 1、https://github.com/czy36mengfei/tensorflow2_tutorials_chinese 3、https://github.com/jinfagang/yolov3_tf2

總結(jié)

本期我們總結(jié)了TensorFlow2.0的變化及使用方法,而且還介紹了學(xué)習(xí)它的方法和一些比較好的Github。希望您盡快能掌握它!

往期

  • 有三AI一周年了,說說我們的初衷,生態(tài)和愿景
  • 【TensorFlow2.0】TensorFlow2.0專欄上線,你來嗎?
  • 【TensorFlow2.0】以后我們再也離不開Keras了?
  • 【TensorFlow2.0】數(shù)據(jù)讀取與使用方式
  • 【TensorFlow2.0】如何搭建網(wǎng)絡(luò)模型?

總結(jié)

以上是生活随笔為你收集整理的internetreadfile读取数据长度为0_【完结】TensorFlow2.0 快速上手手册的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。