fashion_mnist tf.keras.datasets.fashion_mnist
# fashion_mnist fashion_mn.load_data() #从keras中导入数据
#将训练集和测试集拆分出来
(x_train_all,y_train_all),(x_test,y_test) fashion_mnist.load_data()
#将训练集拆分为验证集
x_valid,x_train x_train_all[:5000],x_train_all[5000:] #前5000张数据集作为验证集 将后5000张作为训练集
#y同理做相同操作
y_valid,y_train y_train_all[:5000],y_train_all[5000:]
print(x_valid.shape,y_valid.shape)
print(x_train.shape,y_train.shape)
print(x_test.shape,y_test.shape)
#做数据归一化
#x (x-u) /std (u是均值 std是方差)
from sklearn.preprocessing import StandardScaler # StandardScaler 作用 去均值和方差归一化。且是针对每一个特征维度来做的 而不是针对样本。
scaler StandardScaler()
#x_train:[None,28,28] (三维矩阵) -- [None,784](转化为二维数据)
x_train_scaled scaler.fit_transform( #对训练集做归一化 fit_transform(trainData)对部分数据先拟合fit 找到该part的整体指标 如均值、方差、最大值最小值等等 根据具体转换的目的 然后对该trainData进行转换transform 从而实现数据的标准化、归一化等等
x_train.astype(np.float32).reshape(-1,1) #astype() 修改数据类型
).reshape(-1,28,28)
#对验证集做归一化
x_valid_scaled scaler.transform(x_valid.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)
x_test_scaled scaler.transform(
x_test.astype(np.float32).reshape(-1,1)
).reshape(-1,28,28)
#模型创建
#tf.keras.models.Sequential()
#Sequential()方法是一个容器 描述了神经网络的网络结构 在Sequential()的输入参数中描述从输入层到输出层的网络结构
model keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape [28,28]))
for _ in range(20):#定义了20层的神经网络
model.add(keras.layers.Dense(100,activation selu )) #selu:自带归一化功能的函数
#AlphaDropout:1、均值和方差不变 2、归一化的性质也不变
model.add(keras.layers.AlphaDropout(rate 0.5)) #0.5的时候 子网数目最大
model.add(keras.layers.Dropout(rate 0.5))
model.add(keras.layers.Dense(10,activation softmax )) #softmax: 将向量变成概率分布 x [x1,x2,x3], y [e^x1/sum,e^x2/sum,e^x3/sum] sum e^x1 e^x2 e^x3