2018-04-03|2018-04-03 随机dropout

为了预防神经网络过拟合,使用dropout,主要思想好像是每次随机的搞掉一半神经元使它们不能工作,这样训练出来就能防止过拟合。
这里的示例代码还用到了sklearn的数据集。

import tensorflow as tf from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.preprocessing import LabelBinarizerdigits=load_digits() X = digits.data y=digits.target y=LabelBinarizer().fit_transform(y) X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=.3)

这里是从sklearn自带的数据集里提取出来,下面是sklearn里的那些数据集,比如digits就是手写体数据集。
In [2]: datasets.load_*? datasets.load_boston#波士顿房价数据集 datasets.load_breast_cancer#乳腺癌数据集 datasets.load_diabetes#糖尿病数据集 datasets.load_digits#手写体数字数据集 datasets.load_files datasets.load_iris#鸢尾花数据集 datasets.load_lfw_pairs datasets.load_lfw_people datasets.load_linnerud#体能训练数据集 datasets.load_mlcomp datasets.load_sample_image datasets.load_sample_images datasets.load_svmlight_file datasets.load_svmlight_files

train_test_split这个函数看上去非常有用,其中test_size这个参数是设置测试集的比例,这个例子里还没用到验证集。
keep_prob = tf.placeholder(tf.float32) xs = tf.placeholder(tf.float32, [None, 64])# 8x8 ys = tf.placeholder(tf.float32, [None, 10])

placeholder里增加了一个keep prob,这里的keep_prob是保留概率,即我们要保留的结果所占比例,它作为一个placeholder,在run时传入, 当keep_prob=1的时候,相当于100%保留,也就是dropout没有起作用。
关于softmax和jcross_entropy的理论看了一些还是不懂,可能要等到以后看其他教程的时候再说吧。
l1 = add_layer(xs, 64, 50, 'l1', activation_function=tf.nn.tanh) prediction = add_layer(l1, 50, 10, 'l2', activation_function=tf.nn.softmax)cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction),reduction_indices=[1]))#losstf.summary.scalar('loss',cross_entropy) train_step=tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

【2018-04-03|2018-04-03 随机dropout】dropout的内容主要是在增加了一个keep_prob的placeholder 然后放在了
每一步的trainstep的feed_dict里面
for i in range(500): sess.run(train_step,feed_dict={xs:X_train,ys:y_train,keep_prob:0.5}) if i % 50 ==0: train_result=sess.run(merged,feed_dict={xs:X_train,ys:y_train,keep_prob:1}) test_result = sess.run(merged,feed_dict={xs:X_test,ys:y_test,keep_prob:1}) train_writer.add_summary(train_result,i) test_writer.add_summary(test_result,i)

    推荐阅读