婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 詳解TensorFlow2實(shí)現(xiàn)前向傳播

詳解TensorFlow2實(shí)現(xiàn)前向傳播

熱門標(biāo)簽:B52系統(tǒng)電梯外呼顯示E7 鶴壁手機(jī)自動(dòng)外呼系統(tǒng)違法嗎 高德地圖標(biāo)注收入咋樣 怎么辦理400客服電話 企業(yè)微信地圖標(biāo)注 萊蕪電信外呼系統(tǒng) 沈陽(yáng)防封電銷電話卡 銀川電話機(jī)器人電話 地圖標(biāo)注多個(gè)

概述

前向傳播 (Forward propagation) 是將上一層輸出作為下一層的輸入, 并計(jì)算下一層的輸出, 一直到運(yùn)算到輸出層為止.

會(huì)用到的函數(shù)

張量最小值

```reduce_min``函數(shù)可以幫助我們計(jì)算一個(gè)張量各個(gè)維度上元素的最小值.

格式:

tf.math.reduce_min(
    input_tensor, axis=None, keepdims=False, name=None
)

參數(shù):

  • input_tensor: 傳入的張量
  • axis: 維度, 默認(rèn)計(jì)算所有維度
  • keepdims: 如果為真保留維度, 默認(rèn)為 False
  • name: 數(shù)據(jù)名稱

張量最大值

```reduce_max``函數(shù)可以幫助我們計(jì)算一個(gè)張量各個(gè)維度上元素的最大值.

格式:

tf.math.reduce_max(
    input_tensor, axis=None, keepdims=False, name=None
)

參數(shù):

  • input_tensor: 傳入的張量
  • axis: 維度, 默認(rèn)計(jì)算所有維度
  • keepdims: 如果為真保留維度, 默認(rèn)為 False
  • name: 數(shù)據(jù)名稱

數(shù)據(jù)集分批

from_tensor_slices可以幫助我們切分傳入 Tensor 的第一個(gè)維度. 得到的每個(gè)切片都是一個(gè)樣本數(shù)據(jù).

格式:

@staticmethod
from_tensor_slices(
    tensors
)

迭代

我們可以調(diào)用iter函數(shù)來(lái)生成迭代器.

格式:

iter(object[, sentinel])

參數(shù):
-object: 支持迭代的集合對(duì)象

  • sentinel: 如果傳遞了第二個(gè)參數(shù), 則參數(shù) object 必須是一個(gè)可調(diào)用的對(duì)象 (如, 函數(shù)). 此時(shí), iter 創(chuàng)建了一個(gè)迭代器對(duì)象, 每次調(diào)用這個(gè)迭代器對(duì)象的__next__()方法時(shí), 都會(huì)調(diào)用 object

例子:

list = [1, 2, 3]
i = iter(list)
print(next(i))
print(next(i))
print(next(i))

輸出結(jié)果:

1
2
3

截?cái)嗾龖B(tài)分布

truncated_normal可以幫助我們生成一個(gè)截?cái)嗟恼龖B(tài)分布. 生成的正態(tài)分布值會(huì)在兩倍的標(biāo)準(zhǔn)差的范圍之內(nèi).

格式:

tf.random.truncated_normal(
    shape, mean=0.0, stddev=1.0, dtype=tf.dtypes.float32, seed=None, name=None
)

參數(shù):

  • shape: 張量的形狀
  • mean: 正態(tài)分布的均值, 默認(rèn) 0.0
  • stddev: 正態(tài)分布的標(biāo)準(zhǔn)差, 默認(rèn)為 1.0
  • dtype: 數(shù)據(jù)類型, 默認(rèn)為 float32
  • seed: 隨機(jī)數(shù)種子
  • name: 數(shù)據(jù)名稱

relu 激活函數(shù)

激活函數(shù)有 sigmoid, maxout, relu 等等函數(shù). 通過(guò)激活函數(shù)我們可以使得各個(gè)層之間達(dá)成非線性關(guān)系.

激活函數(shù)可以幫助我們提高模型健壯性, 提高非線性表達(dá)能力, 緩解梯度消失問(wèn)題.

one_hot

tf.one_hot函數(shù)是講 input 準(zhǔn)換為 one_hot 類型數(shù)據(jù)輸出. 相當(dāng)于將多個(gè)數(shù)值聯(lián)合放在一起作為多個(gè)相同類型的向量.

格式:

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

參數(shù):

  • indices: 索引的張量
  • depth: 指定獨(dú)熱編碼維度的標(biāo)量
  • on_value: 索引 indices[j] = i 位置處填充的標(biāo)量,默認(rèn)為 1
  • off_value: 索引 indices[j] != i 所有位置處填充的標(biāo)量, 默認(rèn)為 0
  • axis: 填充的軸, 默認(rèn)為 -1 (最里面的新軸)
  • dtype: 輸出張量的數(shù)據(jù)格式
  • name:數(shù)據(jù)名稱

assign_sub

assign_sub可以幫助我們實(shí)現(xiàn)張量自減.

格式:

tf.compat.v1.assign_sub(
    ref, value, use_locking=None, name=None
)

參數(shù):

  • ref: 多重張量
  • value: 張量
  • use_locking: 鎖
  • name: 數(shù)據(jù)名稱

準(zhǔn)備工作

import tensorflow as tf

# 定義超參數(shù)
batch_size = 256  # 一次訓(xùn)練的樣本數(shù)目
learning_rate = 0.001  # 學(xué)習(xí)率
iteration_num = 20  # 迭代次數(shù)

# 讀取mnist數(shù)據(jù)集
(x, y), _ = tf.keras.datasets.mnist.load_data()  # 讀取訓(xùn)練集的特征值和目標(biāo)值
print(x[:5])  # 調(diào)試輸出前5個(gè)圖
print(y[:5])  # 調(diào)試輸出前5個(gè)目標(biāo)值數(shù)字
print(x.shape)  # (60000, 28, 28) 單通道
print(y.shape)  # (60000,)

# 轉(zhuǎn)換成常量tensor
x = tf.convert_to_tensor(x, dtype=tf.float32) / 255  # 轉(zhuǎn)換為0~1的形式
y = tf.convert_to_tensor(y, dtype=tf.int32)  # 轉(zhuǎn)換為整數(shù)形式

# 調(diào)試輸出范圍
print(tf.reduce_min(x), tf.reduce_max(x))  # 0~1
print(tf.reduce_min(y), tf.reduce_max(y))  # 0~9

# 分割數(shù)據(jù)集
train_db = tf.data.Dataset.from_tensor_slices((x, y)).batch(batch_size)  # 256為一個(gè)batch
train_iter = iter(train_db)  # 生成迭代對(duì)象

# 定義權(quán)重和bias [256, 784] => [256, 256] => [256, 128] => [128, 10]
w1 = tf.Variable(tf.random.truncated_normal([784, 256], stddev=0.1))  # 標(biāo)準(zhǔn)差為0.1的截?cái)嗾龖B(tài)分布
b1 = tf.Variable(tf.zeros([256]))  # 初始化為0

w2 = tf.Variable(tf.random.truncated_normal([256, 128], stddev=0.1))  # 標(biāo)準(zhǔn)差為0.1的截?cái)嗾龖B(tài)分布
b2 = tf.Variable(tf.zeros([128]))  # 初始化為0

w3 = tf.Variable(tf.random.truncated_normal([128, 10], stddev=0.1))  # 標(biāo)準(zhǔn)差為0.1的截?cái)嗾龖B(tài)分布
b3 = tf.Variable(tf.zeros([10]))  # 初始化為0

輸出結(jié)果:

[[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]

[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]

[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]

[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]

[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]]
[5 0 4 1 9]
(60000, 28, 28)
(60000,)
tf.Tensor(0.0, shape=(), dtype=float32) tf.Tensor(1.0, shape=(), dtype=float32)
tf.Tensor(0, shape=(), dtype=int32) tf.Tensor(9, shape=(), dtype=int32)

train 函數(shù)

def train(epoch):  # 訓(xùn)練
    for step, (x, y) in enumerate(train_db):  # 每一批樣本遍歷
        # 把x平鋪 [256, 28, 28] => [256, 784]
        x = tf.reshape(x, [-1, 784])

        with tf.GradientTape() as tape:  # 自動(dòng)求解
            # 第一個(gè)隱層 [256, 784] => [256, 256]
            # [256, 784]@[784, 256] + [256] => [256, 256] + [256] => [256, 256] + [256, 256] (廣播機(jī)制)
            h1 = x @ w1 + tf.broadcast_to(b1, [x.shape[0], 256])
            h1 = tf.nn.relu(h1)  # relu激活

            # 第二個(gè)隱層 [256, 256] => [256, 128]
            h2 = h1 @ w2 + b2
            h2 = tf.nn.relu(h2)  # relu激活

            # 輸出層 [256, 128] => [128, 10]
            out = h2 @ w3 + b3

            # 計(jì)算損失MSE(Mean Square Error)
            y_onehot = tf.one_hot(y, depth=10)  # 轉(zhuǎn)換成one_hot編碼
            loss = tf.square(y_onehot - out)  # 計(jì)算總誤差
            loss = tf.reduce_mean(loss)  # 計(jì)算平均誤差MSE


        # 計(jì)算梯度
        grads = tape.gradient(loss, [w1, b1, w2, b2, w3, b3])

        # 更新權(quán)重
        w1.assign_sub(learning_rate * grads[0])  # 自減梯度*學(xué)習(xí)率
        b1.assign_sub(learning_rate * grads[1])  # 自減梯度*學(xué)習(xí)率
        w2.assign_sub(learning_rate * grads[2])  # 自減梯度*學(xué)習(xí)率
        b2.assign_sub(learning_rate * grads[3])  # 自減梯度*學(xué)習(xí)率
        w3.assign_sub(learning_rate * grads[4])  # 自減梯度*學(xué)習(xí)率
        b3.assign_sub(learning_rate * grads[5])  # 自減梯度*學(xué)習(xí)率

        if step % 100 == 0:  # 每運(yùn)行100個(gè)批次, 輸出一次
            print("epoch:", epoch, "step:", step, "loss:", float(loss))

run 函數(shù)

def run():
    for i in range(iteration_num):  # 迭代20次
        train(i)

完整代碼

import tensorflow as tf

# 定義超參數(shù)
batch_size = 256  # 一次訓(xùn)練的樣本數(shù)目
learning_rate = 0.001  # 學(xué)習(xí)率
iteration_num = 20  # 迭代次數(shù)

# 讀取mnist數(shù)據(jù)集
(x, y), _ = tf.keras.datasets.mnist.load_data()  # 讀取訓(xùn)練集的特征值和目標(biāo)值
print(x[:5])  # 調(diào)試輸出前5個(gè)圖
print(y[:5])  # 調(diào)試輸出前5個(gè)目標(biāo)值數(shù)字
print(x.shape)  # (60000, 28, 28) 單通道
print(y.shape)  # (60000,)

# 轉(zhuǎn)換成常量tensor
x = tf.convert_to_tensor(x, dtype=tf.float32) / 255  # 轉(zhuǎn)換為0~1的形式
y = tf.convert_to_tensor(y, dtype=tf.int32)  # 轉(zhuǎn)換為整數(shù)形式

# 調(diào)試輸出范圍
print(tf.reduce_min(x), tf.reduce_max(x))  # 0~1
print(tf.reduce_min(y), tf.reduce_max(y))  # 0~9

# 分割數(shù)據(jù)集
train_db = tf.data.Dataset.from_tensor_slices((x, y)).batch(batch_size)  # 256為一個(gè)batch
train_iter = iter(train_db)  # 生成迭代對(duì)象

# 定義權(quán)重和bias [256, 784] => [256, 256] => [256, 128] => [128, 10]
w1 = tf.Variable(tf.random.truncated_normal([784, 256], stddev=0.1))  # 標(biāo)準(zhǔn)差為0.1的截?cái)嗾龖B(tài)分布
b1 = tf.Variable(tf.zeros([256]))  # 初始化為0

w2 = tf.Variable(tf.random.truncated_normal([256, 128], stddev=0.1))  # 標(biāo)準(zhǔn)差為0.1的截?cái)嗾龖B(tài)分布
b2 = tf.Variable(tf.zeros([128]))  # 初始化為0

w3 = tf.Variable(tf.random.truncated_normal([128, 10], stddev=0.1))  # 標(biāo)準(zhǔn)差為0.1的截?cái)嗾龖B(tài)分布
b3 = tf.Variable(tf.zeros([10]))  # 初始化為0


def train(epoch):  # 訓(xùn)練
    for step, (x, y) in enumerate(train_db):  # 每一批樣本遍歷
        # 把x平鋪 [256, 28, 28] => [256, 784]
        x = tf.reshape(x, [-1, 784])

        with tf.GradientTape() as tape:  # 自動(dòng)求解
            # 第一個(gè)隱層 [256, 784] => [256, 256]
            # [256, 784]@[784, 256] + [256] => [256, 256] + [256] => [256, 256] + [256, 256] (廣播機(jī)制)
            h1 = x @ w1 + tf.broadcast_to(b1, [x.shape[0], 256])
            h1 = tf.nn.relu(h1)  # relu激活

            # 第二個(gè)隱層 [256, 256] => [256, 128]
            h2 = h1 @ w2 + b2
            h2 = tf.nn.relu(h2)  # relu激活

            # 輸出層 [256, 128] => [128, 10]
            out = h2 @ w3 + b3

            # 計(jì)算損失MSE(Mean Square Error)
            y_onehot = tf.one_hot(y, depth=10)  # 轉(zhuǎn)換成one_hot編碼
            loss = tf.square(y_onehot - out)  # 計(jì)算總誤差
            loss = tf.reduce_mean(loss)  # 計(jì)算平均誤差MSE


        # 計(jì)算梯度
        grads = tape.gradient(loss, [w1, b1, w2, b2, w3, b3])

        # 更新權(quán)重
        w1.assign_sub(learning_rate * grads[0])  # 自減梯度*學(xué)習(xí)率
        b1.assign_sub(learning_rate * grads[1])  # 自減梯度*學(xué)習(xí)率
        w2.assign_sub(learning_rate * grads[2])  # 自減梯度*學(xué)習(xí)率
        b2.assign_sub(learning_rate * grads[3])  # 自減梯度*學(xué)習(xí)率
        w3.assign_sub(learning_rate * grads[4])  # 自減梯度*學(xué)習(xí)率
        b3.assign_sub(learning_rate * grads[5])  # 自減梯度*學(xué)習(xí)率

        if step % 100 == 0:  # 每運(yùn)行100個(gè)批次, 輸出一次
            print("epoch:", epoch, "step:", step, "loss:", float(loss))


def run():
    for i in range(iteration_num):  # 迭代20次
        train(i)


if __name__ == "__main__":
    run()

輸出結(jié)果:

epoch: 0 step: 0 loss: 0.5439826250076294
epoch: 0 step: 100 loss: 0.2263326346874237
epoch: 0 step: 200 loss: 0.19458135962486267
epoch: 1 step: 0 loss: 0.1788959801197052
epoch: 1 step: 100 loss: 0.15782299637794495
epoch: 1 step: 200 loss: 0.1580992043018341
epoch: 2 step: 0 loss: 0.15085121989250183
epoch: 2 step: 100 loss: 0.1432340145111084
epoch: 2 step: 200 loss: 0.14373672008514404
epoch: 3 step: 0 loss: 0.13810500502586365
epoch: 3 step: 100 loss: 0.13337770104408264
epoch: 3 step: 200 loss: 0.1334681361913681
epoch: 4 step: 0 loss: 0.12887853384017944
epoch: 4 step: 100 loss: 0.12551936507225037
epoch: 4 step: 200 loss: 0.125375896692276
epoch: 5 step: 0 loss: 0.12160968780517578
epoch: 5 step: 100 loss: 0.1190723180770874
epoch: 5 step: 200 loss: 0.11880680173635483
epoch: 6 step: 0 loss: 0.11563797295093536
epoch: 6 step: 100 loss: 0.11367204040288925
epoch: 6 step: 200 loss: 0.11331651359796524
epoch: 7 step: 0 loss: 0.11063456535339355
epoch: 7 step: 100 loss: 0.10906648635864258
epoch: 7 step: 200 loss: 0.10866570472717285
epoch: 8 step: 0 loss: 0.10636782646179199
epoch: 8 step: 100 loss: 0.10510052740573883
epoch: 8 step: 200 loss: 0.10468046367168427
epoch: 9 step: 0 loss: 0.10268573462963104
epoch: 9 step: 100 loss: 0.10163718461990356
epoch: 9 step: 200 loss: 0.10121693462133408
epoch: 10 step: 0 loss: 0.09949333965778351
epoch: 10 step: 100 loss: 0.09859145432710648
epoch: 10 step: 200 loss: 0.09819269925355911
epoch: 11 step: 0 loss: 0.0966767817735672
epoch: 11 step: 100 loss: 0.09586615860462189
epoch: 11 step: 200 loss: 0.09550992399454117
epoch: 12 step: 0 loss: 0.09417577087879181
epoch: 12 step: 100 loss: 0.09341947734355927
epoch: 12 step: 200 loss: 0.09310202300548553
epoch: 13 step: 0 loss: 0.09193204343318939
epoch: 13 step: 100 loss: 0.09122277796268463
epoch: 13 step: 200 loss: 0.09092779457569122
epoch: 14 step: 0 loss: 0.0899026170372963
epoch: 14 step: 100 loss: 0.08923697471618652
epoch: 14 step: 200 loss: 0.08895798027515411
epoch: 15 step: 0 loss: 0.08804921805858612
epoch: 15 step: 100 loss: 0.08742769062519073
epoch: 15 step: 200 loss: 0.0871589332818985
epoch: 16 step: 0 loss: 0.08635203540325165
epoch: 16 step: 100 loss: 0.0857706069946289
epoch: 16 step: 200 loss: 0.0855005756020546
epoch: 17 step: 0 loss: 0.08479145169258118
epoch: 17 step: 100 loss: 0.08423925191164017
epoch: 17 step: 200 loss: 0.08396687358617783
epoch: 18 step: 0 loss: 0.08334997296333313
epoch: 18 step: 100 loss: 0.08281457424163818
epoch: 18 step: 200 loss: 0.08254452794790268
epoch: 19 step: 0 loss: 0.08201286941766739
epoch: 19 step: 100 loss: 0.08149122446775436
epoch: 19 step: 200 loss: 0.08122102916240692

到此這篇關(guān)于詳解TensorFlow2實(shí)現(xiàn)前向傳播的文章就介紹到這了,更多相關(guān)TensorFlow2前向傳播內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 手把手教你使用TensorFlow2實(shí)現(xiàn)RNN
  • tensorflow2.0實(shí)現(xiàn)復(fù)雜神經(jīng)網(wǎng)絡(luò)(多輸入多輸出nn,Resnet)
  • windows系統(tǒng)Tensorflow2.x簡(jiǎn)單安裝記錄(圖文)
  • TensorFlow2基本操作之合并分割與統(tǒng)計(jì)
  • Python強(qiáng)化練習(xí)之Tensorflow2 opp算法實(shí)現(xiàn)月球登陸器

標(biāo)簽:銀川 葫蘆島 安慶 湘西 呼倫貝爾 三亞 烏魯木齊 呼倫貝爾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解TensorFlow2實(shí)現(xiàn)前向傳播》,本文關(guān)鍵詞  詳解,TensorFlow2,實(shí)現(xiàn),前,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解TensorFlow2實(shí)現(xiàn)前向傳播》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于詳解TensorFlow2實(shí)現(xiàn)前向傳播的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲色图另类专区| 成人小视频免费观看| 另类小说一区二区三区| 成人免费高清视频在线观看| 欧美一级在线视频| 亚洲欧洲精品成人久久奇米网| 国内精品免费**视频| 成人av网址在线观看| 日韩一区二区免费在线电影| 亚洲少妇屁股交4| 国产高清精品久久久久| 欧美变态tickle挠乳网站| 日韩av成人高清| www.66久久| 国产精品色在线| fc2成人免费人成在线观看播放 | 91精品国产全国免费观看| 日韩理论片网站| 91在线丨porny丨国产| 亚洲欧美日韩中文字幕一区二区三区 | 欧美一区二区免费| 亚洲成人激情社区| 欧美一区二区日韩一区二区| 久久99精品久久久| 91高清视频免费看| 国产精品剧情在线亚洲| eeuss国产一区二区三区| 欧美国产成人在线| 色婷婷av一区二区三区软件| 一区二区三国产精华液| 91丨porny丨中文| 亚洲欧美电影一区二区| 色综合久久九月婷婷色综合| 午夜国产精品影院在线观看| 精品福利二区三区| 成人一级黄色片| 亚洲国产视频直播| 精品国产髙清在线看国产毛片| 成人国产免费视频| 日本va欧美va瓶| 久久久久久影视| 国产精品91一区二区| 国产亚洲精品bt天堂精选| 国产在线视频精品一区| 日本一区二区三区四区在线视频| 久久久精品日韩欧美| 国产盗摄精品一区二区三区在线 | 中文字幕一区在线观看| 欧美性猛交xxxx黑人交| 日韩电影免费一区| 久久伊99综合婷婷久久伊| 国产精品中文字幕一区二区三区| 亚洲婷婷综合色高清在线| 欧美精品久久99| 日韩电影在线免费| 久久综合狠狠综合久久综合88| 国产精品一二二区| 亚洲国产美国国产综合一区二区| 日韩精品一区二| 97久久精品人人做人人爽50路| 日韩av一级电影| 国产精品久久久久久久久免费相片 | 欧美片网站yy| 成人激情校园春色| 麻豆精品久久久| 亚洲午夜久久久久久久久电影院| 久久午夜免费电影| 在线观看av一区二区| 国产一区二区免费在线| 麻豆国产精品一区二区三区 | 成人白浆超碰人人人人| 视频一区欧美日韩| 日本一区二区成人| 欧美精品日韩一本| 91免费在线视频观看| 激情综合网最新| 五月婷婷激情综合| 亚洲韩国一区二区三区| **欧美大码日韩| 国产精品理论片| 日本一区二区成人| 日本一区二区视频在线| 精品久久久网站| 26uuu欧美| 久久奇米777| 国产无遮挡一区二区三区毛片日本| 欧美成人精品二区三区99精品| 精品视频资源站| 欧美日韩国产经典色站一区二区三区| 色爱区综合激月婷婷| av在线一区二区| 91网站在线观看视频| 成人蜜臀av电影| 99国内精品久久| www.成人网.com| 国产91精品一区二区麻豆网站 | 欧美日韩国产精品自在自线| 欧美另类变人与禽xxxxx| 777午夜精品视频在线播放| 欧美视频一区二| 欧美丰满一区二区免费视频| 91精品国产色综合久久 | 亚洲人成网站色在线观看| 亚洲手机成人高清视频| 亚洲精品视频自拍| 天天射综合影视| 美国毛片一区二区三区| 国产综合色精品一区二区三区| 亚洲男人天堂av网| 一区二区三区久久久| 日韩中文字幕一区二区三区| 麻豆久久一区二区| 99麻豆久久久国产精品免费| 欧美羞羞免费网站| 日韩欧美一区在线| 久久丝袜美腿综合| 亚洲在线观看免费视频| 琪琪久久久久日韩精品| 国产99精品国产| 911国产精品| 中文字幕乱码久久午夜不卡| 亚洲国产精品精华液网站| 激情欧美一区二区| 91黄色免费网站| 欧美国产精品一区二区三区| 日韩精品欧美精品| 成人h动漫精品一区二| 91精品综合久久久久久| 一区精品在线播放| 久久国产剧场电影| 欧美中文字幕亚洲一区二区va在线| 精品噜噜噜噜久久久久久久久试看 | 一区二区免费在线播放| 免费观看日韩电影| 色综合天天综合| 精品国产伦一区二区三区观看方式| 亚洲乱码国产乱码精品精可以看| 三级精品在线观看| 91玉足脚交白嫩脚丫在线播放| 欧美一区二区三区在线看| 国产精品妹子av| 国产精品自拍三区| 91精品国产全国免费观看| 17c精品麻豆一区二区免费| 日本中文在线一区| 99久久久久免费精品国产| 久久久精品蜜桃| 免费看日韩a级影片| 欧美在线观看一区| 成人一区二区三区在线观看| 日韩欧美国产电影| 视频一区二区欧美| 色综合天天天天做夜夜夜夜做| 精品免费视频.| 亚洲成人黄色小说| 国产不卡视频在线观看| 精品久久五月天| 国产一区二三区| 91精品国产色综合久久ai换脸 | 一区二区三区欧美| 国产成人av一区二区三区在线观看| 91精品国产综合久久久久久久 | 日韩一区二区三区视频在线观看| 亚洲.国产.中文慕字在线| 亚洲综合免费观看高清完整版| 国产精品自拍在线| 久久精品日韩一区二区三区| 日本女人一区二区三区| 欧美日韩午夜影院| 一区二区三区四区av| 99re热这里只有精品免费视频| 国产精品久久久久国产精品日日 | 天堂午夜影视日韩欧美一区二区| 黄色日韩网站视频| 久久伊人蜜桃av一区二区| 国产91丝袜在线播放九色| 国产精品久久午夜| 91丨九色porny丨蝌蚪| 国产精品日日摸夜夜摸av| 丰满白嫩尤物一区二区| 久久欧美中文字幕| 国产河南妇女毛片精品久久久| 精品精品欲导航| 蜜臀精品一区二区三区在线观看| 555www色欧美视频| 日本免费新一区视频| 日韩欧美中文一区二区| 蜜桃视频在线一区| 在线成人免费观看| 美女视频一区在线观看| 欧美videos中文字幕| 国产91精品一区二区麻豆亚洲| 亚洲精品伦理在线| 在线观看日韩av先锋影音电影院| 亚洲mv在线观看| 日韩免费高清av| 成人精品在线视频观看| 丝瓜av网站精品一区二区| 欧美高清在线精品一区| 欧美日韩黄视频|