TensorFlow的基础知识入门

TensorFlow的基础知识入门

TensorFlow是一个开源的机器学习框架,用于构建,部署和分析您的机器学习(ML)模型。本文适用于了解深度学习(数学和理论)的人。

在这里,您将了解TensorFlow的基本工作以及“Tensor”格式的数据如何通过计算图“流动”。在计算图上直观地思考模型总是有利的。

在进入核心之前,让我们看一下模型的一些超参数,例如

  • 学习率:此常量可帮助您的优化器根据前一次迭代的权重计算新权重。
  • Batch Size:Batch Size是机器学习中使用的术语,指的是一次迭代中使用的训练样例的数量。
  • Epochs:1个epoch指用训练集中的全部样本训练一次。

通常情况下,输入数据通过网络的各个层传递,从而产生相应的损失,然后通过优化器减少损失,然后通过培训评估性能。

每个机器学习(ML)项目都可以分解为更小的核心组件,例如

  1. 输入(数据):通常输入是一组数据及其相应的标签,使用placeholders(promise values)定义。
  2. 层:层通常是2或3个组件的组成,转换函数(例如Dense,Convolution)和非线性函数也称为激活函数(例如Relu,Sigmoid,Tanh)和dropout,这些组件可以进一步细分为各自的权重和偏差。
  3. 损失:在这里我们计算成本,或者我们测量模型的不准确程度,并将其与 ground truth 值进行比较。
  4. 优化器:优化器是我们用来最小化网络损失(成本)的函数,它通常使用Gradient,或者在更实际的情况下使用随机梯度下降,包装成Adam或Adagrad或RMSProp
  5. 评估:在这一部分中,我们计算正确的预测值,并找出我们的模型的准确性。
  6. 训练:在上述步骤中,我们只构建网络并定义参数,这里我们使用批量大小批量执行训练,然后将数据推送到模型进行训练。

我们来看看Python代码吧

#----------------------- Input ------------------------

with tf.name_scope('input'):

images = tf.placeholder(tf.float32, [None, INPUT_SIZE] , name="images")

labels = tf.placeholder(tf.float32, [None, N_CLASSES], name="labels")

#----------------------- Layers ------------------------

def fc_layer(x, layer, size_out, activation=None):

with tf.name_scope(layer):

size_in = int(x.shape[1])

W = tf.Variable(tf.random_normal([size_in, size_out]) , name="weights")

b = tf.Variable(tf.constant(-1, dtype=tf.float32, shape=[size_out]), name="biases")

wx_plus_b = tf.add(tf.matmul(x, W), b)

if activation:

return activation(wx_plus_b)

return wx_plus_b

fc_1 = fc_layer(images, "fc_1", HL_1, tf.nn.relu)

fc_2 = fc_layer(fc_1, "fc_2", HL_2, tf.nn.relu)

dropped = tf.nn.dropout(fc_2, keep_prob=0.9)

y = fc_layer(dropped, "output", N_CLASSES)

#------------------------- Loss -----------------------------

with tf.name_scope('loss'):

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y, labels=labels))

tf.summary.scalar('loss', loss)

#-------------------------- Optimizer ------------------------

with tf.name_scope('optimizer'):

train = tf.train.AdamOptimizer(LEARNING_RATE).minimize(loss)

#---------------------------Evaluation -----------------------

with tf.name_scope('evaluation'):

correct = tf.equal( tf.argmax(y, 1), tf.argmax(labels, 1) )

accuracy = tf.reduce_mean( tf.cast(correct, dtype=tf.float32) )

tf.summary.scalar('accuracy', accuracy)

#-------------------------- Training ---------------------------

summary_result, _ = sess.run( [summary_op, train], feed_dict={images: batch_xs, labels: batch_ys} )

summary_result, acc = sess.run( [summary_op, accuracy], feed_dict={images: mnist.test.images, labels: mnist.test.labels} )

这篇文章的内容是一般机器学习模型的不同组成部分,对于初学者来说,通过研究论文可以寻找这6个部分,因为它们将有助于理解论文。

相关推荐