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

歡迎訪問 生活随笔!

生活随笔

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

python

python输入数据的维度_keras分类模型中的输入数据与标签的维度实例

發(fā)布時間:2024/10/14 python 132 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python输入数据的维度_keras分类模型中的输入数据与标签的维度实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

一、21頁mnist十分類

導入數(shù)據(jù)集

from keras.datasets import mnist

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

初始數(shù)據(jù)維度:

>>> train_images.shape

(60000, 28, 28)

>>> len(train_labels)

60000

>>> train_labels

array([5, 0, 4, ..., 5, 6, 8], dtype=uint8)

數(shù)據(jù)預處理:

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.]] (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.]] (60000, 10) float32

二、51頁IMDB二分類

導入數(shù)據(jù):

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

參數(shù) num_words=10000 的意思是僅保留訓練數(shù)據(jù)中前 10 000 個最常出現(xiàn)的單詞。

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。

數(shù)據(jù)預處理:

# 將整數(shù)序列編碼為二進制矩陣

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

最后的激活函數(shù):sigmoid->softmax

損失函數(shù):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.網絡的所有輸入和目標都必須是浮點數(shù)張量

補充知識:keras輸入數(shù)據(jù)的方法:model.fit和model.fit_generator

1.第一種,普通的不用數(shù)據(jù)增強的

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.第二種,帶數(shù)據(jù)增強的 ImageDataGenerator,可以旋轉角度、平移等操作。

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分類模型中的輸入數(shù)據(jù)與標簽的維度實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。

本文標題: keras分類模型中的輸入數(shù)據(jù)與標簽的維度實例

本文地址: http://www.cppcns.com/jiaoben/python/324490.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的python输入数据的维度_keras分类模型中的输入数据与标签的维度实例的全部內容,希望文章能夠幫你解決所遇到的問題。

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