NN八股
2020-03-03 本文已影响0人
satyrs_sh
- 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})