归一化操作
#方法 x= (x-u)/std
之前我们的数据集是np.int形式,为了做除法,我们把它转换成float32
# x_train:[none,28,28]->[none,784]->[-1,28,28]
#切记要转换回去!!!!!!!
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train.astype(np.float32).reshape(-1,1))
x_train_scaled = x_train_scaled.reshape(-1, 28, 28)
x_valid_scaled = scaler.transform(x_valid.astype(np.float32).reshape(-1,1))
x_valid_scaled = x_valid_scaled.reshape(-1, 28, 28)
x_test_scaled = scaler.transform(x_test.astype(np.float32).reshape(-1,1))
x_test_scaled = x_test_scaled.reshape(-1, 28, 28)
这样我们就进行了归一化操作
验证一下,我们打印一下训练集中最大值和最小值
print(np.max(x_train_scaled),np.min(x_train_scaled))
之前是255和0
现在归一化后是
2.023144 -0.8105139
效果比之前好了一丢丢hhhhh
回调函数
回调函数是callbacks:
当我们训练模型时候,我们可能需要做一些事
如下
EarlyStopping:当模型训练期间loss不在下降的时候,可以提前停掉训练而不是经历所有遍历
ModelCheckpoint:模型每隔一段时间把训练状态以checkpoint保存下来
Tensorboard:可以出一个指标,随着训练过程中就能展示出来
对于tensorboard,我们需要的是一个文件夹,对于checkpoint,需要一个文件名
from tensorflow.keras.callbacks import TensorBoard
logdir = './ttt'
if not os.path.exists(logdir):
os.mkdir(logdir)
output_model_file = os.path.join(logdir,"fashion_mnist_model.h5")
callbackslist=[keras.callbacks.TensorBoard(logdir),
keras.callbacks.ModelCheckpoint(output_model_file,
ave_best_only=True,
save_weights_only=True
),
keras.callbacks.EarlyStopping(patience=5, min_delta=1e-3),
]
history = model.fit(
x_train_scaled, y_train,epochs=10,
validation_data=(x_valid_scaled,y_valid),callbacks=callbackslist)
下面便是一个经常会出错的问题
有时候我们经常忘记指令是什么,打错便会提示:
后来看到网上教程,找到问题在哪,通过进入系统cmd命令后,先输入
tensorboard -logdir=log
这时候再找到刚才系统生成log文件的位置,复制下来,地址在代码里有所体现,logdir = ‘./graph_def_and_weights’
所以下一步就是在cmd命令行里输入:
tensorboard --logdir=C:\Users\asus\Desktop\pythonProject\ttt,然后就会跳出一个网址: http://localhost:6006/,相当于构建了一个个人服务器。
将网址输入到浏览器中,就会得到一个按照每次遍历迭代的准确率,loss等指标的图像
另一种方法就是,在pycharm中自带的terminal中输入
tensorboard --logdir=C:\Users\asus\Desktop\pythonProject\ttt
所得结果与cmd一致。