一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - keras分類模型中的輸入數據與標簽的維度實例

keras分類模型中的輸入數據與標簽的維度實例

2020-07-03 11:32xytywh Python

這篇文章主要介紹了keras分類模型中的輸入數據與標簽的維度實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在《python深度學習》這本書中。

一、21頁mnist十分類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
導入數據集
from keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
 
初始數據維度
>>> train_images.shape
(60000, 28, 28)
>>> len(train_labels)
60000
>>> train_labels
array([5, 0, 4, ..., 5, 6, 8], dtype=uint8)
 
數據預處理:
train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images.astype('float32') / 255
train_labels = to_categorical(train_labels)
  
之后:
print(train_images, type(train_images), train_images.shape, train_images.dtype)
print(train_labels, type(train_labels), train_labels.shape, train_labels.dtype)
結果:
[[0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 ...
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]] <class 'numpy.ndarray'> (60000, 784) float32
[[0. 0. 0. ... 0. 0. 0.]
 [1. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 ...
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 1. 0.]] <class 'numpy.ndarray'> (60000, 10) float32

二、51頁IMDB二分類

導入數據:

from keras.datasets import imdb (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

參數 num_words=10000 的意思是僅保留訓練數據中前 10 000 個最常出現的單詞。

train_data和test_data都是numpy.ndarray類型,都是一維的(共25000個元素,相當于25000個list),其中每個list代表一條評論,每個list中的每個元素的值范圍在0-9999 ,代表10000個最常見單詞的每個單詞的索引,每個list長度不一,因為每條評論的長度不一,例如train_data中的list最短的為11,最長的為189。

train_labels和test_labels都是含25000個元素(元素的值要不0或者1,代表兩類)的list。

數據預處理:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 將整數序列編碼為二進制矩陣
def vectorize_sequences(sequences, dimension=10000):
 # Create an all-zero matrix of shape (len(sequences), dimension)
 results = np.zeros((len(sequences), dimension))
 for i, sequence in enumerate(sequences):
  results[i, sequence] = 1. # set specific indices of results[i] to 1s
 return results
 
 
x_train = vectorize_sequences(train_data)
x_test = vectorize_sequences(test_data)
 
第一種方式:shape為(25000,)
y_train = np.asarray(train_labels).astype('float32') #就用這種方式就行了
y_test = np.asarray(test_labels).astype('float32')
第二種方式:shape為(25000,1)
y_train = np.asarray(train_labels).astype('float32').reshape(25000, 1)
y_test = np.asarray(test_labels).astype('float32').reshape(25000, 1)
第三種方式:shape為(25000,2)
y_train = to_categorical(train_labels) #變成one-hot向量
y_test = to_categorical(test_labels)

第三種方式,相當于把二分類看成了多分類,所以網絡的結構同時需要更改,

最后輸出的維度:1->2

最后的激活函數:sigmoid->softmax

損失函數:binary_crossentropy->categorical_crossentropy

預處理之后,train_data和test_data變成了shape為(25000,10000),dtype為float32的ndarray(one-hot向量),train_labels和test_labels變成了shape為(25000,)的一維ndarray,或者(25000,1)的二維ndarray,或者shape為(25000,2)的one-hot向量。

注:

1.sigmoid對應binary_crossentropy,softmax對應categorical_crossentropy

2.網絡的所有輸入和目標都必須是浮點數張量

補充知識:keras輸入數據的方法:model.fit和model.fit_generator

1.第一種,普通的不用數據增強的

?
1
2
3
4
from keras.datasets import mnist,cifar10,cifar100
(X_train, y_train), (X_valid, Y_valid) = cifar10.load_data()
model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, shuffle=True,
    verbose=1, validation_data=(X_valid, Y_valid), )

2.第二種,帶數據增強的 ImageDataGenerator,可以旋轉角度、平移等操作。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from keras.preprocessing.image import ImageDataGenerator
(trainX, trainY), (testX, testY) = cifar100.load_data()
trainX = trainX.astype('float32')
testX = testX.astype('float32')
trainX /= 255.
testX /= 255.
Y_train = np_utils.to_categorical(trainY, nb_classes)
Y_test = np_utils.to_categorical(testY, nb_classes)
generator = ImageDataGenerator(rotation_range=15,
        width_shift_range=5./32,
        height_shift_range=5./32)
generator.fit(trainX, seed=0)
model.fit_generator(generator.flow(trainX, Y_train, batch_size=batch_size),
     steps_per_epoch=len(trainX) // batch_size, epochs=nb_epoch,
     callbacks=callbacks,
     validation_data=(testX, Y_test),
     validation_steps=testX.shape[0] // batch_size, verbose=1)

以上這篇keras分類模型中的輸入數據與標簽的維度實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/xiaohuihui1994/article/details/83536752

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成年人在线视频观看 | 日韩无砖2021特黄 | 福利视频一区二区牛牛 | 99ri在线精品视频 | 暖暖 免费 高清 日本 在线 | 日本乱子 | 40分钟在线观看免费 | 亚洲是图你懂的 | 欧美人成绝费网站色www吃脚 | 国产最新精品视频 | 日韩网站免费 | 婷婷中文网 | 午夜国产精品视频在线 | 久久久久影视 | 二区三区不卡不卡视频 | 亚洲国产精品久久久久久网站 | 秋霞717理论片在线观看 | 2022av小四郎的最新地址 | 黄瓜视频黄| 午夜伦伦电影理论片大片 | 午夜福利合集1000在线 | 久久机热视频 这里只有精品首页 | 91视频a| 日韩毛片大全免费高清 | 久青草国产97香蕉在线视频 | 亚洲欧美日韩久久一区 | 国产在线精品成人一区二区三区 | 美女扒开腿让男人桶爽动态图片 | 白丝尤物的下面被疯狂蹂躏 | 互换身体全集免费观看 | 91精品国产高清久久久久 | 日本网 | 日韩在线视频免费不卡一区 | 亚洲精品免费观看 | 毛片免费的 | 色老板视频在线观看 | 男人天堂视频网 | 国产成人免费观看在线视频 | 天天射久久 | 色哟哟哟在线精品观看视频 | 极品美女aⅴ高清在线观看 极品ts赵恩静和直男激战啪啪 |