百度网站建设前期都有哪些费用,阳江百姓网,电脑培训班有哪些科目,线圈 东莞网站建设1. 实验目的
①理解并掌握误差反向传播算法#xff1b; ②能够使用单层和多层神经网络#xff0c;完成多分类任务#xff1b; ③了解常用的激活函数。
2. 实验内容
①设计单层和多层神经网络结构#xff0c;并使用TensorFlow建立模型#xff0c;完成多分类任务#xf…1. 实验目的
①理解并掌握误差反向传播算法 ②能够使用单层和多层神经网络完成多分类任务 ③了解常用的激活函数。
2. 实验内容
①设计单层和多层神经网络结构并使用TensorFlow建立模型完成多分类任务 ②调试程序通过调整超参数和训练模型参数使模型在测试集上达到最优性能 ③测试模型使用MatPlotlib对结果进行可视化呈现。
3. 实验过程
题目一 分别使用单层神经网络和多层神经网络对Iris数据集中的三种鸢尾花分类并测试模型性能以恰当的形式展现训练过程和结果。 要求 ⑴编写代码实现上述功能 ⑵记录实验过程和结果 改变隐含层层数、隐含层中节点数等超参数综合考虑准确率、交叉熵损失、和训练时间等使模型在测试集达到最优的性能并以恰当的方式记录和展示实验结果 ⑶分析和总结 这个模型中的超参数有哪些简要说明你寻找最佳超参数的过程请分析它们对结果准确性和训练时间的影响以表格或其他合适的图表形式展示。通过以上结果可以得到什么结论或对你有什么启发。 ① 代码 单层神经网络
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[font.family] SimHei#设置gpu
gpus tf.config.experimental.list_physical_devices(GPU)
tf.config.experimental.set_memory_growth(gpus[0],True)
for gpu in gpus:tf.config.experimental.set_memory_growth(gpu,True)#下载数据集
TRAIN_URL http://download.tensorflow.org/data/iris_training.csv
train_path tf.keras.utils.get_file(TRAIN_URL.split(/)[-1],TRAIN_URL)TEST_URL http://download.tensorflow.org/data/iris_test.csv
test_path tf.keras.utils.get_file(TEST_URL.split(/)[-1],TEST_URL)df_iris_train pd.read_csv(train_path,header0)
df_iris_test pd.read_csv(test_path,header0)iris_train np.array(df_iris_train) #(120,5)
iris_test np.array(df_iris_test) #(30,5)#拆
x_train iris_train[:,0:4]#(120,4)
y_train iris_train[:,4]#(120,)
x_test iris_test[:,0:4]
y_test iris_test[:,4]#中心化
x_train x_train - np.mean(x_train,axis0)#(dtype(float64))
x_test x_test - np.mean(x_test,axis0)
#独热编码
X_train tf.cast(x_train,tf.float32)
Y_train tf.one_hot(tf.constant(y_train,dtypetf.int32),3)
X_test tf.cast(x_test,tf.float32)
Y_test tf.one_hot(tf.constant(y_test,dtypetf.int32),3)#超参数
learn_rate 0.5
iter 100
display_step 5
#初始化
np.random.seed(612)
W tf.Variable(np.random.randn(4,3),dtypetf.float32) #权值矩阵
B tf.Variable(np.zeros([3]),dtypetf.float32) #偏置值
acc_train []
acc_test []
cce_train []
cce_test []for i in range(iter 1):with tf.GradientTape() as tape:PRED_train tf.nn.softmax(tf.matmul(X_train,W) B)Loss_train tf.reduce_mean(tf.keras.losses.categorical_crossentropy(y_trueY_train,y_predPRED_train))PRED_test tf.nn.softmax(tf.matmul(X_test,W) B)Loss_test tf.reduce_mean(tf.keras.losses.categorical_crossentropy(y_trueY_test,y_predPRED_test))accuracy_train tf.reduce_mean(tf.cast(tf.equal(tf.argmax(PRED_train.numpy(),axis1),y_train),tf.float32))accuracy_test tf.reduce_mean(tf.cast(tf.equal(tf.argmax(PRED_test.numpy(),axis1),y_test),tf.float32))acc_train.append(accuracy_train)acc_test.append(accuracy_test)cce_train.append(Loss_train)cce_test.append(Loss_test)grads tape.gradient(Loss_train,[W,B])W.assign_sub(learn_rate*grads[0])#dL_dW (4,3)B.assign_sub(learn_rate*grads[1])#dL_dW (3,)if i % display_step 0:print(i:%d,TrainAcc:%f,TrainLoss:%f,TestAcc:%f,TestLoss:%f % (i, accuracy_train, Loss_train, accuracy_test, Loss_test))#绘制图像
plt.figure(figsize(10,3))
plt.suptitle(训练集和测试集的损失曲线和迭代率曲线,fontsize 20)
plt.subplot(121)
plt.plot(cce_train,colorb,labeltrain)
plt.plot(cce_test,colorr,labeltest)
plt.xlabel(Iteration)
plt.ylabel(Loss)
#plt.title(训练集和测试集的损失曲线,fontsize 18)
plt.legend()plt.subplot(122)
plt.plot(acc_train,colorb,labeltrain)
plt.plot(acc_test,colorr,labeltest)
plt.xlabel(Iteration)
plt.ylabel(Accuracy)
#plt.title(训练集和测试集的迭代率曲线,fontsize 18)
plt.legend()plt.show()
多层神经网络
import pandas as pd
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
plt.rcParams[font.family] SimHei#下载数据集
TRAIN_URL http://download.tensorflow.org/data/iris_training.csv
train_path tf.keras.utils.get_file(TRAIN_URL.split(/)[-1],TRAIN_URL)TEST_URL http://download.tensorflow.org/data/iris_test.csv
test_path tf.keras.utils.get_file(TEST_URL.split(/)[-1],TEST_URL)
#表示第一行数据作为列标题
df_iris_train pd.read_csv(train_path,header0)
df_iris_test pd.read_csv(test_path,header0)iris_train np.array(df_iris_train)#将二维数据表转换为numpy数组1205训练集有120条样本
iris_test np.array(df_iris_test)
train_x iris_train[:,0:4]
train_y iris_train[:,4]
test_x iris_test[:,0:4]
test_y iris_test[:,4]train_x train_x - np.mean(train_x,axis0)
test_x test_x - np.mean(test_x,axis0)X_train tf.cast(train_x,tf.float32)
Y_train tf.one_hot(tf.constant(train_y,dtypetf.int32),3) #将标签值转换为独热编码的形式1203X_test tf.cast(test_x,tf.float32)
Y_test tf.one_hot(tf.constant(test_y,dtypetf.int32),3)learn_rate 0.55
iter 70
display_step 13np.random.seed(612)
#隐含层
W1 tf.Variable(np.random.randn(4,16),dtypetf.float32) #W1(4,16)
B1 tf.Variable(tf.zeros(16),dtypetf.float32)#输出层
W2 tf.Variable(np.random.randn(16,3),dtypetf.float32) #W2(16,3)
B2 tf.Variable(np.zeros([3]),dtypetf.float32)cross_train [] #保存每一次迭代的交叉熵损失
acc_train [] #存放训练集的分类准确率cross_test []
acc_test []for i in range(iter 1):with tf.GradientTape() as tape:# 5.1定义网络结构# H X * W1 B1Hidden_train tf.nn.relu(tf.matmul(X_train,W1) B1)# Y H * W2 B2Pred_train tf.nn.softmax(tf.matmul(Hidden_train,W2) B2)#计算训练集的平均交叉熵损失函数0Loss_train tf.reduce_mean(tf.keras.losses.categorical_crossentropy(y_trueY_train,y_predPred_train))#H X * W1 B1Hidden_test tf.nn.relu(tf.matmul(X_test,W1) B1)# Y H * W2 B2Pred_test tf.nn.softmax(tf.matmul(Hidden_test,W2) B2)#计算测试集的平均交叉熵损失函数Loss_test tf.reduce_mean(tf.keras.losses.categorical_crossentropy(y_trueY_test,y_predPred_test))Accuarcy_train tf.reduce_mean(tf.cast(tf.equal(tf.argmax(Pred_train.numpy(),axis1),train_y),tf.float32))Accuarcy_test tf.reduce_mean(tf.cast(tf.equal(tf.argmax(Pred_test.numpy(),axis1),test_y),tf.float32))#记录每一次迭代的交叉熵损失和准确率cross_train.append(Loss_train)cross_test.append(Loss_test)acc_train.append(Accuarcy_train)acc_test.append(Accuarcy_test)#对交叉熵损失函数W和B求偏导grads tape.gradient(Loss_train,[W1,B1,W2,B2])W1.assign_sub(learn_rate * grads[0])B1.assign_sub(learn_rate * grads[1])W2.assign_sub(learn_rate * grads[2])B2.assign_sub(learn_rate * grads[3])if i % display_step 0:print(i:%d,TrainLoss:%f,TrainAcc:%f,TestLoss:%f,TestAcc:%f % (i, Loss_train, Accuarcy_train, Loss_test, Accuarcy_test))plt.figure(figsize(12,5))
plt.suptitle(训练集和测试集的损失曲线和迭代率曲线,fontsize 20)
plt.subplot(121)
plt.plot(acc_train,colorb,labeltrain)
plt.plot(acc_test,colorr,labeltest)
plt.xlabel(Iteration)
plt.ylabel(Loss)
#plt.title(训练集和测试集的损失曲线,fontsize 18)
plt.legend()plt.subplot(122)
plt.plot(cross_train,colorb,labeltrain)
plt.plot(cross_test,colorr,labeltest)
plt.xlabel(Iteration)
plt.ylabel(Accuracy)
#plt.title(训练集和测试集的迭代率曲线,fontsize 18)
plt.legend()plt.show()② 结果记录 单层神经网络 多层神经网络 ③ 实验总结 参learn_rate 0.5iter 100display_step 5其中神经网络的学习速度主要根据训练集上代价函数下降的快慢有关而最后的分类的结果主要跟在验证集上的分类正确率有关。因此可以根据该参数主要影响代价函数还是影响分类正确率进行分类。超参数调节可以使用贝叶斯优化。
题目二 使用低阶API实现Softmax函数和交叉熵损失函数并使用它们修改题目一看下结果是否相同。 ① 代码 不同之处
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[font.family] SimHei#设置gpu
gpus tf.config.experimental.list_physical_devices(GPU)
tf.config.experimental.set_memory_growth(gpus[0],True)
for gpu in gpus:tf.config.experimental.set_memory_growth(gpu,True)#下载数据集
TRAIN_URL http://download.tensorflow.org/data/iris_training.csv
train_path tf.keras.utils.get_file(TRAIN_URL.split(/)[-1],TRAIN_URL)TEST_URL http://download.tensorflow.org/data/iris_test.csv
test_path tf.keras.utils.get_file(TEST_URL.split(/)[-1],TEST_URL)df_iris_train pd.read_csv(train_path,header0)
df_iris_test pd.read_csv(test_path,header0)iris_train np.array(df_iris_train) #(120,5)
iris_test np.array(df_iris_test) #(30,5)#拆
x_train iris_train[:,0:4]#(120,4)
y_train iris_train[:,4]#(120,)
x_test iris_test[:,0:4]
y_test iris_test[:,4]#中心化
x_train x_train - np.mean(x_train,axis0)#(dtype(float64))
x_test x_test - np.mean(x_test,axis0)
#独热编码
X_train tf.cast(x_train,tf.float32)
Y_train tf.one_hot(tf.constant(y_train,dtypetf.int32),3)
X_test tf.cast(x_test,tf.float32)
Y_test tf.one_hot(tf.constant(y_test,dtypetf.int32),3)#超参数
learn_rate 0.5
iter 100
display_step 5
#初始化
np.random.seed(612)
W tf.Variable(np.random.randn(4,3),dtypetf.float32) #权值矩阵
B tf.Variable(np.zeros([3]),dtypetf.float32) #偏置值
acc_train []
acc_test []
cce_train []
cce_test []for i in range(iter 1):with tf.GradientTape() as tape:#不同之处换了低阶apiPRED_train tf.exp(tf.matmul(X_train,W) B)Loss_train tf.reduce_mean(tf.keras.losses.categorical_crossentropy(y_trueY_train,y_predPRED_train))PRED_test tf.exp(tf.matmul(X_test,W) B)Loss_test tf.reduce_mean(tf.keras.losses.categorical_crossentropy(y_trueY_test,y_predPRED_test))accuracy_train tf.reduce_mean(tf.cast(tf.equal(tf.argmax(PRED_train.numpy(),axis1),y_train),tf.float32))accuracy_test tf.reduce_mean(tf.cast(tf.equal(tf.argmax(PRED_test.numpy(),axis1),y_test),tf.float32))acc_train.append(accuracy_train)acc_test.append(accuracy_test)cce_train.append(Loss_train)cce_test.append(Loss_test)grads tape.gradient(Loss_train,[W,B])W.assign_sub(learn_rate*grads[0])#dL_dW (4,3)B.assign_sub(learn_rate*grads[1])#dL_dW (3,)if i % display_step 0:print(i:%d,TrainAcc:%f,TrainLoss:%f,TestAcc:%f,TestLoss:%f % (i, accuracy_train, Loss_train, accuracy_test, Loss_test))#绘制图像
plt.figure(figsize(10,3))
plt.suptitle(训练集和测试集的损失曲线和迭代率曲线,fontsize 20)
plt.subplot(121)
plt.plot(cce_train,colorb,labeltrain)
plt.plot(cce_test,colorr,labeltest)
plt.xlabel(Iteration)
plt.ylabel(Loss)
#plt.title(训练集和测试集的损失曲线,fontsize 18)
plt.legend()plt.subplot(122)
plt.plot(acc_train,colorb,labeltrain)
plt.plot(acc_test,colorr,labeltest)
plt.xlabel(Iteration)
plt.ylabel(Accuracy)
#plt.title(训练集和测试集的准确率曲线,fontsize 18)
plt.legend()plt.show()
② 实验结果 4. 实验小结讨论题 ①在神经网络中激活函数的作用是什么常用的激活函数有哪些在多分类问题中在输出层一般使用使用什么激活函数隐含层一般使用使用什么激活函数为什么 答激活函数的作用是去线性化常用到激活函数tanhReLSigmoidSigmoid函数用于输出层tanh函数用于隐含层。 ②什么是损失函数在多分类问题中一般使用什么损失函数为什么 答损失函数是用来评估模型的预测值与真实值不一致的程度 1L1范数损失L1Loss 2均方误差损失MSELoss 3交叉熵损失CrossEntropyLoss ③神经网络的深度和宽度对网络性能有什么影响 答如果一个深层结构能够刚刚好解决问题那么就不可能用一个更浅的同样紧凑的结构来解决因此要解决复杂的问题要么增加深度要么增加宽度。但是神经网络一般来说不是越深越好也不是越宽越好并且由于计算量的限制或对于速度的需求如何用更少的参数获得更好的准确率无疑是一个永恒的追求。 ④训练数据和测试数据对神经网络的性能有何影响在选择、使用和划分数据集时应注意什么 答注意使用的范围和整体效果。 文章转载自: http://www.morning.dqpnd.cn.gov.cn.dqpnd.cn http://www.morning.xbzfz.cn.gov.cn.xbzfz.cn http://www.morning.c7497.cn.gov.cn.c7497.cn http://www.morning.gpfuxiu.cn.gov.cn.gpfuxiu.cn http://www.morning.lpcct.cn.gov.cn.lpcct.cn http://www.morning.dbrnl.cn.gov.cn.dbrnl.cn http://www.morning.wqrk.cn.gov.cn.wqrk.cn http://www.morning.msbct.cn.gov.cn.msbct.cn http://www.morning.cwfkm.cn.gov.cn.cwfkm.cn http://www.morning.kjcfz.cn.gov.cn.kjcfz.cn http://www.morning.qkbwd.cn.gov.cn.qkbwd.cn http://www.morning.zdmlt.cn.gov.cn.zdmlt.cn http://www.morning.rdfq.cn.gov.cn.rdfq.cn http://www.morning.kmcby.cn.gov.cn.kmcby.cn http://www.morning.tckxl.cn.gov.cn.tckxl.cn http://www.morning.rzrbw.cn.gov.cn.rzrbw.cn http://www.morning.mxxsq.cn.gov.cn.mxxsq.cn http://www.morning.owenzhi.com.gov.cn.owenzhi.com http://www.morning.nmtyx.cn.gov.cn.nmtyx.cn http://www.morning.qmxsx.cn.gov.cn.qmxsx.cn http://www.morning.ypjjh.cn.gov.cn.ypjjh.cn http://www.morning.zkbxx.cn.gov.cn.zkbxx.cn http://www.morning.snbq.cn.gov.cn.snbq.cn http://www.morning.tbrnl.cn.gov.cn.tbrnl.cn http://www.morning.tfrmx.cn.gov.cn.tfrmx.cn http://www.morning.wgxtz.cn.gov.cn.wgxtz.cn http://www.morning.ctlbf.cn.gov.cn.ctlbf.cn http://www.morning.bxczt.cn.gov.cn.bxczt.cn http://www.morning.bqyb.cn.gov.cn.bqyb.cn http://www.morning.qpnb.cn.gov.cn.qpnb.cn http://www.morning.rfbt.cn.gov.cn.rfbt.cn http://www.morning.sqtsl.cn.gov.cn.sqtsl.cn http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn http://www.morning.pxjp.cn.gov.cn.pxjp.cn http://www.morning.gtbjc.cn.gov.cn.gtbjc.cn http://www.morning.bzwxr.cn.gov.cn.bzwxr.cn http://www.morning.tqsmc.cn.gov.cn.tqsmc.cn http://www.morning.zfxrx.cn.gov.cn.zfxrx.cn http://www.morning.rnzwh.cn.gov.cn.rnzwh.cn http://www.morning.gbtty.cn.gov.cn.gbtty.cn http://www.morning.rklgm.cn.gov.cn.rklgm.cn http://www.morning.xrlwr.cn.gov.cn.xrlwr.cn http://www.morning.lgsfb.cn.gov.cn.lgsfb.cn http://www.morning.yrjkz.cn.gov.cn.yrjkz.cn http://www.morning.rpdmj.cn.gov.cn.rpdmj.cn http://www.morning.rwjtf.cn.gov.cn.rwjtf.cn http://www.morning.thbnt.cn.gov.cn.thbnt.cn http://www.morning.qrcsb.cn.gov.cn.qrcsb.cn http://www.morning.yrsg.cn.gov.cn.yrsg.cn http://www.morning.xnflx.cn.gov.cn.xnflx.cn http://www.morning.tpkxs.cn.gov.cn.tpkxs.cn http://www.morning.bklhx.cn.gov.cn.bklhx.cn http://www.morning.fkfyn.cn.gov.cn.fkfyn.cn http://www.morning.syznh.cn.gov.cn.syznh.cn http://www.morning.qkbwd.cn.gov.cn.qkbwd.cn http://www.morning.yfmlj.cn.gov.cn.yfmlj.cn http://www.morning.gtqx.cn.gov.cn.gtqx.cn http://www.morning.dzgmj.cn.gov.cn.dzgmj.cn http://www.morning.lsgjf.cn.gov.cn.lsgjf.cn http://www.morning.huarma.com.gov.cn.huarma.com http://www.morning.wxccm.cn.gov.cn.wxccm.cn http://www.morning.wjhdn.cn.gov.cn.wjhdn.cn http://www.morning.rlkgc.cn.gov.cn.rlkgc.cn http://www.morning.ndnhf.cn.gov.cn.ndnhf.cn http://www.morning.cnvlog.cn.gov.cn.cnvlog.cn http://www.morning.fyskq.cn.gov.cn.fyskq.cn http://www.morning.lhrcr.cn.gov.cn.lhrcr.cn http://www.morning.mhsmj.cn.gov.cn.mhsmj.cn http://www.morning.mmclj.cn.gov.cn.mmclj.cn http://www.morning.cwqln.cn.gov.cn.cwqln.cn http://www.morning.dtrcl.cn.gov.cn.dtrcl.cn http://www.morning.szoptic.com.gov.cn.szoptic.com http://www.morning.hbkkc.cn.gov.cn.hbkkc.cn http://www.morning.mhrzd.cn.gov.cn.mhrzd.cn http://www.morning.gfrtg.com.gov.cn.gfrtg.com http://www.morning.xrrbj.cn.gov.cn.xrrbj.cn http://www.morning.shawls.com.cn.gov.cn.shawls.com.cn http://www.morning.pqsys.cn.gov.cn.pqsys.cn http://www.morning.znsyn.cn.gov.cn.znsyn.cn http://www.morning.nfpgc.cn.gov.cn.nfpgc.cn