NN八股

  • 1

张量 Tensor(“add:0”,shape=(2,),dtype =float32 )
计算图
会话 with tf.Session() as sess:

  • 2权重矩阵的初始化
tf.Variable(tf.random_normal([2,3],stddev =2,mean =0,seed =1)) //没有seed则每次随机生成的数字不同

tf.truncated_normal()  //去掉离均值大于两个标准差的数字重新随机生成

tf.random_uniform()  //平均分布

tf.zeros  tf.ones  tf.fill([3,2],6) tf.constant([…])
  • 3神经网络

分为4个过程:准备【import 常量定义、生成数据集】,前传 【定义输入、参数、输出】,反传【定义loss、train_step】,迭代【sess、初始化参数、循环】

前向传播— 计算输出

变量初始化: tf.global_variables_initializer()

tf.placeholder(tf.float32,shape=(1,2)) // 喂一组数据,两个特征。多组,则shape=(None,2)

sess.run(y,feed_dict={x:[[0.5,0.6]]}) //多组,[[],[],[],[]]

反向传播— 优化参数训练模型所有参数使用梯度下降,使NN损失函数最小

loss - 均方误差 tf.reduce_mean(tf.square(y_-y))

train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

train_step = tf.train.MomentumOptimizer(learning_rate,momentum).minimize(loss)

train_step = tf.train.AdamOptimizer(learning_rate).minimize(loss)
  • 4 BATCH_SIZE = 8 //一次喂入的数据

  • 5 随机

rng = np.random.RandomState(seed)

X = rng.rand(32,2)
  • 6 训练模型
STEPS =3000

for i in range(STEPS):

    start = (i*BATCH_SIZE )%32

    end = start + BATCH_SIZE

    sess.run(train_step,feed_dict = {x:X[start:end],y_:Y[start:end]})

    if i%500==0

        total_loss = sess.run(loss,feed_dict={x:X,y_:Y})

你可能感兴趣的:(NN八股)