真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python計算流函數(shù) python函數(shù)

python中eval()函數(shù)的作用是什么?

eval() 函數(shù)用來執(zhí)行一個字符串表達式,并返回表達式的值。

城固ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

eval函數(shù)功能:將字符串str當成有效的表達式來求值并返回計算結(jié)果。eval函數(shù)可以實現(xiàn)list、dict、tuple與str之間的轉(zhuǎn)化。

eval() 使用時用到的參數(shù):expression -- 表達式。globals -- 變量作用域,全局命名空間,如果被提供,則必須是一個字典對象。locals -- 變量作用域,局部命名空間,如果被提供,可以是任何映射對象。

python中如何將對象輸出到標準輸出流:

print函數(shù)是你學Python接觸到的第一個函數(shù),它將對象輸出到標準輸出流,可將任意多個對象打印出來,函數(shù)的具體定義:objects 是可變參數(shù),所以你可以同時將任意多個對象打印出來。默認使用空格分隔每個對象,通過指定sep參數(shù)可以使用逗號分隔。

對象默認輸出的是標準輸出流,你也可以將內(nèi)容保存到文件中。

怎么用python寫tensorflow

開始使用

TensorFlow并不是一個純粹的神經(jīng)網(wǎng)絡框架, 而是使用數(shù)據(jù)流圖進行數(shù)值分析的框架.

TensorFlow使用有向圖(graph)表示一個計算任務.圖的節(jié)點稱為ops(operations)表示對數(shù)據(jù)的處理,圖的邊f(xié)low 描述數(shù)據(jù)的流向.

該框架計算過程就是處理tensor組成的流. 這也是TensorFlow名稱的來源.

TensorFlow使用tensor表示數(shù)據(jù). tensor意為張量即高維數(shù)組,在python中使用numpy.ndarray表示.

TensorFlow使用Session執(zhí)行圖, 使用Variable維護狀態(tài).tf.constant是只能輸出的ops, 常用作數(shù)據(jù)源.

下面我們構(gòu)建一個只有兩個constant做輸入, 然后進行矩陣乘的簡單圖:

from tensorflow import Session, device, constant, matmul'''構(gòu)建一個只有兩個constant做輸入, 然后進行矩陣乘的簡單圖:'''#如果不使用with session()語句, 需要手動執(zhí)行session.close().

#with device設備指定了執(zhí)行計算的設備:

# ? ?"/cpu:0": 機器的 CPU.

# ? ?"/gpu:0": 機器的第一個 GPU, 如果有的話.

# ? ?"/gpu:1": 機器的第二個 GPU, 以此類推.

with Session() as session: ?# 創(chuàng)建執(zhí)行圖的上下文

with device('/cpu:0'): ?# 指定運算設備

mat1 = constant([[3, 3]]) ?# 創(chuàng)建源節(jié)點

mat2 = constant([[2], [2]])

product = matmul(mat1, mat2) # 指定節(jié)點的前置節(jié)點, 創(chuàng)建圖

result = session.run(product) # 執(zhí)行計算 ? ? ? ?print(result)123456789101112131415161718

下面使用Variable做一個計數(shù)器:

from tensorflow import Session, constant, Variable, add, assign, initialize_all_variables

state = Variable(0, name='counter') # 創(chuàng)建計數(shù)器one = constant(1) # 創(chuàng)建數(shù)據(jù)源: 1val = add(state, one) # 創(chuàng)建新值節(jié)點update = assign(state, val) # 更新計數(shù)器setup = initialize_all_variables() # 初始化Variablewith Session() as session:

session.run(setup) # 執(zhí)行初始化

print(session.run(state)) # 輸出初值

for i in range(3):

session.run(update) # 執(zhí)行更新

print(session.run(state)) # 輸出計數(shù)器值12345678910111213

在使用變量前必須運行initialize_all_variables()返回的圖, 運行Variable節(jié)點將返回變量的值.

本示例中將構(gòu)建圖的過程寫在了上下文之外, 而且沒有指定運行設備.

上面示例中session.run只接受一個op作為參數(shù), 實際上run可以接受op列表作為輸入:

session.run([op1, op2])1

上述示例一直使用constant作為數(shù)據(jù)源, feed可以在運行時動態(tài)地輸入數(shù)據(jù):

from tensorflow import Session, placeholder, mul, float32

input1 = placeholder(float32)

input2 = placeholder(float32)

output = mul(input1, input2)with Session() as session: ? ?print session.run(output, feed_dict={input1: [3], input2: [2]})1234567

實現(xiàn)一個簡單神經(jīng)網(wǎng)絡

神經(jīng)網(wǎng)絡是應用廣泛的機器學習模型, 關于神經(jīng)網(wǎng)絡的原理可以參見這篇隨筆, 或者在tensorflow playground上體驗一下在線demo.

首先定義一個BPNeuralNetwork類:

class BPNeuralNetwork:

def __init__(self):

self.session = tf.Session()

self.input_layer = None

self.label_layer = None

self.loss = None

self.trainer = None

self.layers = [] ? ?def __del__(self):

self.session.close()1234567891011

編寫一個生成單層神經(jīng)網(wǎng)絡函數(shù),每層神經(jīng)元用一個數(shù)據(jù)流圖表示.使用一個Variable矩陣表示與前置神經(jīng)元的連接權(quán)重, 另一個Variable向量表示偏置值, 并為該層設置一個激勵函數(shù).

def make_layer(inputs, in_size, out_size, activate=None):

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

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

result = tf.matmul(inputs, weights) + basis ? ?if activate is None: ? ? ? ?return result ? ?else: ? ? ? ?return activate(result)12345678

使用placeholder作為輸入層.

self.input_layer = tf.placeholder(tf.float32, [None, 2])1

placeholder的第二個參數(shù)為張量的形狀, [None, 1]表示行數(shù)不限, 列數(shù)為1的二維數(shù)組, 含義與numpy.array.shape相同.這里, self.input_layer被定義為接受二維輸入的輸入層.

同樣使用placeholder表示訓練數(shù)據(jù)的標簽:

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

使用make_layer為神經(jīng)網(wǎng)絡定義兩個隱含層, 并用最后一層作為輸出層:

self.loss = tf.reduce_mean(tf.reduce_sum(tf.square((self.label_layer - self.layers[1])), reduction_indices=[1]))1

tf.train提供了一些優(yōu)化器, 可以用來訓練神經(jīng)網(wǎng)絡.以損失函數(shù)最小化為目標:

self.trainer = tf.train.GradientDescentOptimizer(learn_rate).minimize(self.loss)1

使用Session運行神經(jīng)網(wǎng)絡模型:

initer = tf.initialize_all_variables()# do trainingself.session.run(initer)

for i in range(limit):

self.session.run(self.trainer, feed_dict={self.input_layer: cases, self.label_layer: labels})12345

使用訓練好的模型進行預測:

self.session.run(self.layers[-1], feed_dict={self.input_layer: case})1

完整代碼:

import tensorflow as tfimport numpy as npdef make_layer(inputs, in_size, out_size, activate=None):

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

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

result = tf.matmul(inputs, weights) + basis ? ?if activate is None: ? ? ? ?return result ? ?else: ? ? ? ?return activate(result)class BPNeuralNetwork:

def __init__(self):

self.session = tf.Session()

self.input_layer = None

self.label_layer = None

self.loss = None

self.optimizer = None

self.layers = [] ? ?def __del__(self):

self.session.close() ? ?def train(self, cases, labels, limit=100, learn_rate=0.05):

# 構(gòu)建網(wǎng)絡

self.input_layer = tf.placeholder(tf.float32, [None, 2])

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

self.layers.append(make_layer(self.input_layer, 2, 10, activate=tf.nn.relu))

self.layers.append(make_layer(self.layers[0], 10, 2, activate=None))

self.loss = tf.reduce_mean(tf.reduce_sum(tf.square((self.label_layer - self.layers[1])), reduction_indices=[1]))

self.optimizer = tf.train.GradientDescentOptimizer(learn_rate).minimize(self.loss)

initer = tf.initialize_all_variables() ? ? ? ?# 做訓練

self.session.run(initer) ? ? ? ?for i in range(limit):

self.session.run(self.optimizer, feed_dict={self.input_layer: cases, self.label_layer: labels}) ? ?def predict(self, case):

return self.session.run(self.layers[-1], feed_dict={self.input_layer: case}) ? ?def test(self):

x_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

y_data = np.array([[0, 1, 1, 0]]).transpose()

test_data = np.array([[0, 1]])

self.train(x_data, y_data)

print(self.predict(test_data))

nn = BPNeuralNetwork()

nn.test()12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152

上述模型雖然簡單但是使用不靈活, 作者采用同樣的思想實現(xiàn)了一個可以自定義輸入輸出維數(shù)以及多層隱含神經(jīng)元的網(wǎng)絡, 可以參見dynamic_bpnn.py

import tensorflow as tfimport numpy as npdef make_layer(inputs, in_size, out_size, activate=None):

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

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

result = tf.matmul(inputs, weights) + basis ? ?if activate is None: ? ? ? ?return result ? ?else: ? ? ? ?return activate(result)class BPNeuralNetwork:

def __init__(self):

self.session = tf.Session()

self.loss = None

self.optimizer = None

self.input_n = 0

self.hidden_n = 0

self.hidden_size = []

self.output_n = 0

self.input_layer = None

self.hidden_layers = []

self.output_layer = None

self.label_layer = None

def __del__(self):

self.session.close() ? ?def setup(self, ni, nh, no):

# 設置參數(shù)個數(shù)

self.input_n = ni

self.hidden_n = len(nh) ?#隱藏層的數(shù)量

self.hidden_size = nh ?#每個隱藏層中的單元格數(shù)

self.output_n = no ? ? ? ?#構(gòu)建輸入層

self.input_layer = tf.placeholder(tf.float32, [None, self.input_n]) ? ? ? ?#構(gòu)建標簽層

self.label_layer = tf.placeholder(tf.float32, [None, self.output_n]) ? ? ? ?#構(gòu)建隱藏層

in_size = self.input_n

out_size = self.hidden_size[0]

inputs = self.input_layer

self.hidden_layers.append(make_layer(inputs, in_size, out_size, activate=tf.nn.relu)) ? ? ? ?for i in range(self.hidden_n-1):

in_size = out_size

out_size = self.hidden_size[i+1]

inputs = self.hidden_layers[-1]

self.hidden_layers.append(make_layer(inputs, in_size, out_size, activate=tf.nn.relu)) ? ? ? ?#構(gòu)建輸出層

self.output_layer = make_layer(self.hidden_layers[-1], self.hidden_size[-1], self.output_n) ? ?def train(self, cases, labels, limit=100, learn_rate=0.05):

self.loss = tf.reduce_mean(tf.reduce_sum(tf.square((self.label_layer - self.output_layer)), reduction_indices=[1]))

self.optimizer = tf.train.GradientDescentOptimizer(learn_rate).minimize(self.loss)

initer = tf.initialize_all_variables() ? ? ? ?#做訓練

self.session.run(initer) ? ? ? ?for i in range(limit):

self.session.run(self.optimizer, feed_dict={self.input_layer: cases, self.label_layer: labels}) ? ?def predict(self, case):

return self.session.run(self.output_layer, feed_dict={self.input_layer: case}) ? ?def test(self):

x_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

y_data = np.array([[0, 1, 1, 0]]).transpose()

test_data = np.array([[0, 1]])

self.setup(2, [10, 5], 1)

self.train(x_data, y_data)

print(self.predict(test_data))

nn = BPNeuralNetwork()

nn.test()12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

軟件測試中,python 中 open與with open 的區(qū)別?

open函數(shù)

1.open函數(shù): file=open(filename, encoding='utf-8'),open()函數(shù)是Python內(nèi)置的用于對文件的讀寫操作,返回的是文件的流對象(而不是文件本身,所以使用的方法都是流對象的方法)。使用這個函數(shù)時可以指定encoding參數(shù)(Python2.7中不支持),因為Python代碼在不同的平臺環(huán)境中使用的默認編碼方式不同,有可能會發(fā)生編譯出錯的問題。

2. filename參數(shù):在open中的文件名參數(shù)filename中,包含的路徑表示雖然可以根據(jù)不同的環(huán)境使用斜杠和反斜杠,但在Python中表路徑時,斜杠都是正確的。

3. 文件操作對象file:流對象file,即open的默認模式下的返回值。使用for循環(huán)對對象file進行迭代時,每次迭代都會自動分離出一行(效果相當于對readlines結(jié)果的for循環(huán)遍歷):

with創(chuàng)建臨時運行環(huán)境

作用:with用于創(chuàng)建一個臨時的運行環(huán)境,運行環(huán)境中的代碼執(zhí)行完后自動安全退出環(huán)境。

文件操作:使用open進行文件操作使建議使用with創(chuàng)建運行環(huán)境,可以不用close()方法關閉文件,無論在文件使用中遇到什么問題都能安全的退出,即使發(fā)生錯誤,退出運行時環(huán)境時也能安全退出文件并給出報錯信息。

with open(’/path/to/file’, ‘r’) as f:

print(f.read())

這和前面的try … finally是一樣的,但是代碼更佳簡潔,并且不必調(diào)用f.close()方法。

如果想了解跟多相關的執(zhí)行可以來傳智播客軟件測試學習

太全了!Python3常用內(nèi)置函數(shù)總結(jié)

數(shù)學相關

abs(a) : 求取絕對值。abs(-1)

max(list) : 求取list最大值。max([1,2,3])

min(list) : 求取list最小值。min([1,2,3])

sum(list) : 求取list元素的和。 sum([1,2,3]) 6

sorted(list) : 排序,返回排序后的list。

len(list) : list長度,len([1,2,3])

divmod(a,b): 獲取商和余數(shù)。 divmod(5,2) (2,1)

pow(a,b) : 獲取乘方數(shù)。pow(2,3) 8

round(a,b) : 獲取指定位數(shù)的小數(shù)。a代表浮點數(shù),b代表要保留的位數(shù)。round(3.1415926,2) 3.14

range(a[,b]) : 生成一個a到b的數(shù)組,左閉右開。range(1,10) [1,2,3,4,5,6,7,8,9]

類型轉(zhuǎn)換

int(str) : 轉(zhuǎn)換為int型。int('1') 1

float(int/str) : 將int型或字符型轉(zhuǎn)換為浮點型。float('1') 1.0

str(int) : 轉(zhuǎn)換為字符型。str(1) '1'

bool(int) : 轉(zhuǎn)換為布爾類型。 str(0) False str(None) False

bytes(str,code) : 接收一個字符串,與所要編碼的格式,返回一個字節(jié)流類型。bytes('abc', 'utf-8') b'abc' bytes(u'爬蟲', 'utf-8') b'xe7x88xacxe8x99xab'

list(iterable) : 轉(zhuǎn)換為list。 list((1,2,3)) [1,2,3]

iter(iterable): 返回一個可迭代的對象。 iter([1,2,3]) list_iterator object at 0x0000000003813B00

dict(iterable) : 轉(zhuǎn)換為dict。 dict([('a', 1), ('b', 2), ('c', 3)]) {'a':1, 'b':2, 'c':3}

enumerate(iterable) : 返回一個枚舉對象。

tuple(iterable) : 轉(zhuǎn)換為tuple。 tuple([1,2,3]) (1,2,3)

set(iterable) : 轉(zhuǎn)換為set。 set([1,4,2,4,3,5]) {1,2,3,4,5} set({1:'a',2:'b',3:'c'}) {1,2,3}

hex(int) : 轉(zhuǎn)換為16進制。hex(1024) '0x400'

oct(int) : 轉(zhuǎn)換為8進制。 oct(1024) '0o2000'

bin(int) : 轉(zhuǎn)換為2進制。 bin(1024) '0b10000000000'

chr(int) : 轉(zhuǎn)換數(shù)字為相應ASCI碼字符。 chr(65) 'A'

ord(str) : 轉(zhuǎn)換ASCI字符為相應的數(shù)字。 ord('A') 65

相關操作

eval****() : 執(zhí)行一個表達式,或字符串作為運算。 eval('1+1') 2

exec() : 執(zhí)行python語句。 exec('print("Python")') Python

filter(func, iterable) : 通過判斷函數(shù)fun,篩選符合條件的元素。 filter(lambda x: x3, [1,2,3,4,5,6]) filter object at 0x0000000003813828

map(func, *iterable) : 將func用于每個iterable對象。 map(lambda a,b: a+b, [1,2,3,4], [5,6,7]) [6,8,10]

zip(*iterable) : 將iterable分組合并。返回一個zip對象。 list(zip([1,2,3],[4,5,6])) [(1, 4), (2, 5), (3, 6)]

type():返回一個對象的類型。

id(): 返回一個對象的唯一標識值。

hash(object):返回一個對象的hash值,具有相同值的object具有相同的hash值。 hash('python') 7070808359261009780

help():調(diào)用系統(tǒng)內(nèi)置的幫助系統(tǒng)。

isinstance():判斷一個對象是否為該類的一個實例。

issubclass():判斷一個類是否為另一個類的子類。

globals() : 返回當前全局變量的字典。

next(iterator[, default]) : 接收一個迭代器,返回迭代器中的數(shù)值,如果設置了default,則當?shù)髦械脑乇闅v后,輸出default內(nèi)容。

reversed(sequence) : 生成一個反轉(zhuǎn)序列的迭代器。 reversed('abc') ['c','b','a']

python惰性求值有哪些函數(shù)

Copyright ? 1999-2020, CSDN.NET, All Rights Reserved

惰性計算的序列

打開APP

Python 的惰性求值與惰性序列 翻譯

2018-07-23 14:57:48

2點贊

東師小鎮(zhèn)

碼齡5年

關注

惰性求值

在編程語言理論中,惰性求值(英語:Lazy Evaluation),又譯為惰性計算、懶惰求值,也稱為傳需求調(diào)用(call-by-need),是一個計算機編程中的一個概念,它的目的是要最小化計算機要做的工作。它有兩個相關而又有區(qū)別的含意,可以表示為“延遲求值”和“最小化求值”。

避免不必要的計算,帶來性能的提升(最小化求值)。

對于Python中的條件表達式 if x and y,在x為false的情況下y表達式的值將不再計算。而對于if x or y,當x的值為true的時候?qū)⒅苯臃祷?,不再計算y的值。因此編程中可以利用該特性,在 and邏輯中,將小概率發(fā)生的條件放在前面或者在or邏輯中,將大概率發(fā)生的時間放在前面,有助于性能的提升。

2. 節(jié)省空間,使得無線循環(huán)的數(shù)據(jù)結(jié)構(gòu)成為可能(延遲求值)。

延遲求值特別用于函數(shù)式編程語言中。在使用延遲求值的時候,表達式不在它被綁定到變量之后就立即求值,而是在該值被取用的時候求值。延遲求值的一個好處是能夠建立可計算的無限列表而沒有妨礙計算的無限循環(huán)或大小問題。例如,可以建立生成無限斐波那契數(shù)列表的函數(shù)(經(jīng)常叫做“流”)。第n個斐波那契數(shù)的計算僅是從這個無限列表上提取出這個元素,它只要求計算這個列表的前n個成員。

惰性序列

Python的惰性序列多數(shù)指 iterator,其特點正如同上文所述,具有惰性計算特點的序列稱為惰性序列。

Python的iterator是一個惰性序列,意思是表達式和變量綁定后不會立即進行求值,而是當你用到其中某些元素的時候才去求某元素對的值。 惰性是指,你不主動去遍歷它,就不會計算其中元素的值。

一句話理解:

迭代器的一個優(yōu)點就是它不要求你事先準備好整個迭代過程中所有的元素。

迭代器僅僅在迭代至某個元素時才計算該元素,而在這之前或之后,元素可以不存在或者被銷毀。

這個特點使得它特別適合用于遍歷一些巨大的或是無限的集合,比如幾個G的文件,或是斐波那契數(shù)列等等。


分享名稱:Python計算流函數(shù) python函數(shù)
瀏覽地址:http://weahome.cn/article/doooodo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部