在获取时尚数据时遇到问题,连不上下载的网站导致图片无法加载,此时需要自己另外找网站下载压缩包并放入对应目录即可
C:\Users\RayLu\.keras\datasets\fashion-mnist
def __init__(self):
(self.x_train,self.y_train),(self.x_test,self.y_test) = keras.datasets.fashion_mnist.load_data()

全部码如下
import numpy
import tensorflow.compat.v1 as tf
import os
# from tensorflow.python.keras.processing.image import load_img, img_to_array
from tensorflow.python.keras.models import Sequential, Model
from tensorflow.python.keras.layers import Dense, Flatten, Input
from tensorflow.python.keras.losses import sparse_categorical_crossentropy
#使用此位置keras写代码时无提示,但可正常执行,本人使用python3.9.7,conda 4.10.3,tensorflow 2.0
from tensorflow import keras
#使用此位置keras写代码有提示,但无法执行,提示无法找到
# from tensorflow.python import keras
#去除警告
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
#版本不兼容,加入此行
tf.compat.v1.disable_eager_execution()
# def main():
# # img = load_img("./part-00086-3880.jpg", target_size=(300,300))
# # print(img)
# # img_array = img_to_array(img)
# # print(img_array)
# # print(len(img_array),len(img_array[0]),len(img_array[0][0]))
# (x_train, y_train),(x_test, y_test) = keras.datasets.cifar100.load_data()
# print(x_train.shape)
# print("y_tarin: ", y_train.shape)
# print(x_train)
#
# return None
#load数据集
#建立神经网络模型
class SingleNN(object):
# 建立神经网络模型, 含两层网络,
# 隐藏层1含128个神经元
# 隐藏层2含10个神经元,对应10种类型输出,也是全连接层
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28,28)),
keras.layers.Dense(128, activation= tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
def __init__(self):
(self.x_train,self.y_train),(self.x_test,self.y_test) = keras.datasets.fashion_mnist.load_data()
#print(self.x_train[3])
#进行数据归一化
#像素值由原来的0~255 转化为 0~1
self.x_train = self.x_train/255.0
self.x_test = self.x_test/255.0
# self.y_train = self.y_train/255.0
# self.y_test = self.y_test/255.0
def singleNN_compile(self):
#编译模型优化器,损失,准确率
#SGD梯度优化,精度设置lr
# SingleNN.model.compile(optimizer=keras.optimizer.SGD(lr=0.01),
# #交叉熵损失函数
# loss=keras.losses.sparse_categorical_crossentropy(),
# metrics='accuracy'
# )
SingleNN.model.compile(optimizer="sgd",
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
return None
#模型训练
def singleNN_fit(self):
#添加tensorboard显示
# board = keras.callbacks.TensorBoard(log_dir='./graph', write_graph = True)
board = keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=0, batch_size=32, write_graph=True,
write_grads=False, write_images=False, embeddings_freq=0,
embeddings_layer_names=None, embeddings_metadata=None, embeddings_data=None)
#epochs代表训练多少次
SingleNN.model.fit(self.x_train,self.y_train,epochs=5,batch_size=32,callbacks=[board])
# SingleNN.model.fit(self.x_train, self.y_train, epochs=10, batch_size=30000)
return None
#准确率评估
def single_evalue(self):
test_loss, test_acc = SingleNN.model.evaluate(self.x_test,self.y_test)
return test_loss,test_acc
#加载已保存的模型,进行预测
def single_predict(self):
if os.path.exists('./cpkt/singleNN.h5'):
SingleNN.model.load_weights('./cpkt/singleNN.h5')
single_predict = SingleNN.model.predict(self.x_test)
return single_predict
else:
return None
if __name__ == "__main__":
new_single = SingleNN()
new_single.singleNN_compile()
new_single.singleNN_fit()
loss,acc = new_single.single_evalue()
print(loss,acc)
#保存模型
# new_single.model.save_weights('./cpkt/singleNN.h5')
#使用现有模型进行预测
# single_predict = new_single.single_predict()
# print(single_predict)
# #获取到的结果是一个二维数组[60000,10]
# #对结果进行处理,获取每个样本的预测最大值,得出对应的预测经过
# #预测结果有10种样本,所以为0~9,
# predict_max = numpy.argmax(single_predict,1)
# print(predict_max)
# print(len(predict_max))
# print(123)
执行Tensorboard --logdir命令
C:\Users\RayLu\PycharmProjects\pythonProject1\kares_t>tensorboard --logdir C:\Users\RayLu\PycharmProjects\pythonProject1\kares_t\logs
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.8.0 at http://localhost:6006/ (Press CTRL+C to quit)


2417

被折叠的 条评论
为什么被折叠?



