欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > python >内容正文

python

python输入数据的维度-凯发k8官方网

发布时间:2024/10/14 python 34 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 python输入数据的维度_keras分类模型中的输入数据与标签的维度实例 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在《python深度学习》这本书中。

一、21页mnist十分类

导入数据集

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.]] (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二分类

导入数据:

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。

数据预处理:

# 将整数序列编码为二进制矩阵

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.第一种,普通的不用数据增强的

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,可以旋转角度、平移等操作。

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分类模型中的输入数据与标签的维度实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: keras分类模型中的输入数据与标签的维度实例

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

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是凯发k8官方网为你收集整理的python输入数据的维度_keras分类模型中的输入数据与标签的维度实例的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图