学习Tensorflow遇到的一些不懂函数的学习

本文介绍了TensorFlow中几个常用函数的使用方法,包括tf.argmax()的索引返回规则,tf.random_normal、tf.truncated_normal及tf.random_uniform生成随机数的方式,并展示了如何利用这些函数生成不同类型的随机张量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.tf.argmax()

a = tf.constant([[1,5,3],
                            [4,2,6]])
sess = tf.Session()
print sess.run(tf.argmax(a, 0))#[1 0 1]
print sess.run(tf.argmax(a, 1))#[1 2]
#argmax()函数返回最大值的索引,0返回每一列最大值的索引,1返回每一行最大值的索引

2.tf.random_normal | tf.truncated_normal | tf.random_uniform

tf.random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None)
tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
tf.random_uniform(shape,minval=0,maxval=None,dtype=tf.float32,seed=None,name=None)

这几个都是用于生成随机数tensor的。尺寸是shape
random_normal: 正太分布随机数,均值mean,标准差stddev
truncated_normal:截断正态分布随机数,均值mean,标准差stddev,不过只保留[mean-2*stddev,mean+2*stddev]范围内的随机数
random_uniform:均匀分布随机数,范围为[minval,maxval]

import tensorflow as tf

with tf.Session() as sess:
    print "tf.random_normal([3,3,3], mean = 0.0, stddev = 2.0)----------------"
    print sess.run(tf.random_normal([3,3,3], mean = 0.0, stddev = 2.0))
    print "tf.random_uniform([3,3,3], minval = 0.0, maxval = 10)---------------"
    print sess.run(tf.random_uniform([3,3,3], minval = 0.0, maxval = 10))
    print "tf.truncated([2,2], mean = 5.0, stddev = 1.0)-------------------"
    print sess.run(tf.truncated_normal([2,2], mean = 5.0, stddev = 1.0))
tf.random_normal([3,3,3], mean = 0.0, stddev = 2.0)----------------
[[[-1.52943552 -0.66951263 -0.92204839]
  [ 0.98132163  0.30230746 -0.76994801]
  [-2.52370524  1.63953972 -0.90987027]]

 [[-2.49060225  2.71975255  1.97556829]
  [ 1.31254244 -4.19041204 -2.62262273]
  [ 1.17605031 -4.44652367  0.31839186]]

 [[-1.66576338  1.9761579  -2.44654465]
  [ 2.1690588   1.38606691  0.6156947 ]
  [ 0.07768013  2.35041523  0.11098886]]]
tf.random_uniform([3,3,3], minval = 0.0, maxval = 10)---------------
[[[ 5.46428204  4.6617341   4.74864483]
  [ 3.88854265  4.4059515   8.61946297]
  [ 8.42585945  8.20820904  6.00255251]]

 [[ 7.05990314  7.84427404  8.17808056]
  [ 9.67488766  4.86453056  4.11894894]
  [ 6.64579391  8.30910301  4.74615002]]

 [[ 9.56317806  7.91035557  3.3411324 ]
  [ 4.64870071  8.23911667  9.47863197]
  [ 9.80347633  1.5449512   9.06284809]]]
tf.truncated([2,2], mean = 5.0, stddev = 1.0)-------------------
[[ 5.74013472  5.93944788]
 [ 5.29522514  4.77231503]]

3.tf.nn.softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, dim=-1, name=None)与tf.nn.sparse_softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, name=None)

<think>嗯,用户问的是学习Python的正确方式。首先,我需要确定用户的需求是什么。可能是一个刚开始学习编程的新手,或者有一定基础想更系统地学习Python的人。不管怎样,正确的方式应该包括基础知识的掌握、实践、项目经验、持续学习等几个方面。 首先,基础部分很重要。Python的语法相对简单,但如果不打好基础,后面会遇到很多问题。比如变量、数据类型、控制结构这些基本概念,必须理解清楚。然后函数、模块、异常处理这些进阶内容也需要逐步学习。这时候可能会推荐一些书籍或在线教程,比如《Python Crash Course》或者廖雪峰的Python教程,这些资源比较适合初学者。 接下来,实践是关键。光看理论不写代码是学不会的。用户需要多写代码,解决实际问题。LeetCode和Codewars这样的平台可以帮助练习算法和逻辑思维。小项目比如计算器、待办事项应用,能帮助巩固知识。这时候可能会想到用户可能遇到的困难,比如不知道从哪里开始做项目,或者遇到bug不知道如何解决,这时候需要引导他们如何分解问题,利用文档和社区资源。 然后是项目驱动学习。当用户有了一定的基础后,做实际项目能提升综合能力。Web开发、数据分析、自动化脚本都是不错的领域。比如用Flask或Django做网站,用Pandas做数据分析,这些项目能应用所学知识,并且积累经验。用户可能会担心项目复杂度,可能需要建议从简单项目开始,逐步增加难度。 持续学习方面,Python的生态系统很庞大,库和框架很多,需要不断学习新技术。参与开源项目或者阅读源码可以提升代码质量。同时,学习计算机基础知识也很重要,比如数据结构、算法、操作系统,这些能帮助更深入理解编程。这时候可能会想到用户可能只关注语言本身而忽略基础,需要强调这些基础知识的重要性。 另外,社区和资源的重要性。遇到问题要善于利用Stack Overflow、GitHub等平台,参加线下或线上的学习小组也能获得支持。推荐一些优质的资源,比如官方文档、Real Python的教程,这些都能帮助用户更高效地学习。 最后,避免常见误区。比如不要一味追求新框架,而忽视基础;不要复制代码而不理解;不要害怕犯错,调试是学习的一部分。用户可能在实践中遇到挫折,需要鼓励他们坚持,并学会利用调试工具和日志来解决问题。 总结下来,正确的学习路径应该是:扎实基础→多实践→做项目→持续学习→利用社区资源→避免误区。需要把这些步骤结构化,用清晰的中文表达出来,确保用户能逐步跟随,同时保持回答的真实可靠性。</think>学习Python的正确方式可以遵循以下结构化路径,结合理论、实践和持续提升: 一、打好基础(1-2个月) 1. 核心语法 - 变量、数据类型(字符串/列表/字典等) - 控制流:`if-else`、`for`、`while` - 函数定义与调用:参数传递、返回值 - 文件操作:`open()`上下文管理器 - 异常处理:`try-except`结构 2. 推荐资源 - 入门书籍:《Python编程:从入门到实践》 - 互动平台:Codecademy Python课程 - 官方文档:[docs.python.org](https://docs.python.org/zh-cn/3/) 二、强化实践(持续进行) 1. 每日编码 - 坚持每天写50+行代码 - 解决实际问题:例如自动整理文件、网页数据抓取 2. 算法训练 - 初级:LeetCode简单题目(每日1题) - 进阶:实现经典算法(如快速排序、Dijkstra算法) 3. 微型项目 ```python # 示例:简易爬虫 import requests from bs4 import BeautifulSoup def get_news_titles(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') return [h2.text for h2 in soup.select('h2.news-title')] ``` 三、项目驱动学习(3-6个月) 1. 方向选择 - Web开发:Django/Flask框架 - 数据分析:Pandas/NumPy库 - 机器学习:Scikit-learn/TensorFlow - 自动化:Selenium/OpenCV 2. 项目示例 - 开发个人博客系统(含用户认证、文章管理) - 股票数据分析可视化(Matplotlib+Seaborn) - 基于MNIST数据集的手写数字识别 四、进阶提升(持续) 1. 深入理解 - 掌握装饰器、生成器、元类等高级特性 - 学习设计模式(单例、工厂、观察者模式) - 研究CPython源码实现 2. 性能优化 - 使用`cProfile`进行性能分析 - 掌握多线程/多进程编程 - 学习Cython加速关键代码 五、学习建议 1. 有效方法 - 采用"学-练-教"循环:学习后立即实践,尝试向他人讲解 - 建立代码库(GitHub),定期整理学习笔记 - 参与开源项目(从修复简单issue开始) 2. 避坑指南 - 不要过度依赖复制粘贴代码 - 避免过早接触复杂框架(如直接学习Django而不懂HTTP) - 警惕"教程陷阱"(看10小时视频不如写1小时代码) 3. 推荐工具链 - IDE:PyCharm/VSCode - 环境管理:Anaconda + virtualenv - 代码质量:flake8 + black + pytest 六、学习路线图示例 ``` 基础语法(2周) → 标准库(1周) → 第三方库(2周) → 项目开发(1个月) → 源码研究(持续) ``` 关键要点:保持持续编码的习惯比突击学习更有效。建议每天投入1-2小时,周末可安排4小时以上的项目开发时间。遇到问题善用官方文档和Stack Overflow,但务必自己先尝试调试至少30分钟。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值