深度学习中常见的python问题(1)

numpy的argmax
argmax常用在CNN中最后的全连接层输出后。

correct_prediction = tf.equal(tf.argmax(finalOutput,1), tf.argmax(y,1))

argmax返回的是最大数的索引.argmax有一个参数axis,默认是0,表示第几维的最大值,如果在2维数组中,axis=0表示按列比较的最大值的索引。
如果是三维,

import numpy as np
a = np.array([
              [
                  [1, 5, 5, 2],
                  [9, -6, 2, 8],
                  [-3, 7, -9, 1]
              ],

              [
                  [-1, 5, -5, 2],
                  [9, 6, 2, 8],
                  [3, 7, 9, 1]
              ]
            ])
print(np.argmax(a, axis=0))

np.argmax(a, axis=0)的含义是a[0][j][k],a[1][j][k] (j=0,1,2,k=0,1,2,3)中最大值的索引。从a[0][j][k]开始,a[0][j][k]对应的索引为((0,0,0,0),(0,0,0,0),(0,0,0,0)),拿a[0][j][k]和a[1][j][k]对应项作比较6大于-6,3大于-3,9大于-9,所以更新这几个位置的索引,将((0,0,0,0),(0,0,0,0),(0,0,0,0))更新为((0,0,0,0),(0,1,0,0),(1,0,1,0)).

zip

for t1, t2 in zip(xNew, wNew)

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

a = [1,2,3]

b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
zip(*zipped) # 与 zip 相反,可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

也就是将a,b一一对应打包成元组。zip(xNew, wNew) 一个xNew 对应一个wNew.

.get_shape().as_list()
mergeFeatureMap.get_shape().as_list()

字典的 .item

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
sum = 0
for key, value in d.items():
    sum = sum + value
    print(key, ':' ,value)
print('平均分为:' ,sum /len(d))
1
2
3
4
5
6
输出结果:

D:\Users\WordZzzz\Desktop>python3 test.py
Adam : 95
Lisa : 85
Bart : 59
Paul : 74
平均分为: 78.25

就是将字典的value和key 组成一起。

argparse

import argparse

2parser = argparse.ArgumentParser()

3parser.add_argument()

4parser.parse_args()

argparse是python用于解析命令行参数和选项的标准模块.每一个add_argument方法对应一个你要关注的参数或选项;最后调用parse_args()方法进行解析;解析成功之后即可使用

urllib.request.urlopen
完成最基本的简单网页的 GET 请求抓取


urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
可以发现除了第一个参数可以传递URL之外,我们还可以传递其它的内容,比如 data (附加参数), timeout (超时时间)等等。
data 参数是可选的,如果要添加 data ,它要是字节流编码格式的内容,即 bytes 类型,通过 bytes() 函数可以进行转化,另外如果你传递了这个 data 参数,它的请求方式就不再是 GET 方式请求,而是 POST 。

猜你喜欢

转载自blog.csdn.net/weixin_41376658/article/details/79595869