国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

什么?神经网络还能创造新知识?

发布时间:2019/07/02标签:   神经网络    点击量:

原标题:什么?神经网络还能创造新知识?
神经收集(NNs)能够在不晓得用显式算法履行任务的情形下被计划和练习于特定的义务,许多人都对此表现赞叹。比方,闻名的手写体数字辨认教程很轻易履行,但其背地的逻辑仍是暗藏在神经收集下,仅能经过档次化构造、权值和激活函数略知一二。神经网络图片起源:Unsplash本文经过神经收集通明准则来提醒其“黑盒常识”,为此来测验一个布尔异或函数的神经收集。起首,应用已知异或属性进程结构了一个自底向上的神经收集,即清楚包括已知的代数关联。在第二步中应用TensorFlow Keras从浅易图形化编程东西到异或逻辑运算练习神经收集。最初比拟两种方式。将Keras神经收集剖析为布尔组件,发觉逻辑设置与第一步中结构的神经收集差别。被练习的神经收集发觉了应用差别布尔函数的另一种异或运算表现方式。这另一种异或公式在数学范畴不是未知的,但最少很离奇。这或者标明神经收集能够制造新的常识。但要提取它,必需可能将神经收集的设置和参数转化为显式规矩。自底向上结构异或运算神经收集(XOR NN)异或运算是由映照界说的布尔函数,XOR(0,0)=XOR(1,1)=0XOR(1,0)=XOR(0,1)=1为异或运算结构一个已知的神经收集或谷歌标识列XOR(x,y)=AND(NAND(x,y),OR(x,y))这很有关心,由于操纵符AND、NAND(而非AND)和OR是众所周知的,而且都能够用简略的神经收集来表现,此中有2个输出和1个输入结点、偏移量和sigmoid激活函数。神经网络布尔函数操纵符的神经收集在此基本上可经过衔接NAND、AND和OR的NNs来结构异或运算神经收集。以是异或酿成了一个三层神经收集。异或运算的神经网络异或运算的神经收集运送能够的输出设置并检讨输入(本文应用Excel任务表)。分辨失掉无效的(0,0)、(1,1)的0.0072以及(0,1)、(1,0)的0.9924。能够用以下异或运算的表现来建构其余的神经收集:XOR(x,y)=OR(AND(NOT(x),y),AND(x,NOT(y)))XOR(x,y)=NAND(NAND(x,NAND(x,y)),NAND(y,NAND(x,y)))但是这些标识列招致了更庞杂的收集。别的,因为异或运算不能经过线性可分(且激活函数严厉枯燥),因而,弗成能树立两层的神经收集。但兴许另有其余方式能够构建异或运算的神经收集呢?下一节将经过练习神经收集来查找另一种处理计划。应用TensorFlow Keras构建异或神经收集Keras是一个功效强盛且易于应用的神经收集库。上一节中树立了一个三层的2-2-1模子,并与之前建构的神经收集停止了比拟。应用梯度降落优化器与进修率1和均方偏差丧失函数的偏差反向传布,这是建构神经收集的尺度方式。以下是Python的代码片断:#GenerateNNforXORoperation#inputlayer:<NODES>nodes,oneforeachbit(0=falseand+1=true)#outputlayer:1nodeforresult(0=falseand+1=true)#Usesigmoidactivationfunction,gradientdescentoptimizerandmeansquarederrorlossfunction#Lastupdate:28.05.2019importtensorflowastfimportnumpyasnpimportmatplotlib.pyplotasplt#Definemodelnodes=2model=tf.keras.Sequential()model.add(tf.keras.layers.Dense(nodes,input_dim=2,activation=tf.nn.sigmoid))model.add(tf.keras.layers.Dense(1,activation=tf.nn.sigmoid))model.compile(optimizer=tf.train.GradientDescentOptimizer(1),loss=tf.keras.losses.mean_squared_error,metrics=['binary_accuracy'])model.summary()#Generatetrain&testdataepochs=10000data_in=np.array([[0,0],[0,1],[1,0],[1,1]])data_out=np.array([0,1,1,0])#Trainmodelhistory=model.fit(data_in,data_out,epochsepochs=epochs,verbose=0)#Analysisoftraininghistoryforkeyinhistory.history.keys():plt.scatter(range(epochs),history.history[key],s=1)plt.ylabel(key)plt.xlabel('epochs')plt.show()#Predictwithmodelresult=model.predict(data_in)#Printresultsdefprintarray(arr):returnnp.array2string(arr).replace('\n','')print()print('input',printarray(data_in))print('output(calculation)',printarray(data_out))print('output(prediction)',printarray(result))print('output(pred.norm.)',printarray(np.round(result)))#Getweightsofmodelprint()print(model.get_weights())

版权信息Copyright © IT技术教程 版权所有    ICP备案编号:鲁ICP备09013610号