TensorFlow的基础知识入门
TensorFlow是一个开源的机器学习框架,用于构建,部署和分析您的机器学习(ML)模型。本文适用于了解深度学习(数学和理论)的人。
在这里,您将了解TensorFlow的基本工作以及“Tensor”格式的数据如何通过计算图“流动”。在计算图上直观地思考模型总是有利的。
在进入核心之前,让我们看一下模型的一些超参数,例如
- 学习率:此常量可帮助您的优化器根据前一次迭代的权重计算新权重。
- Batch Size:Batch Size是机器学习中使用的术语,指的是一次迭代中使用的训练样例的数量。
- Epochs:1个epoch指用训练集中的全部样本训练一次。
通常情况下,输入数据通过网络的各个层传递,从而产生相应的损失,然后通过优化器减少损失,然后通过培训评估性能。
每个机器学习(ML)项目都可以分解为更小的核心组件,例如
- 输入(数据):通常输入是一组数据及其相应的标签,使用placeholders(promise values)定义。
- 层:层通常是2或3个组件的组成,转换函数(例如Dense,Convolution)和非线性函数也称为激活函数(例如Relu,Sigmoid,Tanh)和dropout,这些组件可以进一步细分为各自的权重和偏差。
- 损失:在这里我们计算成本,或者我们测量模型的不准确程度,并将其与 ground truth 值进行比较。
- 优化器:优化器是我们用来最小化网络损失(成本)的函数,它通常使用Gradient,或者在更实际的情况下使用随机梯度下降,包装成Adam或Adagrad或RMSProp
- 评估:在这一部分中,我们计算正确的预测值,并找出我们的模型的准确性。
- 训练:在上述步骤中,我们只构建网络并定义参数,这里我们使用批量大小批量执行训练,然后将数据推送到模型进行训练。
我们来看看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个部分,因为它们将有助于理解论文。