永興Tensorflowノート-3ニューラルネットワークの開発基盤

ここに画像を挿入説明
一緒に学ぶことは、この章およびレッスンすることを強く推奨される4

クリックして開きます

まず、モデルは何ですか?

TensorFlowモデル計算=計算チャートの
コンピューティングの概念図:
TensorFlow名は、二つの最も重要な概念--Tensor(テンソル)とフロー(流れ)で説明してきました。TensorFlowは、図のプログラミングシステムによって計算計算の形で表現されます。グラフのすべての計算ノードの各々について計算TensorFlow、エッジは、ノード間の依存関係を記述する計算されます。動作は別の入力操作の出力に依存している場合、2つの操作が依存関係を持っています。
フィギュア、aとbの2つの定数は、2つの定数に依存し、読み取りの計算値を追加し、任意の他の計算には依存しません。したがって、この図ではエッジの側から得られ、Bから追加する追加します。コンピューティングノード全く依存ADDは、そう他のノードのエッジにノードを追加する点は存在しません。TensorFlowプログラムは、図に示したものと同様の計算グラフの形で表すことができます。
ここに画像を挿入説明
使用して計算図
TensorFlow手順は、一般に、2つの段階に分けることができます。
ここに画像を挿入説明

  • 図1の第1段階は、すべての操作を計算定義します。
  • 操作の第二段階が行われます

第二には、モデルがどのように誕生しているのですか?

1、コンテンツのモデルの基本的な意味は:
標準モデルは通信のルールを学ぶために一緒にこれらの三つの部分を作る方法を、入力ノード、三つの部分の出力を持ち、Tensorflowは物事をやってされて、計算することができます。
Tensorflowは、上部ノード、およびのみセッション(セッション)によって算出図、特定の操作を定義する中間ノード(OPS)との間の関係を計算します。

  • 計算された数字は静的で、彼らはただ一緒に関係を取るどのような運用上の定義、どんなには、操作を実行しません。
  • セッションは動的で、データは、図に従って、セッション算出マップの後にのみ流れ、図面から最終的な計算結果が流れ始めます。

Tensorflow別々の定義と計算を実行します。
演算マップの構築は、それが必要です:

  • 入口入力ノード、すなわち図。
  • 用于训练中的模型参数(学习参数),是连接各个节点的路径
  • 模型中的节点(OP):OP可以代表模型中的中间节点,是网络中的真正结构。

这三种结构组成计算图的静态网络结构模型。在实际开发过程中,通过动态的会话将图中的各个节点按照静态的规则联系起来,每一次迭代都会对图中的学习参数(比如 权重 w 和 偏置 b ) , 通过一定的迭代后所形成的计算图,便是可以使用的模型。
在会话中,任何一个节点都可以通过会话的run函数进行计算,得到该节点的数值。
2、模型内部的数据流向:

  • 正向
    正向,则是数据从输入开始,依次进行各节点的运算,最后得到输出,是模型最基本的数据流向。
  • 反向
    反向只有在训练的场景下,才会用到。
    即先从正向的最后一个节点开始,计算此时 结果 和 真实值 的误差,这样会形成一个用学习参数表示误差的方程,比如 梯度下降方法: 会对方程中的每个参数进行求导,得到梯度修正值,同时修正权重等学习参数,然后反推出上一层的误差,并接着计算上一层的修正值,直到传到正向的第一个节点。

三、Tensorflow开发基本步骤:

  • 定义tensorlfow输入节点
  • 定义 学习参数 的变量
  • 定义运算
  • 优化函数
  • 初始化变量
  • 迭代更新到最优解
  • 测试模型
  • 使用模型

四、基本开发步骤讲解:

1、定义输入节点:

  • 通过占位符定义:
    由placeholder方法创建,其也是一种常量,但是由用户在调用run方法是传递的,也可以将placeholder理解为一种形参。即其不像constant那样直接可以使用,需要用户传递常数值.
tf.placeholder(dtype=tf.float32, shape=[144, 10], name='X')
  • 参数:
    • dtype:数据类型,必填,默认为value的数据类型,传入参数为tensorflow下的枚举值(float32,float64…)
    • shape:数据形状,选填,不填则随传入数据的形状自行变动,可以在多次调用中传入不同形状的数据
    • name:常量名,选填,默认值不重复,建议根据创建顺序为(Placeholder,Placeholder_1,Placeholder_2…)
  • 通过字典定义:
    比如:
inputDict = {"x":tf.placeholder(tf.float32)}
  • 直接定义输入节点(用的比较少)
    比如:
train_X = np.linspace(-1,1,100)

2、定义 学习参数 的变量:

  • 直接定义:
    比如:
w = tf.Variable(tf.random_normal([1]),name="weight")
  • 通过字典定义:
    比如:
paradict = {
	"w":tf.Variable(tf.random_normal([1])),
	"b":tf.Variable(tf.zeros([1])
	}

3、定义运算:
定义运算的过程是建立模型的核心过程,直接决定的模型的效果。

  • 1、定义正向传播运算:
    即定义前向传播的运算,一般问题越复杂,前向神经网络越复杂,后面我会向大家介绍 卷积神经网络、循环神经网络、GooLeNet等

  • 2、损失函数:
    损失函数就是 输出值 和 真实值 之间的误差,配合反向传播使用,不断迭代中找到最小值,达到模型的最好效果。

  • 3、优化函数:
    在 正向传播 和 损失函数 的基础上 , 我们使用优化函数对学习参数进行优化,这个过程在反向传播中实现。
    反向传播的过程,就是沿着正向传播的过程将误差向反方向传递过去。
    之后我们会涉及到:正则化、随机梯度下降等

  • 4、初始化变量:
    session 创建好后第一件事就是初始化变量!!!

  • 5、迭代更新参数到最优解
    我们一般通过 一次会话 来完成,常常使用with愈发,可以在session结束后自动关闭

  • 6、测试模型:
    是模型验证节点,一般通过输入模型没有训练过的数据和真实结果,来测试和验证模型的效果。

  • 7、モデル使用して:
    とテストモデルを、必ずしも必要ではないが、真の結果を比較した、また、このニューラルネットワークの代わりには、現実的な問題を解決するために使用されます。

公開された45元の記事 ウォン称賛28 ビュー10000 +

おすすめ

転載: blog.csdn.net/m0_43505377/article/details/103879603