Tensorflow入门

1、Tensorflow简介

TensorFlow™ 是一个使用数据流图进行数值计算的开源软件库。图中的节点代表数学运算, 而图中的边则代表在这些节点之间传递的多维数组(张量)。这种灵活的架构可让您使用一个 API 将计算工作部署到桌面设备、服务器或者移动设备中的一个或多个 CPU 或 GPU。 TensorFlow 最初是由 Google 机器智能研究部门的 Google Brain 团队中的研究人员和工程师开发的,用于进行机器学习和深度神经网络研究, 但它是一个非常基础的系统,因此也可以应用于众多其他领域。

Tensorflow是机器学习和神经网络的python外部包。

 

2、Tensorflow定义graph

主要思路是通过tensorflow来构建graph或者flow,然后通过创建session来run指定的graph和flow。

下面的例子简单的定义一个graph:

import tensorflow as tf

 

a = tf.constant(2,name = 'a')

b = tf.constant(3, name = 'b')

 

x = tf.add(a,b,name = 'add')

 

with tf.Session() as sess:

    writer = tf.summary.FileWriter('./logs',sess.graph)

    print(sess.run(x))

 

writer.close()

对应的flow如下:

 

3、采用神经网络来做tranning的基本步骤

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

 

def add_layer(inputs,in_size,out_size,activation_function=None):

    Weights = tf.Variable(tf.random_normal([in_size,out_size]))

    biases = tf.Variable(tf.zeros([1,out_size]) + 0.1)

    Wx_plus_b = tf.matmul(inputs,Weights)+biases

    if activation_function is None:

        outputs = Wx_plus_b

    else:

        outputs = activation_function(Wx_plus_b)

    return outputs

 

##输入层是一个属性,有300训练数据

x_data = np.linspace(-1,1,300)[:,np.newaxis]

##生成噪声

noise = np.random.normal(0,0.05,x_data.shape)

##输出层也是一个属性,有300个训练结果

y_data = np.square(x_data)-0.5+noise

 

xs = tf.placeholder(tf.float32,[None,1])

ys = tf.placeholder(tf.float32,[None,1])

 

##输入层一个属性,隐藏层10个神经元,输出层也是一个属性

l1 = add_layer(xs,1,10,activation_function=tf.nn.relu)

predition = add_layer(l1,10,1,activation_function=None)

 

##误差函数是平方差求和再求平均

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-predition)

                                    ,reduction_indices=[1]))

##训练的优化函数是采用梯度下降算法最小化误差

train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

 

##初始化所有变量

init = tf.global_variables_initializer()

sess = tf.Session()

sess.run(init)

 

fig = plt.figure()

ax = fig.add_subplot(1,1,1)

ax.scatter(x_data,y_data)

plt.ion()  ##为了要动态更新图像

plt.show()

 

for i in range(1000):

    ##训练神经网络,每次都是300个训练数据喂给数据xs和ys

    sess.run(train_step,feed_dict={xs:x_data,ys:y_data})

 

    if i%50 == 0:

        #print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))

        try:

            ax.lines.remove(lines[0])

        except Exception:

            pass

        prediction_value = sess.run(predition,feed_dict={xs:x_data})

        lines = ax.plot(x_data,prediction_value,'r-',lw=5)       

        plt.pause(0.5)  ##延时0.5s

 

 

总结下采用神经网络来做tranning的步骤:

  1. 准备训练数据
  2. 创建输入层,隐藏层,输出层;其中隐藏层可以有多层
  3. 定义cost函数,也就是loss
  4. 选择学习训练算法
  5. 进行学习

上面步骤可以采用如下tensorboard来展示:

 

Tensorboard使用:

writer = tf.summary.FileWriter("logs/",tf.get_default_graph())

writer.close()

cmd控制台执行如下命令:

 

然后通过浏览器打开http://W00250712D:6006 网址即可看到graph

 

4、Stanford tensorflow 课程网址

https://web.stanford.edu/class/cs20si/2017/

 

5、Tensorflow经典问题和经典算法

回归问题:也就是拟合问题,输入和输出都是连续值,利用一部分训练值来训练好参数,然后采用新的值来预测数据的结果

分类问题:输出是离散的值,比如数字识别,图像分类等。 

这两类问题其实框架都是类似的,都是有输入层,hidden层,输出层,训练方法

输入层:其实就是输入的特征向量,这里可以出很多的特征选择算法

Hidden层:除了层的数量,还有就是激励函数,不同的场景可能需要不同的激励函数进行匹配

输出层:对结果的定义,这个方面一般研究的比较少,基本上结果都是定的

训练方法:这里指的是采用何种方法最快最准的根据loss来调整W和b,常用的有梯度下降算法(SGD),主要是基于学习效率的改进和变化

 

 

 

 

过拟合问题:三种解决过拟合的问题,第一是增加训练数据,第二L1和L2正规化,第三是dropout regularation

L1和L2正规化的方法可以描述如下:

 

就是采用训练的参数加权的方式来控制住曲线的弯曲程度,如果p是1,表示L1正规化,如果p为2表示L2正规化。

CNN:卷积神经网络,主要是用于计算机视觉领域,比如图像识别,目标识别等

RNN:循环神经网络,主要用于处理序列的数据,比如文本处理,语言处理,图像描述等。经典RNN算法是LSTM  RNN

非监督学习:又称为聚类算法,就是不用采用训练数据,自己根据数据特征来进行分类。这些又可以称为autoencoder算法,可以压缩和解压。比如PCA算法,特征属性降维等。

批标准化:batch normalization 有时候需要将输入数据进行标准化或者归一化,可以使得训练数据更加有效的改善训练效果

GAN:生成对抗网络算法,比如采用GAN来画画,制作音乐等。GAN算法让机器学习具备想象力。

<think>好的,我需要回答用户关于TensorFlow入门教程的问题。首先,用户引用了几个相关的资料,我需要结合这些引用内容来组织答案。根据系统级指令,要使用中文,并且结构清晰,分步骤解决问题。同时,需要生成相关问题,并在引用处添加标识。 首先,我应该从用户提供的引用中提取有用的信息。引用[1]提到TensorFlow的官方文档是重要资源,包括API参考、教程和指南,特别是模型园部分。引用[2]和[3]强调了TensorFlow作为开源框架在深度学习中的重要性,以及它能够构建和部署各种模型。引用[4]提到实战书籍,有代码实例和操作步骤,适合由浅入深学习。引用[5]介绍了Skip-gram模型,属于词向量训练,这可能属于自然语言处理的应用案例。 接下来,我需要整理TensorFlow的基础知识入门路径。用户想学习基础知识,可能需要了解安装、核心概念(如张量、计算图、会话)、基本模型构建步骤、常见应用案例,以及官方资源推荐。根据引用内容,可以分步骤讲解这些内容。 在回答中,需要确保所有数学表达式用$...$格式,独立公式用$$...$$。例如,提到线性回归模型时,损失函数可能需要用LaTeX表示。同时,要自然地插入引用标记,比如在提到官方文档时添加[^1],提到实战书籍时添加[^4],等等。 然后,生成相关问题。可能需要围绕用户可能感兴趣的下一步学习步骤提问,比如性能优化、模型部署、应用场景等,确保问题与主题相关,并基于引用内容。 最后,检查是否符合所有格式要求,避免使用Markdown,保持口语化,但结构清晰。确保每个引用只在段落末尾标注,并且正确对应引用的来源。</think>### TensorFlow 入门教程与机器学习框架基础 TensorFlow 是由 Google 开发的开源机器学习框架,广泛用于构建深度学习模型和其他机器学习任务。以下是逐步入门指南: --- #### **1. 安装与环境配置** - **安装方式**:通过 `pip` 安装 TensorFlow: ```bash pip install tensorflow ``` 若需 GPU 支持,则安装 `tensorflow-gpu`(需提前配置 CUDA 和 cuDNN)[^3]。 - **验证安装**: ```python import tensorflow as tf print(tf.__version__) # 输出版本号,如 2.10.0 ``` --- #### **2. 核心概念** - **张量(Tensor)**:TensorFlow 的基础数据结构,可理解为多维数组。例如: - 标量:`tf.constant(3)`,即 $3$。 - 向量:`tf.constant([1,2])`,即 $\begin{bmatrix}1 & 2\end{bmatrix}$。 - **计算图(Graph)**:定义模型的计算流程(TensorFlow 2.x 默认启用即时执行模式,无需手动建图)[^2]。 - **层(Layer)**:预定义的神经网络组件,如 `tf.keras.layers.Dense`。 --- #### **3. 构建第一个模型:线性回归** 以预测房价为例,模型表达式为 $y = wx + b$,通过最小化均方误差(MSE)训练参数: $$ \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - (wx_i + b))^2 $$ **代码实现**: ```python import tensorflow as tf # 生成数据 X = tf.constant([1, 2, 3, 4], dtype=tf.float32) y = tf.constant([2, 4, 6, 8], dtype=tf.float32) # 定义模型 model = tf.keras.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])]) # 编译模型(指定优化器和损失函数) model.compile(optimizer='sgd', loss='mean_squared_error') # 训练模型 model.fit(X, y, epochs=100) # 预测 print(model.predict([5])) # 输出接近 10 ``` 此案例展示了如何用 TensorFlow 实现简单的监督学习。 --- #### **4. 应用场景与扩展** - **图像分类**:使用预训练模型(如 ResNet)快速实现图像识别。 - **自然语言处理**:如引用[^5]提到的 Skip-gram 模型,用于生成词向量。 - **部署与优化**:通过 TensorFlow Lite 将模型部署到移动端,或使用 TensorFlow Serving 进行服务化。 --- #### **5. 学习资源推荐** - **官方文档**:TensorFlow 官网提供完整的教程和 API 文档,适合系统性学习[^1]。 - **实战书籍**:如引用提到的书籍,通过案例逐步掌握框架。 - **社区与课程**:Kaggle 竞赛和 Coursera 专项课程可提升实战能力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值