Python与自然语言处理(三):Tensorflow基础学习

【Python】 TensorFlow 深度学习 深度学习并非一蹴而就的概念,它的思想萌芽可以追溯到上世纪四五十年代。早期萌芽 (1940s - 1960s):连接主义的复兴与反向传播 (1980s - 1990s):低谷与挑战 (1990s - 2000s 初):深度学习的突破与爆发 (2006s - 至今):理解深度学习,需要掌握以下几个核心概念:神经网络 (Neural Networks):特征学习 (Feature Learning) / 表示学习 (Representation Learning):层次化特征提取 (Hierarchical Fe 阅读详情

看了一段时间的TensorFlow,然而一直没有思路,偶然看到一个讲解TensorFlow的系列  视频,通俗易懂,学到了不少,在此分享一下,也记录下自己的学习过程。

教学视频链接:点这里


在机器学习中,常见的就是分类问题, 邮件分类,电影分类 等等

我这里使用iris的数据进行花的种类预测,iris是一个经典的数据集,在weka中也有使用。

iris数据集:点这里


数据集示例:

5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
7.0,3.2,4.7,1.4,Iris-versicolor
6.4,3.2,4.5,1.5,Iris-versicolor
6.9,3.1,4.9,1.5,Iris-versicolor
5.5,2.3,4.0,1.3,Iris-versicolor
6.5,2.8,4.6,1.5,Iris-versicolor
7.1,3.0,5.9,2.1,Iris-virginica
6.3,2.9,5.6,1.8,Iris-virginica
6.5,3.0,5.8,2.2,Iris-virginica
7.6,3.0,6.6,2.1,Iris-virginica
在做 分类预测前,我对数据集进行了处理,这里有三种类别 的花,分别以(1,0,0)表示Iris-setosa,(0,1,0)表示Iris-versicolor,(0,0,1)表示Iris-virginica

处理后的数据集示例:

4.4,3.2,1.3,0.2,1,0,0
5.0,3.5,1.6,0.6,1,0,0
5.1,3.8,1.9,0.4,1,0,0
5.7,3.0,4.2,1.2,0,1,0
5.7,2.9,4.2,1.3,0,1,0
6.2,2.9,4.3,1.3,0,1,0
5.8,2.7,5.1,1.9,0,0,1
6.8,3.2,5.9,2.3,0,0,1
6.7,3.3,5.7,2.5,0,0,1

思路:

首先,将数据集分成两份,一部分为training set,共120条数据;一部分为testing set,共30条数据。

然后,读取数据文件(txt格式),每条数据的1~4列为输入变量,5~7列为花的种类,所以输入为4元,输出为3元。

之后,初始化权重(weights)和 偏量(biase),根据Y=W*X+b进行计算。

最后,计算预测值 与真实值的差距,并选择合适的学习速率来减小差距。


具体实现如下:

# -*-coding=utf-*-
import tensorflow as tf
import numpy as np

training_data = np.loadtxt('./MNIST_data/iris_training.txt',delimiter=',',unpack=True,dtype='float32')
test_data = np.loadtxt('./MNIST_data/iris_test.txt',delimiter=',',unpack=True,dtype='float32')

training_data = training_data.T #转置
test_data = test_data.T

#print(training_data.shape)

iris_X = training_data[:,0:4] #[行,列]
iris_Y = training_data[:,4:7]

iris_test_X = test_data[:,0:4]
iris_test_Y = test_data[:,4:7]

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 #推荐biases最好不为零
	Wx_plus_b = tf.matmul(inputs,Weights) + biases
	if activation_function is None: #activation_function=none表示线性函数,否则是非线性
		outputs = Wx_plus_b
	else:
		outputs = activation_function(Wx_plus_b)
	return outputs

def computer_accuracy(v_xs,v_ys):
	global prediction
	y_pre = sess.run(prediction,feed_dict={xs:v_xs})
	correct_prediction = tf.equal(tf.argmax(y_pre,1),tf.argmax(v_ys,1))
	accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
	result = sess.run(accuracy,feed_dict={xs:v_xs,ys:v_ys})
	return result

xs = tf.placeholder(tf.float32,[None,4])
ys = tf.placeholder(tf.float32,[None,3])

prediction = add_layer(xs,4,3,activation_function=tf.nn.softmax) #softmax一般用来做classification

cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys*tf.log(prediction),reduction_indices=[1])) #loss
#学习速率根据 具体使用的数据进行选取
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(cross_entropy)
init = tf.initialize_all_variables()sess = tf.Session()sess.run(init)
for i in range(700): #迭代700次
      sess.run(train_step,feed_dict={xs:iris_X,ys:iris_Y})
      if i % 50 == 0:
            print(computer_accuracy(iris_test_X,iris_test_Y),sess.run(cross_entropy,feed_dict={xs:iris_X,ys:iris_Y})) #测试准确率与训练误差
 

 
输出: 

第一次测试:
(0.53333336, 1.4005684)
(0.60000002, 1.0901265)
(0.56666666, 0.88059545)
(0.69999999, 0.75857288)
(0.76666665, 0.69699961)
(0.80000001, 0.66695786)
(0.80000001, 0.65065509)
(0.80000001, 0.63982773)
(0.80000001, 0.63119632)
(0.80000001, 0.62356067)
(0.80000001, 0.61648983)
(0.80000001, 0.60982168)
(0.80000001, 0.60348624)
(0.80000001, 0.59744602)

第二次测试:
(0.53333336, 6.5918231)
(0.60000002, 5.4625101)
(0.60000002, 4.4928107)
(0.60000002, 3.6116555)
(0.60000002, 2.8158391)
(0.56666666, 2.094959)
(0.53333336, 1.4308809)
(0.53333336, 0.89007533)
(0.5, 0.61958134)
(0.46666667, 0.53800708)
(0.5, 0.51004487)
(0.46666667, 0.49609584)
(0.5, 0.48745066)
(0.5, 0.48149654)

这里使用的numpy,因此需要对numpy有所了解。这里没有涉及到隐藏层,只有一层输入层和一层输出层,分类的准确率不是太好,每次测试的结果也不相同,应该跟weights的初始值有关;为提高准确率,考虑加入隐藏层,按照这个思路继续尝试!


训练生成的网络想要 保存下来 就需要用到tensorflow.train.Saver()了,下面是一个简单的例子:

import tensorflow as tf
import numpy as np

#save to file
W = tf.Variable([[1.,2.,3.],[4.,5.,6.]],name='weights')
b = tf.Variable([[1.,2.,3.]],name='biases')

init = tf.initialize_all_variables()

saver = tf.train.Saver()

with tf.Session() as sess:
	sess.run(init)
	save_path = saver.save(sess,"./save_net.ckpt") #存储网络到XX路径
	print('Save to path:',save_path)


#restore variables
#redefine the same shape and same type for your variables
<span style="font-size:18px;"></span><pre name="code" class="python">#因为训练时 W和b都是float32的类型,若不指定数据类型会报错
w_type = np.array(np.arange(6).reshape(2,3),dtype=np.float32)b_type = np.array(np.arange(3).reshape(1,3),dtype=np.float32)W = tf.Variable(w_type,name='weights')b = tf.Variable(b_type,name='biases')#not need init stepsaver = tf.train.Saver()with tf.Session() as sess:saver.restore(sess,'./save_net.ckpt') #从XX路径读取网络print('weights:',sess.run(W))print('weights:',sess.run(b))


【output】:
 

 



Python TensorFlow库【深度学习框架】全面讲解与案例 自定义损失函数和训练步骤# 初始化权重# 前向传播计算# 使用自定义层])# 正确实现状态更新accumulation_steps = 4 # 累积4个批次的梯度# 累积梯度# 每 accumulation_steps 步更新一次权重train_step.accum_grads = [tf.zeros_like(g) for g in gradients] # 重置累积梯度。 阅读详情

相关推荐

AI入门指南:从数学基础到实战项目的学习路径

人工智能(AI)作为当今最热门的技术领域之一,其核心建立在数学基础、编程能力和领域知识三大基石之上。数学方面,线性代数、概率论和微积分构成了AI算法的理论基础,特别是矩阵运算和梯度下降等概念在神经网络中广泛应用。编程实现上,Python凭借NumPy、Pandas等科学计算库成为首选语言,而PyTorch和TensorFlow等深度学习框架大大降低了模型开发门槛。在实际应用中,计算机视觉和自然语言处理(NLP)是最典型的AI落地场景,涉及CNN、Transformer等前沿架构。对于初学者,建议采用分阶段学

weixin_29040367的博客 60

Python深度学习:TensorFlow基础教程

深度学习是一种机器学习方法借助多层神经网络进行大规模数据分析和处理,以获取隐藏在数据中的特征模式,常应用于图像识别、语音识别、自然语言处理等领域。TensorFlow是由Google Brain团队开发的一个开源的数值计算库,主要用于支持机器学习和深度学习的算法研究和开发,是目前最流行的深度学习框架之一。

BXA 9745

NLP自然语言处理常用的Python库 及安装方法

1、NLTK Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。 安装:pip install nltk 2、Gensim 可以用来从文档中自劢提取语义主题。它包含了很多非监督学习算法如:TF/IDF,潜在语义分析(Latent Semantic Analysis,LSA)、隐含狄利克雷分配(Latent Dirichlet All...

NgCafai的博客 2万+

python中tensorflow_python机器学习TensorFlow框架

TensorFlow框架关注公众号“轻松学编程”了解更多。一、简介​ TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。​ Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端的计算过程。​ TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处...

weixin_28750421的博客 7233

强推 | 学习自然语言处理(NLP)的学习方法和资料合集

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。 作者:乐雨泉,优秀的nlp学习者,在各类技术论坛和网站署名yuq...

简书博客搬家测试账号 1218

【Python深入浅出㊸】解锁Python3中的TensorFlow:开启深度学习之旅

TensorFlow 是由 Google 开发和维护的一个开源的端到端机器学习平台,它为开发者提供了构建、训练和部署机器学习模型的强大工具和框架。该框架最初于 2015 年开源,一经推出便在机器学习和深度学习领域引起了巨大的反响,迅速成为了最受欢迎的框架之一。TensorFlow 这个名字来源于其核心概念:张量(Tensor)和流(Flow)。张量是一种多维数组,是 TensorFlow 中数据的基本表示形式。

邓邓子的博客 1692

Awesome AI/ML Resources工具库全解析:PyTorch、TensorFlow、Scikit-Learn实战教程

Awesome AI/ML Resources是一个面向初学者的免费AI/ML学习资源库,包含完整学习路线图和丰富实战资源,帮助你系统掌握PyTorch、TensorFlow和Scikit-Learn等主流框架。本文将详细解析这个资源库的核心内容与使用方法,助你快速入门人工智能与机器学习领域。 [![Awesome AI/ML Resources工具库概览](https://raw.gitcod

gitblog_02929的博客 581

TensorFlow在自然语言处理(NLP)中的实战应用

随着深度学习技术的快速发展,自然语言处理(NLP)从传统的规则引擎时代进入到数据驱动的智能模型阶段。TensorFlow作为谷歌开源的端到端机器学习框架,凭借其强大的分布式计算能力、灵活的模型构建接口和丰富的生态支持,成为NLP领域最主流的开发平台之一。本文旨在通过系统化的技术解析与实战案例,帮助开发者掌握TensorFlow在NLP任务中的核心应用范式,涵盖文本分类、序列标注、机器翻译、文本生成等典型场景的工程化实现方法。首先建立NLP基本任务与TensorFlow技术栈的映射关系。

AI天才研究院 1103

深度学习Python实践指南:从入门到精通的10个核心技巧 [特殊字符]

深度学习Python实践指南为初学者提供了完整的机器学习学习路径,通过《Deep Learning with Python》书籍的官方Jupyter笔记本,帮助您快速掌握神经网络的核心概念和应用技巧。无论您是编程新手还是希望提升深度学习技能的开发者,这份资源都能为您提供从基础数学原理到高级AI应用的全方位指导。 ## 📚 项目概述:深度学习Python学习宝库 这个开源项目包含了《Deep

gitblog_00380的博客 1375

一种使用Python和TensorFlow库进行NLP任务的全流程解决方案

自然语言处理(NLP)在近年来受到越来越多的关注,它可以帮助企业更好地理解和处理用户输入的数据、提高搜索引擎效果、帮助医疗科技公司进行诊断分析、自动生成营销推广文案等众多应用场景。然而,如何实现高效、准确且精准的自然语言处理任务,仍是一个困难的问题。最近几年来,由于神经网络技术的快速发展,机器学习模型如BERT、GPT-2等出现在了自然语言处理领域,这些模型在NLP任务上取得了非常好的成果。任务类型:有监督学习、无监督学习和强化学习三种NLP任务;

AI天才研究院 1112

Tensorflow中实现常用自然语言处理模块的Python项目

循环神经网络(Recurrent Neural Network, RNN)是一种用于处理序列数据的神经网络。它的特点是隐藏层神经元之间存在连接,能够将信息在序列中向前传递。RNN在处理文本、语音、时间序列数据等方面表现出色。代码示例使用TensorFlow实现一个简单的RNN模型:# 输入数据维度设置input_dim = 100 # 词向量的维度output_dim = 1 # 输出结果为一个标量rnn_units = 32 # RNN单元数])

weixin_42437253的博客 1063

深入解析awesome-ai-resources:从数学基础到AI Agent的完整学习路径

awesome-ai-resources是一个全面的免费资源集合,旨在帮助学习者从零开始掌握AI/ML、LLMs和Agent相关知识。无论你是AI领域的新手还是希望系统提升技能的普通用户,这个项目都能为你提供清晰的学习路径和丰富的学习资源。 ## 🧮 数学基础:AI学习的基石 数学是AI和机器学习的基础,没有扎实的数学功底,很难真正理解AI算法的原理和应用。awesome-ai-resourc

gitblog_00193的博客 330

从仿真到真机:如何将XTDrone的VINS-Fusion+RTABMap建图方案部署到真实无人机上?

本文详细介绍了如何将XTDrone的VINS-Fusion+RTABMap建图方案从仿真环境迁移到真实无人机上。内容涵盖硬件选型、传感器配置、VINS-Fusion调优、RTABMap性能优化以及系统集成等关键步骤,特别针对三维稠密重建在真实环境中的挑战提供了实用解决方案。

weixin_29056781的博客 242

Python人工智能与深度学习实战指南:TensorFlow、PyTorch、Keras三大框架解析

想要快速掌握人工智能和深度学习技术吗?Python生态提供了强大的工具支持!TensorFlow、PyTorch和Keras是目前最受欢迎的三大深度学习框架,每个都有独特的优势和应用场景。本指南将为你详细介绍这三个框架的特点和实战应用。 ## 🚀 深度学习框架概览 ### TensorFlow:工业级首选 TensorFlow是谷歌开源的深度学习框架,拥有完整的生态系统和强大的社区支持。它

gitblog_00927的博客 1095

【DAY11】超参数调整专题1

核心优势: 它不是随机选择下一个点,而是根据先前评估的结果建立一个概率模型(通常是高斯过程),预测哪些参数组合可能产生更好的结果,并据此选择下一个评估点。这使得它在寻找最优解方面通常比随机搜索更高效(用更少的迭代次数达到相似或更好的性能),特别是当模型训练(单次评估)非常耗时的时候。实际上,有着非常多的方式可以实现贝叶斯优化,上面的代码比较简洁美观,贝叶斯优化和网格搜索的代码书写风格高度一致。- 需要定义参数的搜索空间,与随机搜索类似,当搜索空间非常大时,它通常比网格搜索和随机搜索更有效。

daomingwu1的博客 747

SQLSTATE58030

在优化一条SQL的时候遇到了执行错误 gtlions =# select t1.telnumber,t2.ua,t2.url,t1.apply_name,t2.apply_name from tb1 t1 gtlions -# left outer join tb2 t2 on t1.sid = t2.ipsid gtlions-# where t1.sum_date=20141128 a

Gtlions Tracker 3660

自然语言处理实战:Python 与 NLP 结合

Python 与 NLP 的结合为我们提供了一种高效的方式来解决各种自然语言处理问题。无论是使用传统方法还是深度学习技术,Python 都能为我们提供强大的支持。希望本文能够帮助你入门 NLP,并激发你进一步探索这一领域的兴趣。```

2501_91226841的博客 314

将雷达连接到树莓派的串口

dev/ttyAMA0 是树莓派的主要 UART(用于 GPIO 引脚 8 (TXD) 和 10 (RXD))。通常,树莓派使用 GPIO 引脚 8 (TXD) 和 10 (RXD) 进行串口通信。树莓派上通常有两个串口:/dev/ttyS0 和 /dev/ttyAMA0。你需要确认雷达的 TX 和 RX 引脚,并与树莓派的对应引脚连接。VCC(电源)连接到树莓派的 3.3V 或 5V(根据雷达的要求)MR(Receive)连接到树莓派的 GPIO 8 (TXD)GND(地)连接到树莓派的 GND。

qq_45943628的博客 1466

Python深度学习基于Tensorflow(8)自然语言处理基础

与前后顺序有关的数据称为序列数据,对于序列数据,我们可以使用循环神经网络进行处理,循环神经网络RNN已经成功的运用于自然语言处理,语音识别,图像标注,机器翻译等众多时序问题;RNN模型有以下类别:对于全连接模型,X∈RndX \in \mathcal{R}^{nd}X∈Rnd,WX∈RdhW_X \in \mathcal{R}^{dh}WX​∈Rdh,B∈R1hB \in \mathcal{R}^{1h}B∈R1h :H=f(XWX+B)H=f(XW_X+B)H=f(XWX​+B) 有H∈RnhH \in

bigcrab的博客 697

非球面检测

摘要:非球面镜检测主要采用干涉法,包括零位补偿和非零位补偿两种方式。零位补偿通过透镜组完全校正像差,精度达1%波长,但设计复杂成本高;非零位补偿利用部分像差补偿降低波前斜率,适用于规则非球面。折射-衍射混合补偿镜能同时校正多种像差。实际检测中可采用物理补偿镜或动态CGH加载方案,光路设计需运用坐标断点和多重结构技术实现复杂光路建模。不同方法各具优势,需根据检测需求选择合适方案。

Zhaxibamao的博客 2110

汽车IVI中控开发入门及进阶(三十八):手机投屏HiCar开发

为了兼容这部分手机,车机端在向手机端发送USB控制命令字的同时,需要启动mDNS Server,广播车机端IP地址和HiCar SDK侦听的Server Socket端口(IP地址和端口在HiCar SDK初始化USB driver时,告知车机),在检测到手机断开USB连接时关闭mDNS Server。厂商在集成HiCar SDK开发HMI应用时,不可避免会使用到智能座舱的敏感权限,例如位置权限、摄像头权限、麦克风权限等,SDK初始化时,厂商HMI应用需要设置必要的车机参数供SDK使用。

码农17年的博客 1076

机器学习、计算机视觉与NLP:从基础到深度学习的综合指南

机器学习是一门涉及多个领域的交叉学科,它的核心在于使计算机模拟或实现人类的学习行为,以获取新知识和技能,并不断改善自身性能。机器学习的定义和目的是通过让计算机从数据中自主学习,无需明确编程即可做出决策或预测。这一领域的目标包括从数据中自动发现模式和规律,利用这些发现来预测未来数据或未知情况。机器学习的分类可以从不同的角度进行划分,如基于学习策略、学习方法、学习方式和数据形式等。这些分类方法有助于理解不同机器学习算法的特点和适用场景。

weixin_63740705的博客 1712

2026年算法工程师常见面试简答题

本文摘要:文章系统梳理了机器学习与深度学习中的30个核心概念,涵盖模型优化、评估指标、经典算法和大模型应用等关键知识点。主要内容包括:1)过拟合与欠拟合的成因及解决方法;2)偏差-方差权衡原理;3)数据划分与交叉验证策略;4)分类/回归任务评估指标选择;5)逻辑回归、决策树、SVM等传统算法解析;6)梯度下降优化与正则化技术;7)CNN、RNN、Transformer架构对比;8)Embedding表示与RAG技术。特别强调面试高频考点如XGBoost改进、注意力机制原理等,并给出实际工程中的解决方案建议,

不务正业的猿 350

Python Tensorflow 自然语言处理代码案例:文本处理

在之前的章节中,我们学习了有关离散数据、图片信息的回归和分类方法。本节课,我们想利用深度学习模型,对电影评论这样的文本信息进行分类,判断观影者是喜欢还是不喜欢该电影。让计算机处理、理解文本信息,其中涉及到自然语言处理(NLP)技术,什么是自然语言处理呢,它又有什么样的应用场景?

学亮编程手记 950

windows在使用ping 127.0.0.1时出现一般故障的解决方案

本文主要介绍了windows在使用ping 127.0.0.1时出现一般故障的解决方案,希望能对使用windows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 7万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

《TensorFlow与自然语言处理应用》勘误表

2019年8月,小作《TensorFlow与自然语言处理应用》(清华大学出版社)正式发行,非常感谢清华大学出版社夏毓彦等各位老师。个人对于机器学习、深度学习和NLP也是略懂皮毛,搬砖多些,加之时间有限,书中难免有些错谬之处,如有读者发现问题,欢迎您的批评指正。个人也在学习中,希望今后与大家一起学习探讨,共同进步。现将书中一些问题做些梳理,后期发现新的问题也会不断更新,谢谢大家。 PS: 环境--...

蓝色之旅的博客 1242

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: Centos7 安装 matplotlib问题
下一篇: java读写excel
monkey131499
博客等级 码龄12年 59粉丝 33原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值