\documentclass{ctexart} \usepackage{graphicx} \usepackage{amsmath} \usepackage{amsthm} \usepackage{amssymb} \usepackage{fancyhdr} \usepackage{ifthen} \usepackage{syntonly} \usepackage[colorlinks, CJKbookmarks=true, linkcolor=red]{hyperref} \pagestyle{plain} \usepackage[raggedright]{titlesec} \newtheorem{性质}{性质} \newtheorem{定理}{定理} \newtheorem{推论}{推论} \begin{document} \title{作业} \author{计算机科学与技术系52班 杨定澄 \and 学号:2015011274 \and E-mail:892431401@qq.com} \date{} \maketitle \section{生成数据} rand.py用于产生数据,运行得到的A1,B1,C1,A2,B2,C2的数据存在对应名字的.txt里。 现已生成好。 \section{分类} 这个问题就是很经典的神经网络分类,直接把点的坐标当做输入层,然后使用反向传播算法来更新权重即可。所以输入层大小是$3$,根据题意隐含层大小是$10$。sigmoid函数我取的是$y=\frac{1}{1+e^{-x}}$,这个函数有一个好,就是求导方便,$y'(x)=y(1-y)$。 但是题目要求输出层大小是$2$,这是一个小麻烦。 按照书上的做法,本来应该是有几类就输出层就有几个神经元,然后根据哪个值最大就说明是哪个,这样就需要$3$个输出层了。 我的想法是求出输出的结果后,按线性分类机的方法分成$3$类。由于训练集的输出值是由我自己定的,所以可以很方便的设定比较好的线性分类器。 sigmoid函数取得是$y=\frac{1}{1+e^{-x}}$,那么就有$0