日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【TensorFlow-windows】学习笔记一——基础理解

發布時間:2023/12/13 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【TensorFlow-windows】学习笔记一——基础理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

因為Theano已經停止更新了,所以在前面學完Theano搭建RBM,CNN,RNN相關結構以后,還是得選擇一個主流框架的,由于我自身的學習最終是向強化學習靠近,可能用到的仿真環境是openai gym,所以選擇了繼續學習TensorFlow,而非pyTorch,CNTK之類的深度學習框架。

還是按照Theano的學習方法來,先學習一下入門基礎,比如基本存儲容器,變量運算,函數執行與取值等操作,然后學一下手寫數字識別什么的。

國際慣例,參考博客:

一臉懵逼的官方教程

清晰易懂的中文社區

機器學習速成課程中的TensorFlow

TensorFlow官方文檔中文譯

簡介

在使用入門中提到了TensorFlow分為Eager Execution和Graph Execution,此外還有一些必須了解的API,包括高階API、中階API、低階API、核。但是像我們這種做算法的,一般只需關注如何使用某類語言搭建網絡結構即可。

Eager Execution

它是TensorFlow的一種命令式編程環境,特點是無法構建圖,可立即評估操作并輸出具體數值:

#Eager Execution import tensorflow as tf tf.enable_eager_execution() print('是否開啟eager execution:',tf.executing_eagerly())x=[[2.]] m=tf.matmul(x,x) print('hello,{}'.format(m)

結果:

是否開啟eager execution: True hello,[[4.]]

可以看出,如果我們要使用Eager Execution調試程序,必須先啟動它,啟動了以后,執行很多操作都無需創建圖去執行運算,比如你不啟動它,直接運行計算:

import tensorflow as tf x=[[2.]] m=tf.matmul(x,x) print('hello,{}'.format(m))

輸出:

hello,Tensor("MatMul:0", shape=(1, 1), dtype=float32)

很容易發現輸出的是數據類型和大小

再來個復雜點的例子,建立一個感知器逼近函數y=3x+2y=3x+2y=3x+2

#為3x+2的函數建模 import tensorflow as tf import tensorflow.contrib.eager as tfe tf.enable_eager_execution()#啟動eager_execution NUM_EXAMPLES=1000#樣本數 training_inputs=tf.random_normal([NUM_EXAMPLES])#隨機輸入 noise=tf.random_normal([NUM_EXAMPLES])#隨機噪聲 training_outputs=training_inputs*3+2+noise#函數輸出+噪聲 def prediction(input,weight,bias):return input*weight+bias#前向計算def loss(weights,biases):error=prediction(training_inputs,weights,biases)-training_outputsreturn tf.reduce_mean(tf.square(error))#均方差損失def grad(weights,biases):with tf.GradientTape() as tape:loss_value=loss(weights,biases)return tape.gradient(loss_value,[weights,biases])#計算梯度train_steps=200 learning_rate=0.01 W=tfe.Variable(5.) B=tfe.Variable(10.) print('Initial Loss:{:.3f}'.format(loss(W,B)))for i in range(train_steps):dW,dB=grad(W,B)W.assign_sub(dW*learning_rate)#每次循環更新權重B.assign_sub(dB*learning_rate)#每次循環更新偏置if i%20==0:print('Loss at step{:03d}:{:.3f}'.format(i,loss(W,B))) print('Final loss:{:.3f}'.format(loss(W,B))) print('W={},B={}'.format(W.numpy(),B.numpy()))

輸出

Initial Loss:71.285 Loss at step000:68.417 Loss at step020:30.346 Loss at step040:13.806 Loss at step060:6.604 Loss at step080:3.461 Loss at step100:2.086 Loss at step120:1.483 Loss at step140:1.218 Loss at step160:1.101 Loss at step180:1.050 Final loss:1.028 W=3.0146498680114746,B=2.108891725540161

這個例子很容易看出,在eager execution中:

  • 無需為輸入數據建立容器,如theano中的theano.tensor.scalar
  • 無需為運算操作建立圖結構,例如theano中的function類似
  • 梯度更新使用tf.GradientTape()中的gradient

感覺就是簡單的numpy操作,只不過在tensorflow中實現了,外加了一個自動梯度求解。

對于eager execution暫時了解這么多,印象最深的是:

  • 無需為變量建立容器;無需為運算建立計算圖**,**
  • 自動梯度的函數是gradient

后續要是用到這種方式書寫程序再做了解,畢竟深度學習框架比較重要的就是計算圖,應該沒誰會一直選擇使用這種方式編寫程序吧,雖然看起來很簡潔。

Graph Execution

先看一句話:使用 Graph Execution時,程序狀態(如變量)存儲在全局集合中,它們的生命周期由 tf.Session對象管理。相反,在 Eager Execution 期間,狀態對象的生命周期由其對應的 Python 對象的生命周期決定。接下來要介紹的大部分內容基本都屬于Graph Execution范圍內的知識。

這里使用Graph execution對上面Eager Execution演示函數y=3x+2y=3x+2y=3x+2進行建模

#生成樣本 NUM_EXAMPLES=1000 training_inputs=np.random.rand(NUM_EXAMPLES) training_outputs=training_inputs*3+2 #定義容器 tf.reset_default_graph() W=tf.get_variable(name='W',shape=[1]) b=tf.get_variable(name='b',shape=[1])input_placeholder=tf.placeholder(shape=[1,NUM_EXAMPLES],dtype=tf.float32) label_placeholder=tf.placeholder(shape=[1,NUM_EXAMPLES],dtype=tf.float32)loss=tf.reduce_mean(tf.square(input_placeholder*W+b-label_placeholder)) optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.01) update_op=optimizer.minimize(loss) init=tf.initialize_all_variables() #創建計算圖 with tf.Session() as sess:sess.run(init)for i in range(5000):_,new_W,new_b=sess.run([update_op,W,b],feed_dict={input_placeholder:[training_inputs],label_placeholder:[training_outputs]}) print(new_W,new_b) #[2.999767] [2.0001235]

但是我不知道為什么要這么多迭代次數才能逼近,畢竟Eager Execution僅需200次迭代就能達到很好效果,這個用了5000次才能逼近。

但是從這個例子可以看出,我們需要學習的有:容器、優化器、迭代優化等相關操作。

高階API: Estimator

暫時理解是這個Estimator封裝好了很多結構,比如分類器、回歸器,具體有哪些,戳這里,同時也封裝好了對應的訓練、評估、預測方法。

還是用函數y=3x+2y=3x+2y=3x+2演示一下Estimator中的LinearRegressor做函數逼近

#創建回歸器 NUM_EXAMPLES=1000 training_inputs=np.random.rand(NUM_EXAMPLES) training_outputs=training_inputs*3+2 column=tf.feature_column.numeric_column('x') classifier = tf.estimator.LinearRegressor(feature_columns=[column]) #訓練 train_input=tf.estimator.inputs.numpy_input_fn(\x={'x':training_inputs},y=training_outputs,shuffle=False,num_epochs=None) classifier.train(train_input,steps=2500)

如何取出權重,我暫時也不是特別清楚,因為這個classifier中的參數有點多,可以通過get_variable_names函數看到分類器都有哪些參數名,然后對應取出來就行:

print(classifier.get_variable_names()) print(classifier.get_variable_value('linear/linear_model/bias_weights')) print(classifier.get_variable_value('linear/linear_model/x/weights'))

輸出:

['global_step', 'linear/linear_model/bias_weights', 'linear/linear_model/bias_weights/part_0/Ftrl', 'linear/linear_model/bias_weights/part_0/Ftrl_1', 'linear/linear_model/x/weights', 'linear/linear_model/x/weights/part_0/Ftrl', 'linear/linear_model/x/weights/part_0/Ftrl_1'] [2.0108593] [[2.9801264]]

初步估計這個權重和偏置的取出是這樣,至于其它參數是什么,還沒懂,以后用到再說。

自定義Estimator暫時不看,這個應該屬于進階了,后續需要再學習

總結

上面通過三種方式對函數y=3x+2y=3x+2y=3x+2建模,展示了tensorflow中構建及運行模型的方法,做一個初步了解就行,其實搞科研第二種算法用的比較多,因為它類似于Theano,只不過封裝了更好的函數操作,調試信息感覺也更加清晰。此外,我暫時不打算使用Eager execution的方法建立模型,感覺和numpy一樣,還有也不打算用Estimator封裝好的各種模型,感覺對理論理解就不夠了。

下面就針對Graph execution構建模型所需了解的入門級知識,按照學Theano的步驟來吧:首先是變量定義(標量、向量、矩陣)和操作(點乘、叉乘之類的)。

入門級操作

數據類型定義與取值

**常量:**使用tf.constant,輸入參數有

tf.constant(value,dtype=None,shape=None,name='Const',verify_shape=False )

依次代表:常量值,類型,維度,名稱,是否在每次驗證大小(如果設置成False,以后還能修改大小)

tensor1=tf.constant([1,2,3,4,5,6,7])#一維常量 tensor2=tf.constant([1],shape=[2,7])#二維常量

如果想取值看看,就必須在Session中取值,感覺這個是最麻煩的,取值還得去Session,不過這樣就能讓我們保持一個良好習慣,寫任何東西,把Session定義出來就行了:

with tf.Session() as sess:print(tensor1.eval())print(tensor2.eval())'''[1 2 3 4 5 6 7] [[1 1 1 1 1 1 1][1 1 1 1 1 1 1]]'''

變量: 使用tf.Variable,輸入參數有

tf.Variable(<initial-value>, name=<optional-name>)

包括初始值和名稱,比如定義權重和偏置:

weights=tf.Variable(np.random.rand(2,3),name='weights') bias=tf.Variable(0,name='bias')

但是在使用此變量之前,一定要初始化,才能進行其它操作,比如取值,幸好TensorFlow提供了統一初始化函數initialize_all_variables,我們無需一個個初始化了:

weights=tf.Variable(np.random.rand(2,3),name='weights') bias=tf.Variable(0,name='bias') init_op=tf.initialize_all_variables() with tf.Session() as sess:sess.run(init_op)print(weights.eval()) ''' [[0.6229396 0.42244541 0.47293289] [0.70087716 0.42179686 0.09062685]] '''

如果想初始化某個變量,可使用內置函數initializer。

內置簡單的賦值和加減操作:主要是Variable的內置函數assign、assign_add、assign_sub

切記一定要在Session中進行操作:

with tf.Session() as sess:sess.run(init_op)sess.run(bias.assign(bias+10))print(bias.eval()) #10

占位器:用于存儲變量的placeholder,與Variable的區別在于,占位器無需預先定義數值,它僅僅是一個容器,類似于theano中的tensor.vector之類的,可指定維度,后續可以用feed_dict給它喂數據:

tf.placeholder(dtype,shape=None,name=None )

舉個例子:

x = tf.placeholder(tf.float32, shape=(1024, 1024)) y = tf.matmul(x, x)with tf.Session() as sess:print(sess.run(y)) # ERROR: will fail because x was not fed.rand_array = np.random.rand(1024, 1024)print(sess.run(y, feed_dict={x: rand_array})) # Will succeed.

再一次說明定義的時候無需指定數值,只需指定大小和類型,那我們設計神經網絡的時候可以常用它來為輸入數據占位。

基本運算

  • abs:如果是實數,就直接取絕對值;如果是復數,就取實部和虛部的平方和的根a2+b2\sqrt{a^2+b^2}a2+b2?

    x1=tf.constant([-1,2,3,-4,5]) y1=tf.abs(x1) x2=tf.constant([[-3+4j],[-6+8j]]) y2=tf.abs(x2) with tf.Session() as sess:print(y1.eval())#[1 2 3 4 5]print(y2.eval())'''[[ 5.][10.]]'''
  • add:加和操作

    x3=tf.constant(2) y3=tf.add(x3,4) with tf.Session() as sess:print(y3.eval())#6
  • angle:角度值,輸入被看成復數a+bja+bja+bj,輸出是atan2(b,a)atan2(b,a)atan2(b,a),如果輸入是實數,輸出就是0

    x4=tf.constant([[-2.25+4.75j],[3.25+5.75j]]) y4=tf.angle(x4) with tf.Session() as sess:print(y4.eval())'''[[2.01317055][1.05634501]]'''
  • argmax,argmin:返回最大/最小值的位置索引

    indx=tf.argmax(x1) with tf.Session() as sess:print(x1.eval())print(indx.eval())'''[-1 2 3 -4 5]4'''
  • assign:賦值

  • assign_add:加

  • assign_sub:減

  • sin:正弦,還有對應的asin

  • sinh:雙曲正弦,還有對應的asinh

  • cos:余弦,還有對應的acos

  • cosh:雙曲余弦,還有對應的acosh

  • tan:正切

  • tanh:雙曲正切

  • atan:對每個元素計算反正切

  • atan2:輸入是atan2(y,x),計算y/xy/xy/x的反正切,范圍[?π,π][-\pi,\pi][?π,π]

  • complex:將兩個實數變換成復數

    real = tf.constant([2.25, 3.25]) imag = tf.constant([4.75, 5.75]) tf.complex(real, imag) # [[2.25 + 4.75j], [3.25 + 5.75j]]
  • real:返回復數的實部

  • imag:返回復數的虛部

  • cross:計算兩個相同維度向量的叉乘

    x5=[1,2,3] y5=[4,5,6] temp5=tf.cross(x5,y5) with tf.Session() as sess:print(temp5.eval())#[-3 6 -3] print(np.cross(x5,y5))#[-3 6 -3]
  • matmul:點乘

    a=tf.constant([1,2,3,4,5,6],shape=[2,3]) b=tf.constant([7,8,9,10,11,12],shape=[3,2]) c=tf.matmul(a,b) with tf.Session() as sess:sess.run(c)print(c.eval())'''[[ 58 64][139 154]]'''
  • multiply:逐元素相乘

    a=tf.constant([1,2,3,4,5,6],shape=[2,3]) b=tf.constant([7,8,9,10,11,12],shape=[2,3]) c=tf.multiply(a,b) with tf.Session() as sess:sess.run(c)print(c.eval()) ''' [[ 7 16 27][40 55 72]] '''
  • subtract:逐元素相減x?yx-yx?y

  • cumprod:累乘

    tf.cumprod(x,axis=0,exclusive=False,reverse=False,name=None )

    有兩個比較重要參數:exclusive和reverse

    tf.cumprod([a, b, c]) # [a, a * b, a * b * c] tf.cumprod([a, b, c], exclusive=True) # [1, a, a * b] tf.cumprod([a, b, c], reverse=True) # [a * b * c, b * c, c] tf.cumprod([a, b, c], exclusive=True, reverse=True) # [b * c, c, 1]
  • cumsum:累加

    tf.cumsum([a, b, c]) # [a, a + b, a + b + c] tf.cumsum([a, b, c], exclusive=True) # [0, a, a + b] tf.cumsum([a, b, c], reverse=True) # [a + b + c, b + c, c] tf.cumsum([a, b, c], exclusive=True, reverse=True) # [b + c, c, 0]
  • div:逐元素除法

  • equal:對應元素是否相等

  • exp:返回y=exy=e^xy=ex

  • fft,fft2d,fft3d:快速傅里葉變換

  • ifft,ifft2d,ifft3d:逆傅里葉變換

  • ceil:不小于xxx的最大整數

  • floor:小于xxx的最大整數

  • floordiv:除法,整數的時候等價于tf.div(x,y),浮點的時候等價于tf.floor(tf.div(x,y))

  • floormod:返回余數x=floor(x/y)?y+mod(x,y)x=floor(x/y)*y+mod(x,y)x=floor(x/y)?y+mod(x,y)

  • greater:如果x&gt;yx&gt;yx>y返回真值

  • greater_equal:如果x&gt;=yx&gt;=yx>=y,返回真值

  • less:如果x&lt;yx&lt;yx<y,返回真值

  • less_equal:如果x&lt;=yx&lt;=yx<=y,返回真值

  • log:返回y=log?exy=\log_exy=loge?x

  • log1p:返回y=log?e(1+x)y=\log_e(1+x)y=loge?(1+x)

  • log_sigmoid:返回y=log?(11+e?x)y=\log (\frac{1}{1+e^{-x}})y=log(1+e?x1?)

  • matrix_inverse:計算方陣的逆或其共軛轉置

    tf.matrix_inverse(input,adjoint=False,name=None )
  • maximum:逐元素返回x&gt;y?x:yx&gt;y?x:yx>y?x:y

    tf.maximum(x,y,name=None )
  • minimum:逐元素返回x&lt;y?x:yx&lt;y?x:yx<y?x:y

  • negative:逐元素計算負值y=?xy=-xy=?x

  • ones:初始化全1矩陣

    tf.ones(shape,dtype=tf.float32,name=None ) #example tf.ones([2, 3], tf.int32) # [[1, 1, 1], [1, 1, 1]]
  • zeros:初始化全0矩陣

  • ones_like:初始化與給定矩陣維度相同的全1矩陣

    tf.ones_like(tensor,dtype=None,name=None,optimize=True ) #example tensor = tf.constant([[1, 2, 3], [4, 5, 6]]) tf.ones_like(tensor) # [[1, 1, 1], [1, 1, 1]]
  • zeros_like:初始化與給定矩陣維度相同的全0矩陣

  • pad填充:

    tf.pad(tensor,paddings,mode='CONSTANT',name=None,constant_values=0 )

    按照paddings去填充tensor,官網解釋有點復雜,感覺paddings是一個二維矩陣,分別指示tensor的上下左右分別要填充多少。mode是填充模式,是常量填充CONSTANT、鏡像填充REFLECT或是對稱填充SYMMETRIC

    t = tf.constant([[1, 2, 3], [4, 5, 6]]) paddings = tf.constant([[1, 1,], [2, 2]]) # 'constant_values' is 0. # rank of 't' is 2. tf.pad(t, paddings, "CONSTANT") # [[0, 0, 0, 0, 0, 0, 0],# [0, 0, 1, 2, 3, 0, 0],# [0, 0, 4, 5, 6, 0, 0],# [0, 0, 0, 0, 0, 0, 0]]tf.pad(t, paddings, "REFLECT") # [[6, 5, 4, 5, 6, 5, 4],# [3, 2, 1, 2, 3, 2, 1],# [6, 5, 4, 5, 6, 5, 4],# [3, 2, 1, 2, 3, 2, 1]]tf.pad(t, paddings, "SYMMETRIC") # [[2, 1, 1, 2, 3, 3, 2],# [2, 1, 1, 2, 3, 3, 2],# [5, 4, 4, 5, 6, 6, 5],# [5, 4, 4, 5, 6, 6, 5]]
  • pow:逐元素計算xyx^yxy

    x = tf.constant([[2, 2], [3, 3]]) y = tf.constant([[8, 16], [2, 3]]) tf.pow(x, y) # [[256, 65536], [9, 27]]
  • range:創建序列

    tf.range(limit, delta=1, dtype=None, name='range') tf.range(start, limit, delta=1, dtype=None, name='range')

    其中start是表示開始數字,limit是最后一個數字的最終取值范圍,delta是增量

    start = 3 limit = 18 delta = 3 tf.range(start, limit, delta) # [3, 6, 9, 12, 15]start = 3 limit = 1 delta = -0.5 tf.range(start, limit, delta) # [3, 2.5, 2, 1.5]limit = 5 tf.range(limit) # [0, 1, 2, 3, 4]
  • reduce_join:合并某些維度

    tf.reduce_join(inputs,axis=None,keep_dims=False,separator='',name=None,reduction_indices=None ) # tensor `a` is [["a", "b"], ["c", "d"]] tf.reduce_join(a, 0) ==> ["ac", "bd"] tf.reduce_join(a, 1) ==> ["ab", "cd"] tf.reduce_join(a, -2) = tf.reduce_join(a, 0) ==> ["ac", "bd"] tf.reduce_join(a, -1) = tf.reduce_join(a, 1) ==> ["ab", "cd"] tf.reduce_join(a, 0, keep_dims=True) ==> [["ac", "bd"]] tf.reduce_join(a, 1, keep_dims=True) ==> [["ab"], ["cd"]] tf.reduce_join(a, 0, separator=".") ==> ["a.c", "b.d"] tf.reduce_join(a, [0, 1]) ==> "acbd" tf.reduce_join(a, [1, 0]) ==> "abcd" tf.reduce_join(a, []) ==> [["a", "b"], ["c", "d"]] tf.reduce_join(a) = tf.reduce_join(a, [1, 0]) ==> "abcd"
  • reduce_max:按照指定維度計算最大值

  • reduce_min:按照指定維度計算最小值

  • reduce_prob:按照指定維度計算累加

  • reduce_sum:按照指定維度計算累乘

    a=tf.constant([1,2,3,4,5,6],shape=[2,3],dtype=tf.float32) b=tf.reduce_prod(a,0) c=tf.reduce_prod(a,1) with tf.Session() as sess:sess.run(c)print(a.eval())print(b.eval())#[ 4. 10. 18.]print(c.eval())#[ 6. 120.]
  • reduce_mean:按照指定維度計算均值

    a=tf.constant([1,2,3,4,5,6],shape=[2,3],dtype=tf.float32) b=tf.reduce_mean(a,0) c=tf.reduce_mean(a,1) with tf.Session() as sess:sess.run(c)print(a.eval())print(b.eval())#[2.5 3.5 4.5]print(c.eval())#[2. 5.]
  • reverse:按照指定維度翻轉矩陣

    # tensor 't' is [[[[ 0, 1, 2, 3], # [ 4, 5, 6, 7], # [ 8, 9, 10, 11]], # [[12, 13, 14, 15], # [16, 17, 18, 19], # [20, 21, 22, 23]]]] # tensor 't' shape is [1, 2, 3, 4]# 'dims' is [3] or 'dims' is [-1] reverse(t, dims) ==> [[[[ 3, 2, 1, 0],[ 7, 6, 5, 4],[ 11, 10, 9, 8]],[[15, 14, 13, 12],[19, 18, 17, 16],[23, 22, 21, 20]]]]# 'dims' is '[1]' (or 'dims' is '[-3]') reverse(t, dims) ==> [[[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23][[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]]]]# 'dims' is '[2]' (or 'dims' is '[-2]') reverse(t, dims) ==> [[[[8, 9, 10, 11],[4, 5, 6, 7],[0, 1, 2, 3]][[20, 21, 22, 23],[16, 17, 18, 19],[12, 13, 14, 15]]]]
  • rint:返回與當前元素最接近的整數值,有一半的時候,取最近偶數

    x = tf.constant([0.9, 2.5, 2.3, 1.3, -4.5]) y=tf.round(x) with tf.Session() as sess:sess.run(y)print(y.eval())#[ 1. 2. 2. 1. -4.]
  • rsqrt:逐元素y=1xy=\frac{1}{\sqrt{x}}y=x?1?

  • sqrt:逐元素y=xy=\sqrt{x}y=x?

  • square:逐元素y=x2y=x^2y=x2

  • squared_difference:逐元素(x?y)2(x-y)^2(x?y)2

  • sign:返回元素符號,大于0返回1,等于0或者非數返回0,小于0返回-1

  • squeeze:默認去除是維度為1的維度,也可指定

    # 't' is a tensor of shape [1, 2, 1, 3, 1, 1] tf.shape(tf.squeeze(t)) # [2, 3] # 't' is a tensor of shape [1, 2, 1, 3, 1, 1] tf.shape(tf.squeeze(t, [2, 4])) # [1, 2, 3, 1]
  • stack:堆疊向量或者矩陣

    x = tf.constant([1, 4]) y = tf.constant([2, 5]) z = tf.constant([3, 6]) tf.stack([x, y, z]) # [[1, 4], [2, 5], [3, 6]] tf.stack([x, y, z], axis=1) # [[1, 2, 3], [4, 5, 6]]
  • svd:奇異值分解

    # a is a tensor. # s is a tensor of singular values. # u is a tensor of left singular vectors. # v is a tensor of right singular vectors. s, u, v = svd(a) s = svd(a, compute_uv=False)#還可以返回u,v
  • unique:去重

    # tensor 'x' is [1, 1, 2, 4, 4, 4, 7, 8, 8] y, idx = unique(x) y ==> [1, 2, 4, 7, 8] idx ==> [0, 0, 1, 2, 2, 2, 3, 4, 4]

##條件函數:Assert

tf.Assert(condition,data,summarize=None,name=None )

如果條件不成立,就從data中打印張量列表,summerize決定了打印多少個條目。

注意應使用此函數的輸出,如果條件不滿足, 則會記錄一個InvalidArgumentError警告。若要將輸出標記為已用, 請調用其. *mark_used()*方法。

但是如果在圖模式中,為了保證Assert能夠執行,需要添加一個依賴項:

a=tf.constant([1,2,3,4,5,6],shape=[2,3],dtype=tf.float32) b=tf.constant([0.1,0.2,0.3,0.4,0.5,0.6],shape=[2,3],dtype=tf.float32) assert_op=tf.Assert(tf.less(tf.reduce_max(b),1.),[x]) with tf.control_dependencies([assert_op]):output = tf.reduce_sum(a) with tf.Session() as sess:print(output.eval())#21.0

但是如果把上述的less換成greater就會報錯:

a=tf.constant([1,2,3,4,5,6],shape=[2,3],dtype=tf.float32) b=tf.constant([0.1,0.2,0.3,0.4,0.5,0.6],shape=[2,3],dtype=tf.float32) assert_op=tf.Assert(tf.greater(tf.reduce_max(b),1.),[x]) with tf.control_dependencies([assert_op]):output = tf.reduce_sum(a) with tf.Session() as sess:print(output.eval())#報錯InvalidArgumentError

當然這個assert_op也不是必須自己寫,TensorFlow自身提供了一堆:

  • assert_equal:判斷相等

  • assert_greater:判斷大于x&gt;yx&gt;yx>y

  • assert_greater_equal:判斷不小于x&gt;=yx&gt;=yx>=y

  • assert_integer:判斷是否為整數

  • assert_same_float_dtype:判斷是否為相同的浮點型

  • assert_scalar:判斷是否為標量

  • assert_type:判斷與給定類型是否相同

  • assert_less:判斷是否小于x&lt;yx&lt;yx<y

  • assert_less_equal:判斷是否不大于x&lt;=yx&lt;=yx<=y

  • assert_negative:判斷是否為負,x&lt;0x&lt;0x<0

  • assert_none_equal:判斷是否不等于x≠yx\neq yx??=y

  • assert_non_negative:判斷是否非負x&gt;=0x&gt;=0x>=0

  • assert_non_positive:判斷是否為非正數x&lt;=0x&lt;=0x<=0

  • assert_positive:判斷是否為正數x&gt;0x&gt;0x>0

  • assert_proper_iterable:判斷是否可迭代,張量、ndarray、byte / text類型都是 iterables 本身,所以是有用的

  • assert_rank:判斷xxx的秩是否等于給定值

    assert_rank (x ,rank ,data = None ,summarize = None ,message = None ,name = None#例子 with tf.control_dependencies ([ tf.assert_rank(X2)]):output = tf.reduce_sum (x)
  • assert_rank_at_least:判斷xxx與給定秩是否相等或者更大

  • assert_variables_initialized:判斷是否已初始化

隨便舉個例子,判斷是否大于:

a=tf.constant([1,2,3,4,5,6],shape=[2,3],dtype=tf.float32) b=tf.constant([0.1,0.2,0.3,0.4,0.5,0.6],shape=[2,3],dtype=tf.float32) with tf.control_dependencies([tf.assert_greater(a,b)]):output = tf.reduce_sum(a) with tf.Session() as sess:print(output.eval())#21.0

##隨機操作

random_crop:隨機裁剪

tf.random_crop(value,size,seed=None,name=None )

將value隨機裁剪到指定size,比如裁剪圖像的時候用到:

distorted_image = tf.random_crop(image,[height,width,3])

一個使用例子可以戳這里

#隨機裁剪 import matplotlib.image as img import matplotlib.pyplot as pltimage=img.imread('F:/Photo/2.jpg') reshaped_image=tf.cast(image,dtype=tf.float32)#轉換數據類型 with tf.Session() as sess:size=tf.cast(tf.shape(reshaped_image).eval(),tf.int32)height=sess.run(size[0]//2)width=sess.run(size[1]//2) distored_image=tf.random_crop(reshaped_image,[height,width,3]) with tf.Session() as sess:#plt.imshow(sess.run(tf.cast(reshaped_image,tf.uint8)))plt.imshow(sess.run(tf.cast(distored_image,tf.uint8)))

random_shuffle:隨機打亂次序

tf.random_shuffle(value,seed=None,name=None )

實例:

a=tf.constant([[1,2],[3,4],[5,6]]) b=tf.random_shuffle(a) with tf.Session() as sess:sess.run(b)print(b.eval()) ''' [[3 4][1 2][5 6]] '''

random_gamma:伽馬分布,輸入形狀參數和逆尺度(倒數?)參數

random_normal:正態分布,輸入大小,均值,方差

random_poisson:泊松分布,輸入λ\lambdaλ和形狀

random_uniform:平均分布,輸入形狀,最小值,最大值

##單熱度編碼:one_hot

這個通常用來制作標簽,對應位置為指定值,一般用0、10、101編碼

tf.one_hot(indices,depth,on_value=None,off_value=None,axis=None,dtype=None,name=None )

其中:

  • indices:是真實數值標簽
  • depth:長度,一般代表總類數
  • on_value:在編碼中激活該種類時,應該放什么值
  • off_value:未激活的是什么值
indices = [0, 1, 2] depth = 3 tf.one_hot(indices, depth) # output: [3 x 3] # [[1., 0., 0.], # [0., 1., 0.], # [0., 0., 1.]]indices = [0, 2, -1, 1] depth = 3 tf.one_hot(indices, depth,on_value=5.0, off_value=0.0,axis=-1) # output: [4 x 3] # [[5.0, 0.0, 0.0], # one_hot(0) # [0.0, 0.0, 5.0], # one_hot(2) # [0.0, 0.0, 0.0], # one_hot(-1) # [0.0, 5.0, 0.0]] # one_hot(1)indices = [[0, 2], [1, -1]] depth = 3 tf.one_hot(indices, depth,on_value=1.0, off_value=0.0,axis=-1) # output: [2 x 2 x 3] # [[[1.0, 0.0, 0.0], # one_hot(0) # [0.0, 0.0, 1.0]], # one_hot(2) # [[0.0, 1.0, 0.0], # one_hot(1) # [0.0, 0.0, 0.0]]] # one_hot(-1)

函數執行方案:Session

正如之前所有的代碼演示一樣,在Graph execution中幾乎所有的運算都必須放到Session中通過run函數才能執行,這應該是tensorflow的約定,這里我們看看兩種Session

標準的tf.Session

這個就不用說了,典型的調用方法:

a=tf.constant([1,2]) b=tf.add(a,2); with tf.Session() as sess:sess.run(b)print(b.eval())#[3 4]

或者

import tensorflow as tf a=tf.constant([1,2]) b=tf.add(a,2); sess=tf.Session() print(sess.run(b))

交互式的InteractiveSession

前面那個標準的Session每次都要用那個典型的調用方法,感覺很冗余,想辦法把當前環境的Session預先初始化好,后面用的時候直接運行或者調用run就好了,這就是InteractiveSession的用途。

舉個例子:

#程序1 import tensorflow as tf a=tf.constant([1,2]) b=tf.add(a,2); isess=tf.Session() print(b.eval())

此程序是無法運行的,報錯

ValueError: Cannot evaluate tensor using `eval()`: No default session is registered. Use `with sess.as_default()` or pass an explicit session to `eval(session=sess)`

但是如果把Session換成InteractiveSession()就能執行了:

#程序2 import tensorflow as tf a=tf.constant([1,2]) b=tf.add(a,2); isess=tf.InteractiveSession() print(b.eval())#[3 4]

記住,只要執行過InteracitveSession(),那么當前環境的所有操作都無需添加Session了,比如你先運行了程序2,再去運行程序1,是可以執行的,因為交互式環境已被激活。具體理解可以戳這里

后記

作為入門先了解這么多吧, 多了的更復雜了,消化不了,通過實戰了解更多知識比較好。
在本博客中,主要了解了:

  • TensorFlow的數據類型、基本運算
  • 函數執行方案

本文代碼鏈接:https://pan.baidu.com/s/1NC0QPG6KxSsNq5ndthbdhg 密碼:suxw

總結

以上是生活随笔為你收集整理的【TensorFlow-windows】学习笔记一——基础理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

九九九九九九精品 | 日韩mv欧美mv国产精品 | 99视频在线精品免费观看2 | 欧美日韩国产二区三区 | 国产美女精品视频 | 国产乱码精品一区二区蜜臀 | 超级碰99 | 狠狠狠色丁香婷婷综合久久五月 | 97精品国自产拍在线观看 | 91在线国产观看 | 天天射天 | 2021av在线 | 久久官网| 999男人的天堂 | 国产精品久久久久久久久久久久午 | 国产午夜精品一区二区三区欧美 | 天天拍夜夜拍 | 久久久亚洲精华液 | 天天草视频 | 91在线观看高清 | 久久久2o19精品 | 国产一区二区不卡在线 | 日韩二区三区在线 | 国产精品高 | 中文字幕在线观看视频一区 | 免费中文字幕 | 国产香蕉视频在线观看 | 97人人澡人人爽人人模亚洲 | 久久久久久久久久久久久久电影 | 国内小视频在线观看 | 日韩视频一区二区三区在线播放免费观看 | av超碰在线| 88av网站| 国产免费xvideos视频入口 | 亚洲综合最新在线 | 免费国产黄线在线观看视频 | 久久精品欧美日韩精品 | av色一区 | 欧美激情视频一区二区三区免费 | 美女视频久久黄 | 国产91精品在线播放 | 中日韩欧美精彩视频 | 婷婷av电影| 精品视频在线免费 | 日韩69视频| 日韩av视屏| 婷婷久久久 | 91自拍成人| 亚洲一区二区三区miaa149 | 亚洲人人射 | 亚洲女欲精品久久久久久久18 | 免费看黄视频 | 亚洲精品在线视频网站 | 天天婷婷 | av看片网| 中文一区在线观看 | 国产精品久久久久av | 伊人狠狠色 | 97超碰成人在线 | 探花视频在线观看免费版 | 91九色在线视频观看 | 日韩簧片在线观看 | 国产成视频在线观看 | 久久一区二区三区日韩 | 亚洲精品国产精品99久久 | 在线观看免费版高清版 | 欧美精品久久天天躁 | 深夜国产在线 | 成人免费观看大片 | 97在线视频观看 | 日p视频 | 日韩午夜在线播放 | 在线观看黄污 | 18国产精品白浆在线观看免费 | 色资源在线观看 | 国产精品18久久久久久不卡孕妇 | 亚洲精品自在在线观看 | 中文字幕日本在线 | 久久久免费精品国产一区二区 | www国产亚洲精品久久麻豆 | 日韩一级电影网站 | 狠狠狠操| 国产在线精品福利 | 国产一级片免费观看 | 99久久婷婷国产一区二区三区 | 国产成人av在线影院 | 永久免费视频国产 | 97色婷婷成人综合在线观看 | 日韩欧美国产精品 | 成人在线观看网址 | 精品在线二区 | 国产精品久久久久婷婷二区次 | 国产精品色婷婷视频 | 波多野结衣理论片 | 91av短视频| 99在线精品视频观看 | 国产小视频你懂的在线 | 成人免费在线观看av | 久草香蕉在线视频 | 国产精品乱码高清在线看 | 日日干夜夜爱 | 久久久久久欧美二区电影网 | 国产精品99久久久久久人免费 | 最近免费观看的电影完整版 | 99精品在线观看视频 | 久久综合婷婷 | 少妇自拍av | 欧美激情精品一区 | 欧美视频日韩 | 免费视频一区二区 | 免费看成人a| 精品国产乱码久久久久久1区2匹 | 久久久久久久久久久电影 | 91久久久久久久 | 在线国产精品视频 | 国产热re99久久6国产精品 | 97超碰中文字幕 | 日免费视频 | 亚洲精品国产精品国自产观看浪潮 | 国产精品亚洲视频 | 国产999精品久久久影片官网 | 99免费观看视频 | 国产欧美综合在线观看 | 国产精品福利无圣光在线一区 | 国产精品永久在线观看 | 欧美成人久久 | 中文字幕在线观看完整 | 久久免费高清视频 | 欧美一区中文字幕 | 色婷婷www| 久久99精品久久久久久 | 超碰九九 | 91私密保健| 在线国产91 | 日韩一级黄色大片 | 亚洲黄色一级大片 | 亚洲一区视频免费观看 | 久久成人亚洲欧美电影 | 久久综合狠狠综合久久激情 | 996久久国产精品线观看 | 亚洲综合国产精品 | 日日操网站| 日韩av中文字幕在线 | 日韩精品久久久久久久电影竹菊 | 网址你懂的在线观看 | 一本一道久久a久久精品蜜桃 | 狠狠操欧美 | 亚洲成人第一区 | 成人午夜电影免费在线观看 | 日韩欧美一区二区在线播放 | 精品伊人久久久 | 人人草人人草 | 中文字幕有码在线观看 | 成人av在线网 | 美女在线黄 | 中文字幕在线观看91 | 亚洲国产精品成人av | 日韩欧美视频免费观看 | 99国产视频 | 国产亚洲精品久久网站 | 丁香激情五月婷婷 | 国产一区二区在线看 | 国产精品成人国产乱 | 最近2019年日本中文免费字幕 | 久久久在线 | 国产精品综合在线观看 | 麻豆91精品91久久久 | a级片韩国 | 天天干天天操天天做 | 国产精品资源网 | 五月激情久久 | 免费黄色在线网址 | 国产白浆在线观看 | 天天做日日爱夜夜爽 | 免费看一级黄色 | 日韩字幕| 久久视频在线观看中文字幕 | 亚洲欧美国内爽妇网 | avav片 | 中文字幕久久亚洲 | 在线观看成人福利 | 日本系列中文字幕 | 亚洲春色综合另类校园电影 | 在线视频欧美精品 | 久久久91精品国产一区二区精品 | 成人片在线播放 | 在线观看黄 | www.五月天| 极品嫩模被强到高潮呻吟91 | 在线亚洲人成电影网站色www | 欧美日韩在线第一页 | 精品国产亚洲在线 | 免费视频99| 正在播放 国产精品 | 日批网站免费观看 | 中日韩免费视频 | av电影在线观看 | 婷婷六月色 | 久久精品理论 | 人人爽人人爽人人爽学生一级 | aaa毛片视频| 97视频免费 | 久久久精品国产一区二区电影四季 | 天天做天天看 | 日本成人a| 成人免费视频在线观看 | 久久久久欧美精品999 | 丁香花中文在线免费观看 | 久久精品草| 四虎8848免费高清在线观看 | 国产亚洲人 | 久久福利在线 | 久久99视频免费 | 国产专区视频在线 | 人人人爽 | 日韩欧美成人网 | 国内外成人在线视频 | 天天操综合网 | 美女一级毛片视频 | 国产黄色一级片在线 | 97视频入口免费观看 | 久艹在线观看视频 | 成人在线视频在线观看 | 国产日韩亚洲 | 午夜精品久久久久久中宇69 | 久久伊人操 | 在线精品亚洲一区二区 | www.夜夜骑.com | 国产亚洲成人精品 | 中文字幕 91 | 久操久| 精品国产一区二区三区av性色 | 国产无套精品久久久久久 | 亚洲伊人色 | 中文一区在线观看 | 欧美aa一级片 | 国产高清av免费在线观看 | 中文在线天堂资源 | 日韩av黄| 91精品欧美 | 欧美精品在线观看免费 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 国产中文字幕在线视频 | 99视频在线观看免费 | av成人免费观看 | 99久久久成人国产精品 | 欧美日韩一区二区三区在线免费观看 | 久久视频在线观看 | 亚洲精品国产综合久久 | 久久综合之合合综合久久 | 人人干人人做 | 久久不射网站 | 天天摸天天舔 | 日韩,中文字幕 | 在线欧美中文字幕 | 免费在线91 | 探花视频在线版播放免费观看 | 伊人在线视频 | 91精品导航 | 欧美小视频在线观看 | 久久精品影片 | av三级av | 亚洲免费在线播放视频 | 亚洲国产丝袜在线观看 | 国产精品久久久久永久免费看 | 欧美日韩高清一区 | 在线观看中文 | 九九热国产 | 久久久电影 | 日韩av电影中文字幕在线观看 | 精品久久久久久久久久久久久久久久 | 亚洲最新av在线网址 | av视屏在线播放 | 久久怡红院 | 欧美日韩在线播放 | 久久伦理视频 | 在线免费观看国产 | 日日夜夜亚洲 | 欧美成年网站 | 99精品网站 | 伊人黄色网 | 成年人在线观看免费视频 | 国产午夜精品一区二区三区四区 | 久久激情五月婷婷 | 91九色蝌蚪视频在线 | 丁香网五月天 | 黄色a一级片 | 成年一级片| 中文字幕一区二区三区四区久久 | 91成年人在线观看 | 国产高清小视频 | 亚洲妇女av | 97电影在线观看 | 91丨九色丨高潮 | 国产精品久久一卡二卡 | 亚洲综合色视频 | 亚洲综合黄色 | 色综合久久88色综合天天 | 四虎影视精品成人 | 国产精品毛片久久久久久久久久99999999 | 欧美国产亚洲精品久久久8v | 伊人五月天.com | 91高清完整版在线观看 | 午夜视频99 | 国产精品一区二区在线观看 | 久久免费激情视频 | 五月婷婷综合在线观看 | 日韩午夜在线观看 | 97国产电影| 亚洲另类xxxx | 中文字幕视频网站 | 97激情影院 | 久久久综合 | 成人免费在线播放 | 中文字幕在线观看一区 | 香蕉视频久久久 | 在线观看视频日韩 | 在线观看日韩一区 | 成人免费网视频 | 婷婷丁香色 | 免费一级片在线观看 | 日韩欧美69| www.色婷婷.com | 中文字幕成人网 | 7777精品伊人久久久大香线蕉 | 国产精品永久久久久久久久久 | 久久一区二区三区超碰国产精品 | 久久国产热| 天天天色综合 | 久久人人爽人人爽人人 | 天干啦夜天干天干在线线 | 免费av高清 | 天天干天天拍天天操天天拍 | 欧美一区二区三区特黄 | 欧美日韩国产高清视频 | 操一草 | 国色综合 | av丝袜在线 | 99夜色| 欧美日韩国产在线精品 | 中文字幕中文中文字幕 | 亚洲精品tv| 精品一区二区三区在线播放 | 91在线观看欧美日韩 | 国产精品永久在线 | 成人a视频 | 国产99久久久国产精品免费二区 | 欧美一进一出抽搐大尺度视频 | 少妇超碰在线 | 国产亚洲精品美女 | 91视频免费播放 | 四虎在线视频 | 超碰人人草| 日韩成人中文字幕 | 成人午夜电影网站 | 久久久久久久网站 | 亚洲人成免费 | 伊人热 | 人人干人人做 | 日韩av不卡在线观看 | 午夜影视av | 97日日 | 婷婷久久综合九色综合 | 2022国产精品视频 | 日韩免费视频线观看 | 亚洲免费专区 | 国产手机视频在线观看 | 美女精品久久久 | 成人国产精品免费观看 | 亚洲日本一区二区在线 | 婷婷看片| 深爱婷婷久久综合 | 国产成人精品999在线观看 | 午夜精品福利在线 | 免费亚洲精品 | 欧美在线视频一区二区 | 日韩精品在线视频免费观看 | 一区二区三区视频网站 | 香蕉视频在线免费看 | 中文字幕 国产精品 | 狠狠躁18三区二区一区ai明星 | av片免费播放 | 欧美三级高清 | 亚洲欧美在线视频免费 | 免费日韩一区二区三区 | 在线中文字幕网站 | 日本三级国产 | 在线电影 你懂得 | 在线日韩精品视频 | 黄色毛片观看 | 欧美一级免费黄色片 | 日韩av黄| 亚洲国产av精品毛片鲁大师 | 日日夜夜狠狠操 | 射综合网 | 91在线你懂的 | av免费在线观看网站 | japanesefreesexvideo高潮| 日韩欧美高清不卡 | 天天色天天爱天天射综合 | 69国产盗摄一区二区三区五区 | 在线看国产| 99精品在线播放 | 久久精品99国产精品日本 | 高清av影院 | 亚洲在线高清 | 欧美一区二区在线免费看 | www色片| 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 中文字幕一区二区三区久久 | 成人综合婷婷国产精品久久免费 | 欧美日韩免费观看一区=区三区 | 一级黄色片在线播放 | 天天操天天拍 | 国产成人福利在线 | 亚洲激情五月 | 在线免费av网站 | 亚洲精品综合一二三区在线观看 | 欧美一级片免费在线观看 | 精品亚洲一区二区三区 | 99色在线观看视频 | 91av视频播放 | 免费看三级 | 国产精品高清免费在线观看 | av在线网站免费观看 | 国产精品久久久久一区二区国产 | 丝袜少妇在线 | 久久免费视频7 | 日日干av| 欧美精品生活片 | 色综合天天天天做夜夜夜夜做 | a级国产毛片 | 国产精品入口传媒 | 狠狠干激情 | 在线观看一级片 | 综合网中文字幕 | 亚洲毛片一区二区三区 | 成 人 黄 色 视频免费播放 | 亚洲久草视频 | 啪啪小视频网站 | 成人h视频在线 | 久久久av免费 | 亚洲第五色综合网 | 欧美极品少妇xxxx | 亚洲电影成人 | 免费不卡中文字幕视频 | 欧美日韩国产精品一区二区亚洲 | 手机在线永久免费观看av片 | 很污的网站 | 999亚洲国产996395 | 三级黄色免费片 | 日韩天堂在线观看 | 亚洲精品动漫久久久久 | avav99| 亚洲激情在线观看 | 精品在线观看国产 | av电影中文字幕在线观看 | 久草视频中文 | 操久| 日韩欧三级 | 色诱亚洲精品久久久久久 | 99热精品免费观看 | 久草精品视频 | 草在线视频 | 日韩在线观| 91资源在线 | 在线视频日韩 | 久久夜靖品 | 九九热在线视频 | 久亚洲 | 日韩www在线| 日韩在线视频一区 | 亚洲天堂网视频在线观看 | 国产成人333kkk | 99免费在线视频 | 亚洲午夜久久久久久久久电影网 | 成人免费观看网址 | 国产精品不卡一区 | 天天操夜夜操天天射 | 青青五月天| 国产在线不卡精品 | 人人干天天射 | 亚洲人成网站精品片在线观看 | 国产欧美综合在线观看 | 国产成人亚洲精品自产在线 | 日韩精品久久久 | 国产精品成人久久久久久久 | 天天爽天天碰狠狠添 | 国产成人久久久77777 | 日韩精品一区二区免费 | 日本视频不卡 | 欧美国产不卡 | 成人黄视频 | 99这里精品 | 国产精品第十页 | 狠狠色噜噜狠狠狠合久 | 1024手机在线看 | 99情趣网视频| 狠狠色丁香 | 久久久精品欧美一区二区免费 | 国产精品一区二区av麻豆 | 亚洲日本韩国一区二区 | 麻豆91精品91久久久 | 九九影视理伦片 | 人人揉人人揉人人揉人人揉97 | 在线观看av大片 | 欧洲成人av | 中文高清av| 午夜国产成人 | 三级性生活视频 | 91久久电影| 玖玖精品在线 | 夜夜嗨av色一区二区不卡 | 亚洲视频免费在线观看 | 国产精品白浆 | 久久精品久久99 | av在线播放一区二区三区 | 免费在线观看日韩 | 少妇精品久久久一区二区免费 | 99久久精品久久久久久清纯 | 日日骑| 韩国一区二区三区视频 | 久久精品4| 韩国在线视频一区 | 欧美精品做受xxx性少妇 | 久久99久久99精品免观看软件 | 深爱婷婷久久综合 | 啪嗒啪嗒免费观看完整版 | av在线精品| 色视频在线观看 | 成人va视频 | 黄色小网站免费看 | 国产玖玖精品视频 | 亚洲精品字幕在线观看 | 伊人中文在线 | 久久一区二区三区日韩 | 字幕网av| 成人黄色在线看 | 成片免费观看视频大全 | 国产一级大片在线观看 | 国产一区二区视频在线 | 欧美日韩高清免费 | 日韩电影在线看 | 麻豆视频免费入口 | 色综合久久网 | 高清视频一区 | 最近高清中文在线字幕在线观看 | 久久中文欧美 | 超碰在线91| 色欧美88888久久久久久影院 | 国产亚洲精品美女 | 精品毛片在线 | 毛片激情永久免费 | 亚洲成av人影院 | 欧美福利视频 | 狠狠插狠狠操 | 欧美国产一区二区 | 五月天国产 | 最近最新mv字幕免费观看 | 西西人体4444www高清视频 | 久久久久久久久久福利 | 亚洲手机av | 久久久久久综合网天天 | 激情综合五月婷婷 | 欧美激情精品久久久久久免费印度 | 96亚洲精品久久久蜜桃 | 久久久久久网站 | 欧美一级日韩三级 | 精品不卡av | 国产精品资源网 | 久久天天躁夜夜躁狠狠85麻豆 | 国产精品久久久久久久久久99 | 激情综合网五月激情 | 国产成本人视频在线观看 | av九九| 国产偷国产偷亚洲清高 | 日韩av影视在线观看 | 激情婷婷在线 | 国产一区二区免费 | av在线收看 | 人人玩人人添人人澡超碰 | 久久理伦片 | 欧美精品做受xxx性少妇 | 成人影视免费 | 麻豆一级视频 | 色婷婷在线播放 | 亚洲一区黄色 | 亚洲乱码精品久久久久 | 亚洲禁18久人片 | 久久草网站 | 黄网在线免费观看 | 中文字幕有码在线观看 | 丁香婷婷综合五月 | 天天综合日日夜夜 | 在线精品在线 | 性色va| 日日射av | 久久综合色天天久久综合图片 | 亚洲国产剧情 | 91在线看| 亚洲欧美日本国产 | 日韩偷拍精品 | 欧美日韩中文在线视频 | 天天射网| 国内亚洲精品 | 日韩电影久久久 | 五月色综合 | 一色av| av中文在线 | 久久99免费观看 | 97中文字幕 | 婷婷六月中文字幕 | 在线国产不卡 | 成人在线免费视频 | 久久免费精品国产 | 亚洲极色 | 一区二区伦理 | 日韩一区二区在线免费观看 | 国产中文在线观看 | av中文字幕网站 | 免费久久久久久 | 一级黄色片在线 | 99精品国产99久久久久久福利 | 国产原创在线视频 | 日韩精品免费在线 | 中文字幕 国产视频 | 成人av电影免费在线播放 | 在线黄色国产电影 | 久久久精品 | 欧美日韩精品在线视频 | 中文字幕91视频 | 超碰97.com | 手机av网站 | 亚洲精品影院在线观看 | 国产精品一区二区三区在线免费观看 | 在线观看亚洲视频 | 亚洲高清资源 | 伊人午夜视频 | 久久婷婷一区二区三区 | 97精品国产97久久久久久久久久久久 | 午夜在线免费观看视频 | 福利电影一区二区 | 视频在线观看亚洲 | 美女国内精品自产拍在线播放 | 久久久久福利视频 | 国产精品12345 | 亚洲闷骚少妇在线观看网站 | 日日操日日操 | 国产精品久久久久久久久久久久久久 | 夜添久久精品亚洲国产精品 | 99精品国产一区二区三区麻豆 | 午夜视频二区 | 久久综合狠狠 | 美女黄视频免费看 | 国产99久久久国产 | www.xxx.性狂虐 | 成人午夜在线观看 | 国产在线精品一区二区 | 91视频观看免费 | 日韩欧美精品一区二区三区经典 | 国产亚洲精品女人久久久久久 | 国产精品久久久电影 | 免费观看的av网站 | 国产一区视频导航 | 久久精品视频一 | 国产视频1 | 麻豆免费观看视频 | 国产一级片直播 | 欧美夫妻生活视频 | www91在线| 97免费公开视频 | 国产精品一区二区在线观看免费 | 99视频在线精品免费观看2 | 国内精品国产三级国产aⅴ久 | 午夜美女wwww | 欧美日韩免费在线观看视频 | 久久久久国产精品一区二区 | 日韩另类在线 | 亚洲欧洲成人 | 亚洲免费视频观看 | 日韩免费久久 | 91中文在线视频 | 亚洲欧美精品一区二区 | 亚洲精品中文字幕在线 | 国产精品欧美日韩 | 日p在线观看 | 色噜噜日韩精品欧美一区二区 | 久久精品国产亚洲a | 日韩毛片在线播放 | 五月开心六月伊人色婷婷 | 蜜臀av.com | 成人香蕉视频 | 成人小视频在线播放 | 精品国产一区在线观看 | 欧美日韩一区二区三区免费视频 | 日韩一级电影在线 | av电影在线观看完整版一区二区 | 日韩在线看片 | 亚洲天天综合网 | 亚洲成 人精品 | 麻豆精品视频在线 | 色婷婷播放 | 亚洲精品网站 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 亚洲 中文字幕av | 视频一区二区视频 | 久久免费一 | 天天操夜夜操 | 激情婷婷综合 | 国产精品 中文字幕 亚洲 欧美 | 色五月成人 | 精品久久久精品 | 天天操天天摸天天射 | 精品一区二区在线免费观看 | ww亚洲ww亚在线观看 | 国产精品青青 | 狠狠色丁香婷婷综合最新地址 | 日日夜夜精品免费观看 | 五月天狠狠操 | 久久精品美女 | 蜜桃视频在线视频 | 天天综合网国产 | 色99网| 国产高清视频在线免费观看 | av丝袜美腿 | 久久国语露脸国产精品电影 | 欧美日本不卡 | 在线视频观看亚洲 | 高潮久久久久久久久 | 日本精a在线观看 | 精品久久久久免费极品大片 | av丝袜制服 | 我要看黄色一级片 | 最近在线中文字幕 | 一二三区av| 人人澡人人爽 | 人人添人人澡人人澡人人人爽 | 欧美地下肉体性派对 | 黄色网在线免费观看 | 成人久久18免费网站麻豆 | 国产精品一区二区免费 | 91污在线 | 国产欧美综合视频 | 国产一区二区午夜 | 麻豆久久精品 | 五月天网页 | 久久久久国产精品免费网站 | 国产精品视频免费 | 在线观看视频一区二区 | 成av人电影| 天天操天天干天天操天天干 | 91传媒在线 | 国产高清成人 | 日韩av看片| 色综合久久精品 | 久久久久久久久爱 | 曰韩精品 | 久久99九九99精品 | 成年人电影免费在线观看 | 天堂在线一区二区三区 | 国产亚洲一区二区三区 | 中文字幕视频观看 | 午夜色场| 激情在线网址 | 成人av免费在线 | 天堂网中文在线 | 久久成人福利 | 精品国产精品一区二区夜夜嗨 | 亚洲精品视频久久 | 国产精品igao视频网网址 | 精品国产电影 | 亚洲电影久久久 | 国内99视频 | 久久精品国产一区二区 | 中文字幕在线观看2018 | 麻豆视频在线观看免费 | 亚洲欧洲国产精品 | 精品久久久久久久 | 亚洲国产成人久久 | 91人人射| 激情小说网站亚洲综合网 | 蜜臀av一区| 在线观看国产www | 久久久精品久久日韩一区综合 | 91中文字幕在线观看 | 国产色视频网站2 | 欧美高清成人 | 中文字幕成人一区 | 国产精品孕妇 | 91成品人影院 | 天天干天天天天 | 久久免费电影网 | 一本一本久久aa综合精品 | 91麻豆精品国产91久久久久久久久 | 国内精品视频免费 | 天天操夜夜拍 | 99精品视频在线观看免费 | 欧美日韩国产色综合一二三四 | 色999视频 | 国产在线精品国自产拍影院 | 国产视频综合在线 | 欧美黑人性爽 | 夜夜嗨av色一区二区不卡 | 国产精品一区二区久久久久 | 国产精品一区二区三区久久 | 99精品福利 | 在线成人一区 | 高潮久久久久久 | 国产h在线播放 | 日韩成人高清在线 | 丁香花中文在线免费观看 | 2023亚洲精品国偷拍自产在线 | 日日日操操 | 日本久久久久久久久久久 | 最近更新好看的中文字幕 | 国产美女视频 | 久草资源免费 | 久久婷婷色 | av资源网在线播放 | 日韩激情久久 | 久久久.com | av免费看网站| 天天操天天操一操 | 国内久久精品视频 | 午夜精品久久久久久久久久久 | 就要色综合 | 热99久久精品 | 国产一区二区视频在线播放 | 97人人网 | 久久久久亚洲最大xxxx | 亚洲欧美日韩一区二区三区在线观看 | 午夜久久网 | 97av免费视频| 五月婷丁香网 | 久草在线观看 | 97香蕉视频 | 色中射 | 精品久久免费看 | 午夜性福利 | 国产中文字幕视频在线观看 | 国外成人在线视频网站 | 日韩视频免费 | 国产精品免费久久久 | 天堂资源在线观看视频 | 日韩精品免费在线播放 | 久久久精品一区二区 | 久久三级视频 | 男女精品久久 | 国产最新精品视频 | 日本爱爱免费视频 | 99国产高清| 婷婷激情网站 | 中文字幕乱码亚洲精品一区 | 五月激情久久久 | 99中文字幕在线观看 | 国产黄影院色大全免费 | 国产精品观看在线亚洲人成网 | 成人夜晚看av | 国产91精品在线播放 | 成人永久免费 | 日韩视频免费播放 | 四虎国产精品永久在线国在线 | 日韩电影在线观看一区二区三区 | 欧美色图狠狠干 | av看片在线 | 亚欧日韩成人h片 | 一区在线免费观看 | av先锋中文字幕 | 亚洲精品久久久久中文字幕二区 | 久久中文字幕在线视频 | 永久免费av在线播放 | 亚洲精品国偷拍自产在线观看 | 久久伊99综合婷婷久久伊 | 欧美激情xxxx | 欧美日韩高清一区二区 | 国产亚洲aⅴaaaaaa毛片 | 中文字幕黄色av | 国产精品igao视频网网址 | 亚洲人成人在线 | 亚洲精品在线免费观看视频 | 狠狠色丁香婷婷综合久小说久 | 日韩黄色在线观看 | 成人免费一级片 | 免费高清男女打扑克视频 | 日日精品 | 九九热精 | 国产私拍在线 | 久久久久久国产精品免费 | 黄色大片网 | 精品久久久久久亚洲综合网站 | a在线观看免费视频 | 欧美成人xxxxx| 久久久久激情 | 国产99区 | 黄色毛片网站在线观看 | 久久久久亚洲精品成人网小说 | 久草在线免费色站 | 国产最新视频在线观看 | 91视频午夜| 性色av一区二区三区在线观看 | 久久精品一区二区三区视频 | 久久无码av一区二区三区电影网 | 国产精品高 | 久草在线久草在线2 | 992tv又爽又黄的免费视频 | 亚洲国产成人在线播放 | 欧美精品久久久久久久久久久 | 久草在线最新 | 天天干天天干天天干天天干天天干天天干 | 黄色国产大片 | 久久99在线 | 国产精品一区二区三区久久 | 人人爽爽人人 | 国产玖玖精品视频 | 亚洲欧美观看 | 九色琪琪久久综合网天天 | 中文字幕黄色网址 | 日韩毛片在线一区二区毛片 | 久久av高清 | av一区二区在线观看中文字幕 | 亚洲精品中文字幕视频 | 一区二区激情视频 | 免费毛片aaaaaa | 日韩精品影视 | 日韩一二区在线观看 | www.狠狠插.com | 久草精品视频 | 亚洲成人午夜在线 | 国产精品第52页 | 久久夜色精品国产欧美乱极品 | 在线观看黄网站 | 久久婷婷综合激情 | 一区二区三区韩国免费中文网站 | 四虎国产精品免费 | 国产成人精品一区二 | 麻豆视频在线观看 | 狠狠狠色丁香婷婷综合激情 | 免费观看久久 | 中文十次啦 | 亚洲精品视频在线观看免费视频 | 久久久久久毛片精品免费不卡 | 欧美先锋影音 | 婷婷亚洲最大 | 久久综合精品国产一区二区三区 | 久久久精品国产免费观看同学 | 亚洲综合色视频 | 麻豆免费视频 | 精品亚洲男同gayvideo网站 | 日韩理论在线观看 | 国产免费一区二区三区最新 | 丁香网婷婷 | 麻豆免费精品视频 | 视频二区在线视频 | 久久免费观看视频 | 天天天天爽| 亚洲精品国产视频 | 综合色影院| 亚洲综合色站 | 97精品一区 | 久草在线手机观看 | www天天干| 91人人人| 亚洲国产小视频在线观看 | 亚洲va男人天堂 | 日韩成人欧美 | 日b视频在线观看网址 | 日韩一级电影在线 | 亚洲人成网站精品片在线观看 | 激情久久久久 | 91久久国产综合精品女同国语 | 97成人资源站 | 九九综合九九 | 狠狠狠狠狠狠狠干 | 99视频免费 | 在线观看你懂的网址 | 在线观看日本高清mv视频 | 91久久国产露脸精品国产闺蜜 | 夜色资源网 | 91久久精品一区二区二区 | 中文在线字幕免费观 | 色99之美女主播在线视频 | 日日干美女| 国产精品电影一区二区 | 激情网在线观看 | 色天天综合网 | 天堂av免费 | 91精品久久久久久综合乱菊 | 91成人看片| 国产视频精品网 | 亚洲午夜在线视频 | 婷婷激情欧美 | 蜜臀精品久久久久久蜜臀 | 成人久久久久 | 日韩av中文在线 | 天天久久夜夜 | 在线草 | 亚洲最新av网址 | 高清av免费看 |