#tf.kears搭建分类模型#tf.kears回调函数#tf.kears搭建回归模型
import matplotlib as mpl #在python中画图import matplotlib.pyplot as plt
import numpy as npimport sklearnimport pandas as pd #用户处理数据import osimport sysimport timeimport tensorflow as tffrom tensorflow import keras
#print(tf.__version__)# print(sys.version_info)# for module in mpl,np,pd,sklearn,tf,keras:# print(module.__name__,module.__version__)
fashion_mnist=keras.datasets.fashion_mnist(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:]#把训练集拆分为验证集和训练集y_valid,y_train=y_train_all[:5000],y_train_all[5000:]
#print(x_valid.shape,y_valid.shape)#这些集合都是numpy格式所以可以打印shape#print(x_train.shape,y_train.shape)#print(x_test.shape,y_test.shape)
#查看图像函数(输入一个数组)def show_single_image(img_arr): plt.imshow(img_arr,cmap="binary")#使用plt打印图像cmap参数默认是rgb但是传入的是黑白图像所以改成binary plt.show()
#show_single_image(x_train[0])
#显示多张图片(输入n行n列,x_data,y_data,名称)def show_imgs(n_rows,n_cols,x_data,y_data): assert len(x_data)==len(y_data)#断言x样本数和y样本数一样 assert n_rows * n_cols <len(x_data)#行和列的乘机不能大于样本数 plt.figure(figsize=(n_cols*1.4,n_rows *1.6))#定义一张大图 for row in range(n_rows): for col in range(n_cols): index=n_cols * row + col plt.subplot(n_rows,n_cols,index+1) plt.imshow(x_data[index],cmap="binary", interpolation="nearest") plt.axis("off") plt.show()
#show_imgs(3,5,x_train,y_train)
model=keras.models.Sequential()model.add(keras.layers.Flatten(input_shape=[28,28]))#定义输入层flatten把28*28的矩阵展开为一维向量model.add(keras.layers.Dense(300,activation="relu"))#全连接层(隐藏层),300个神经单元激活函数relumodel.add(keras.layers.Dense(100,activation="relu"))#全连接层100个神经单元model.add(keras.layers.Dense(10,activation="softmax")) #定义输出层10个神经单元表示10种物品,激活函数softmax(把向量变成概率分布)
#keras.models.Sequential()有另一种写法,在初始化时传入参数# model=keras.models.Sequential([# keras.layers.Flatten(input_shape=[28,28]),# keras.layers.Dense(300,activation="relu"),# keras.layers.Dense(100,activation="relu"),# keras.layers.Dense(10,activation="softmax")# ])
model.compile(loss="sparse_categorical_crossentropy",optimizer="sgd",metrics=["accuracy"])#使用交叉熵损失函数,随机梯度下降,显示精确度
# print(model.layers)#查看所有层# model.summary()#查看模型概况架构
#填入训练数据,遍历训练集10次,每次遍历后使用验证集验证,history承接fit的返回结果训练过程historys=model.fit(x_train,y_train,epochs=5,validation_data=(x_valid,y_valid))
# type(history)#history的类型是tensorflow.python.keras.callbacks.History# history.history#可以打印训练过程中的一些数据
#可以把训练的变化过程使用图表示def plot_learning_curves(history): pd.DataFrame(history.history).plot(figsize=(8,5)) plt.grid(True) plt.gca().set_ylim(0,1) plt.show()
plot_learning_curves(historys)
#经过10次遍历后可以达到80%-85%的准确率,要进一步提高准确率常用手段是归一化

import matplotlib as mpl #在python中画图import matplotlib.pyplot as plt
import numpy as npimport sklearnimport pandas as pd #用户处理数据import osimport sysimport timeimport tensorflow as tffrom tensorflow import keras
#print(tf.__version__)# print(sys.version_info)# for module in mpl,np,pd,sklearn,tf,keras:# print(module.__name__,module.__version__)
fashion_mnist=keras.datasets.fashion_mnist(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:]#把训练集拆分为验证集和训练集y_valid,y_train=y_train_all[:5000],y_train_all[5000:]
#print(x_valid.shape,y_valid.shape)#这些集合都是numpy格式所以可以打印shape#print(x_train.shape,y_train.shape)#print(x_test.shape,y_test.shape)
#查看图像函数(输入一个数组)def show_single_image(img_arr): plt.imshow(img_arr,cmap="binary")#使用plt打印图像cmap参数默认是rgb但是传入的是黑白图像所以改成binary plt.show()
#show_single_image(x_train[0])
#显示多张图片(输入n行n列,x_data,y_data,名称)def show_imgs(n_rows,n_cols,x_data,y_data): assert len(x_data)==len(y_data)#断言x样本数和y样本数一样 assert n_rows * n_cols <len(x_data)#行和列的乘机不能大于样本数 plt.figure(figsize=(n_cols*1.4,n_rows *1.6))#定义一张大图 for row in range(n_rows): for col in range(n_cols): index=n_cols * row + col plt.subplot(n_rows,n_cols,index+1) plt.imshow(x_data[index],cmap="binary", interpolation="nearest") plt.axis("off") plt.show()
#show_imgs(3,5,x_train,y_train)
model=keras.models.Sequential()model.add(keras.layers.Flatten(input_shape=[28,28]))#定义输入层flatten把28*28的矩阵展开为一维向量model.add(keras.layers.Dense(300,activation="relu"))#全连接层(隐藏层),300个神经单元激活函数relumodel.add(keras.layers.Dense(100,activation="relu"))#全连接层100个神经单元model.add(keras.layers.Dense(10,activation="softmax")) #定义输出层10个神经单元表示10种物品,激活函数softmax(把向量变成概率分布)
#keras.models.Sequential()有另一种写法,在初始化时传入参数# model=keras.models.Sequential([# keras.layers.Flatten(input_shape=[28,28]),# keras.layers.Dense(300,activation="relu"),# keras.layers.Dense(100,activation="relu"),# keras.layers.Dense(10,activation="softmax")# ])
model.compile(loss="sparse_categorical_crossentropy",optimizer="sgd",metrics=["accuracy"])#使用交叉熵损失函数,随机梯度下降,显示精确度
# print(model.layers)#查看所有层# model.summary()#查看模型概况架构
#填入训练数据,遍历训练集10次,每次遍历后使用验证集验证,history承接fit的返回结果训练过程historys=model.fit(x_train,y_train,epochs=5,validation_data=(x_valid,y_valid))
# type(history)#history的类型是tensorflow.python.keras.callbacks.History# history.history#可以打印训练过程中的一些数据
#可以把训练的变化过程使用图表示def plot_learning_curves(history): pd.DataFrame(history.history).plot(figsize=(8,5)) plt.grid(True) plt.gca().set_ylim(0,1) plt.show()
plot_learning_curves(historys)
#经过10次遍历后可以达到80%-85%的准确率,要进一步提高准确率常用手段是归一化













