网站服务器自己搭建,网站如何做301转向,vps lnmp wordpress,做网站大型cifar10 准确率只有0.1 问题描述踩坑解决办法 问题描述
如果你看的是北京大学曹健老师的tensorflow2.0,你在class5的部分可能会遇见这个问题
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras.layers import Dense, Dropout,MaxPooling2D,Fla… cifar10 准确率只有0.1 问题描述踩坑解决办法 问题描述
如果你看的是北京大学曹健老师的tensorflow2.0,你在class5的部分可能会遇见这个问题
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras.layers import Dense, Dropout,MaxPooling2D,Flatten,Conv2D,BatchNormalization,Activation
from tensorflow.keras import Model
import os
import numpy as np# np.set_printoptions(thresholdnp.inf)class Baseline(Model):def __init__(self):super(Baseline, self).__init__()self.conv1 Conv2D(6, (5,5), activationsigmoid)self.pool1 MaxPooling2D(pool_size(2,2),strides2)self.conv2 Conv2D(16, (5,5), activationsigmoid)self.pool2 MaxPooling2D(pool_size(2,2),strides2)self.flatten1 Flatten()self.f1Dense(120,activationsigmoid)self.f2Dense(84,activationsigmoid)self.f3Dense(10,activationsoftmax)def call(self,x):x self.conv1(x)x self.pool1(x)x self.conv2(x)x self.pool2(x)x self.flatten1(x)x self.f1(x)x self.f2(x)y self.f3(x)return y(x_train, y_train), (x_test, y_test) tf.keras.datasets.cifar10.load_data()
x_train,x_test x_train/255.0,x_test/255.0model Baseline()
model.compile(optimizertf.keras.optimizers.Adam(lr0.001),losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsFalse),metrics[sparse_categorical_accuracy])checkpoint_save_pathlenet.ckpt
if os.path.exists(checkpoint_save_path.index):model.load_weights(checkpoint_save_path)print(---------------------Loaded model---------------)cp_callback tf.keras.callbacks.ModelCheckpoint(filepathcheckpoint_save_path, save_weights_onlyTrue,save_best_onlyTrue, verbose1)historymodel.fit(x_train,y_train,batch_size32, epochs5, validation_data(x_test, y_test),validation_freq1,callbacks[cp_callback])
model.summary()fileopen(weights_lenet.txt,w)
for v in model.trainable_variables:file.write(str(v.name)\n)file.write(str(v.shape)\n)file.write(str(v.numpy())\n)
file.close()train_acchistory.history[sparse_categorical_accuracy]
val_acchistory.history[val_sparse_categorical_accuracy]
losshistory.history[loss]
val_losshistory.history[val_loss]plt.subplot(1,2,1)
plt.plot(loss,labeltrain_loss)
plt.plot(val_loss,labelval_loss)
plt.title(model loss)
plt.legend()plt.subplot(1,2,2)
plt.plot(train_acc,labeltrain_acc)
plt.plot(val_acc,labelval_acc)
plt.title(model acc)
plt.legend()
plt.show()
代码写的看起来没有问题但是就是acc一直在0.1总共10个类也就是说网络根本没有训练效果就是瞎蒙的。为什么会这样呢。想知道答案的直接跳到最后。下面是我踩的坑
踩坑
我尝试升级tensorflow版本但是我们知道升级tensorflow对应的cudatoolkit 和cudnn 也要升级 conda install cudatoolkit11.2.0
但是我去安装的时候显示PackagesNotFoundError: The following packages are not available from current channels: 搜不到这个版本conda search cudatoolkit查看可以安装的版本 就是没有11.2这就很烦人 我电脑环境是
windows11
cuda 12.3
cudnn 8.9.7我不能把电脑cuda卸载重新装因为我pytorch要求的是上面的环境。我尝试去官网再安装一个cuda但是失败了想试一下windows电脑能不能安装两个cuda。总之折腾了一下午
解决办法
还是我在服务器上也试了一下发现可以训练然后看了一下服务器的环境发现服务器上是
tensorflow 2.4.0 pypi_0 pypi
tensorflow-estimator 2.4.0 pypi_0 pypi所以cudatoolkit 和cudnn保持不变直接升级tensorflow pip install tensorflow2.4
具体原因我也不是很清楚有时候cuda和cudnn和官网版本不一样也能跑总之建议windows要是想跑代码就用pytorch吧tensorflow对windows真的很不友好tensorflow2.10以上直接不支持了