链接:https://pan.baidu.com/s/1Nxty7ntGSUUA18oa_-ORSQ
提取码:in9m
cifar10数据集百度云链接
import os
import numpy as np
import pickle as p
def load_CIFAR_batch(filename):
with open(filename,'rb')as f:
data_dict = p.load(f,encoding='bytes')
images = data_dict[b'data']
labels =data_dict[b'labels']
images = images.reshape(10000,3,32,32)
images = images.transpose(0,2,3,1)
labels = np.array(labels)
return images,labels
def load_CIFAR_data(data_dir):
images_train=[]
labels_train=[]
for i in range(5):
f = os.path.join(data_dir,'data_batch_%d'%(i+1))
print('loading',f)
images_batch,label_batch = load_CIFAR_batch(f)
images_train.append(images_batch)
labels_train.append(label_batch)
Xtrain = np.concatenate(images_train)
Ytrain = np.concatenate(labels_train)
del images_batch,label_batch
Xtest,Ytest = load_CIFAR_batch(os.path.join(data_dir,'test_batch'))
print('finished loadding CIFAR-10 data')
return Xtrain,Ytrain,Xtest,Ytest
data_dir = 'D:\cat_dog\cifar-10-python\cifar-10-batches-py'
train_images, train_labels, test_images, test_labels = load_CIFAR_data(data_dir)
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt
# train_images, test_images = train_images / 255.0, test_images / 255.0 这句话注释掉
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None,
name=None)
tf.nn.depthwise_conv2d(input, filter, strides, padding, name=None)
tf.nn.separable_conv2d(input, depthwise_filter, pointwise_filter, strides,
padding, name=None)
input:需要做卷积的输入数据。注意:这是一个4维的张量([batch, in_height,
in_width, in_channels]),要求类型为float32或float64其中之一。
• filter:卷积核。[filter_height, filter_width, in_channels, out_channels]
• strides:图像每一维的步长,是一个一维向量,长度为4
• padding:定义元素边框与元素内容之间的空间。“SAME"或"VALID”,这个值
决定了不同的卷积方式。当为"SAME"时,表示边缘填充,适用于全尺寸操作;
当为"VALID"时,表示边缘不填充。
• use_cudnn_on_gpu:bool类型,是否使用cudnn加速
• name:该操作的名称
• 返回值:返回一个tensor,即feature map
最大池化:tf.nn.max_pool(value, ksize, strides, padding, name=None)
平均池化:tf.nn.avg_pool(value, ksize, strides, padding, name=None)
• value:需要池化的输入。一般池化层接在卷积层后面,所以输入通常是conv2d
所输出的feature map,依然是4维的张量([batch, height, width,
channels])。
• ksize:池化窗口的大小,由于一般不在batch和channel上做池化,所以ksize一
般是[1,height, width,1],
• strides:图像每一维的步长,是一个一维向量,长度为4
• padding:和卷积函数中padding含义一样
• name:该操作的名称
• 返回值:返回一个tensor