from __future__ import print_function
import tensorflow as tf
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelBinarizer
# load data
digits = load_digits()#载入数据
X = digits.data
y = digits.target
y = LabelBinarizer().fit_transform(y)#将数据中的y变成向量形式
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3)#将数据分为训练集和测试集
def add_layer(inputs, in_size, out_size, layer_name, activation_function=None, ):
# add one more layer and return the output of this layer
Weights = tf.Variable(tf.random_normal([in_size, out_size]))
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, )
Wx_plus_b = tf.matmul(inputs, Weights) + biases
# here to dropout
Wx_plus_b = tf.nn.dropout(Wx_plus_b, keep_prob)
#把输出舍去掉百分之五十,这样就相当于随机拿掉了百分之五十的神经元,
#每一次训练都随机来一次,这样就做到了避免过拟合的问
TensorFlow之如何用dropout解决神经网络的过拟合问题
最新推荐文章于 2023-07-23 22:04:16 发布
过拟合是因为神经网络权重过多导致的问题。dropout作为一种有效方法,通过随机丢弃一部分神经元来防止过拟合,提高模型泛化能力。在训练时,神经元以一定的概率q参与训练,测试时则按比例q选择部分神经元进行预测,从而提升效率并避免模型偏执。
摘要由CSDN通过智能技术生成