zoukankan      html  css  js  c++  java
  • Tensorflow搭建神经网路(1)前向网络

    (一)神经网络的参数

      (1)tf.random_normal()    生成正态分布的随机数

    w = tf.Variable(tf.random_normal([2,3],stddev=2,mean=0,seed=1))
    ### 生成正态分布随机数,两行三列,标准差2,均值0,随机种子1

      (2)tf.truncated_normal()  生成去掉过大偏离点的正态分布随机数,也就是如果随机生成的数据偏离平均值超过两个标准差,这个数据将重新生成

    w=tf.Variable(tf.Truncated_normal([2,3],stddev=2, mean=0, seed=1))

      (3)tf.random_uniform()    生成均匀分布随机数

    w=tf.Variable(tf.random_uniform([2,3],minval=0,maxval=1,dtype=tf.float32,seed=1))
    # 表示从一个均匀分布[minval maxval)中随机采样,产生的数是均匀分布的,注意定义域是左闭右开,即包含 minval,不包含 maxval。

      以上这些函数,如果没有特殊要求标准差、 均值、 随机种子是可以不写的。看具体使用情况。

      (4)其它函数:tf.zeros             表示生成全 0 数组
             tf.ones              表示生成全 1 数组
             tf.fill                  表示生成全定值数组
             tf.constant        表示生成直接给定值的数组

    tf.zeros([3,2],int32)  # 表示生成[[0,0],[0,0],[0,0]]
    tf.ones([3,2],int32)   # 表示生成[[1,1],[1,1],[1,1]
    tf.fill([3,2],6)       # 表示生成[[6,6],[6,6],[6,6]]
    tf.constant([3,2,1])   # 表示生成[3,2,1]

    FNN:

    ######使用水仙花数据集#####
    from sklearn.datasets import load_iris
    import
    tensorflow as tf from numpy.random import RandomState import numpy as np iris = load_iris() iris_data = iris.data iris_lable = iris.target iris_label = np.reshape(iris_lable,(150,1)) # np.reshape(array,(m,n)) 不改变数组的情况下,返回一个维度为(m,n)的数组 #print(np.shape(iris_label)) Batch_size = 2 x = tf.placeholder(tf.float32,shape=(None,4)) # placeholder占位,首先要指定数据类型,然后可以指定形状,因为我们现在只需要占一组数据,且有两个特征值,所以shape为(1,2)
    y_
    = tf.placeholder(tf.float32,shape=(None,1)) w1 = tf.Variable(tf.random_normal([4,10],stddev=1,seed=1)) w2 = tf.Variable(tf.random_normal([10,1],stddev=1,seed=1)) a = tf.matmul(x,w1) #矩阵乘法 y = tf.matmul(a,w2) #150*1 #print(np.shape(y)) loss = tf.reduce_mean(tf.square(y-y_)) train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss) with tf.Session() as sess: init = tf.global_variables_initializer() sess.run(init) steps = 3000 for i in range(steps): start = (i*Batch_size) % 32 end = start + Batch_size sess.run(train_step,feed_dict={x:iris_data[start:end],y_:iris_label[start:end]}) if i%100 == 0: total_loss = sess.run(loss,feed_dict={x:iris_data,y_:iris_label}) print(total_loss)

      思考:像(150,)这样的维度的矩阵不能直接进行运算,应当将其变成二阶张量(150,1)才能进行运算.

    搭建网络的基本流程:

      (1)导入模块,生成模拟数据集

              import

              常量定义

              生成数据集

      (2)前向传播:定义输入、参数和输出

              x=              y_=

              w1=            w2=

              a=              y=

      (3)后向传播:定义损失函数、反向传播方法

              loss=

              train_step=

      (4)生成会话,训练STEPS轮

            with tf.Session as sess:

              init_op = tf.global_variables_initializer()

              sess.run(init_op)

              STEPS = 

                for i in range(STEPS):

                start = 

                end = 

                sess.run(train_step, feed_dict={ })

    (2)tf.truncated_normal()  生成去掉过大偏离点的正态分布随机数,也就是如果随机生成的数据偏离平均值超过两个标准差,这个数据将重新生成

    w=tf.Variable(tf.Truncated_normal([2,3],stddev=2, mean=0, seed=1))
  • 相关阅读:
    SQL中distinct的用法
    python requests 高级用法 -- 包括SSL 证书错误的解决方案
    odoo js
    线程池的理解及使用
    单点登录原理及简单实现
    如何重写hashCode()和equals()方法
    多线程中的Lock小结
    Sql语句的优化摘要
    Spring事务管理
    并发编程之原子性、可见性、有序性的简单理解
  • 原文地址:https://www.cnblogs.com/hanouba/p/11426650.html
Copyright © 2011-2022 走看看