开了好几次头,也不知道要说啥,就直接进入正题吧。
一直做的都不是图片处理,我的数据集都是矩阵,所以从哪导入矩阵,矩阵的正确格式就是关键问题了。一直都让我很困扰,研究几天终于调通了一个模型,有些心得体会想要分享给大家。
代码主要来源:
https://blog.csdn.net/Enchanted_ZhouH/article/details/74116823?utm_source=blogkpcl2
https://blog.csdn.net/ShadowN1ght/article/detailyi78076081
(一)导入数据集
我的数据集是pkl格式的,有训练集,测试集,验证集
#导入数据集
def load_data_shared(filename="你自己的文件.pkl"):
f = open(filename, 'rb')
training_data, validation_data, test_data = pickle.load(f)
f.close()
def shared(data):
shared_x = np.asarray(data[0], np.float32)
shared_y = np.asarray(data[1], np.int32)
return shared_x, shared_y
return [shared(training_data), shared(validation_data), shared(test_data)]
#调用
training_data, validation_data, test_data = load_data_shared()
training_x, training_y = training_data
validation_x, validation_y = validation_data
test_x, test_y = test_data
(二)将标签编码成onehot
这块折腾了我好久,遇到了好多问题,罗列一下吧,万一有情况相似的小伙伴呢。
(1)没编码直接将标签喂进模型,模型正确率一直为1.0,预测输出全部为0。毫无头绪的错误啊,然后我就想起来我之前用theano写的那个模型如果4类的话最后分类层输出至少要大于4,然后我就找了tensorflow这个模型,果然最后一层输出为1,所以结果只能是0。但是如果把输出改成4,又会报错说形状不对,那就只能把输入的y改成(,4),可是我的数据集的标签是(,1)的格式。思来想去,觉得还是标签这的问题,我就想起之前有次无意间看到mnist的标签是onehot的形式,我就死马当活马医将标签编码,然后第二个问题就