成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > TensorFlow2.0使用keras訓(xùn)練模型的實(shí)現(xiàn)

TensorFlow2.0使用keras訓(xùn)練模型的實(shí)現(xiàn)

熱門標(biāo)簽:鎮(zhèn)江人工外呼系統(tǒng)供應(yīng)商 千呼ai電話機(jī)器人免費(fèi) 高德地圖標(biāo)注字母 深圳網(wǎng)絡(luò)外呼系統(tǒng)代理商 400電話辦理費(fèi)用收費(fèi) 外呼系統(tǒng)前面有錄音播放嗎 柳州正規(guī)電銷機(jī)器人收費(fèi) 申請辦個(gè)400電話號碼 騰訊地圖標(biāo)注有什么版本

1.一般的模型構(gòu)造、訓(xùn)練、測試流程

# 模型構(gòu)造
inputs = keras.Input(shape=(784,), name='mnist_input')
h1 = layers.Dense(64, activation='relu')(inputs)
h1 = layers.Dense(64, activation='relu')(h1)
outputs = layers.Dense(10, activation='softmax')(h1)
model = keras.Model(inputs, outputs)
# keras.utils.plot_model(model, 'net001.png', show_shapes=True)

model.compile(optimizer=keras.optimizers.RMSprop(),
    loss=keras.losses.SparseCategoricalCrossentropy(),
    metrics=[keras.metrics.SparseCategoricalAccuracy()])

# 載入數(shù)據(jù)
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train = x_train.reshape(60000, 784).astype('float32') /255
x_test = x_test.reshape(10000, 784).astype('float32') /255

x_val = x_train[-10000:]
y_val = y_train[-10000:]

x_train = x_train[:-10000]
y_train = y_train[:-10000]

# 訓(xùn)練模型
history = model.fit(x_train, y_train, batch_size=64, epochs=3,
   validation_data=(x_val, y_val))
print('history:')
print(history.history)

result = model.evaluate(x_test, y_test, batch_size=128)
print('evaluate:')
print(result)
pred = model.predict(x_test[:2])
print('predict:')
print(pred)

2.自定義損失和指標(biāo)

自定義指標(biāo)只需繼承Metric類, 并重寫一下函數(shù)

_init_(self),初始化。

update_state(self,y_true,y_pred,sample_weight = None),它使用目標(biāo)y_true和模型預(yù)測y_pred來更新狀態(tài)變量。

result(self),它使用狀態(tài)變量來計(jì)算最終結(jié)果。

reset_states(self),重新初始化度量的狀態(tài)。

# 這是一個(gè)簡單的示例,顯示如何實(shí)現(xiàn)CatgoricalTruePositives指標(biāo),該指標(biāo)計(jì)算正確分類為屬于給定類的樣本數(shù)量

class CatgoricalTruePostives(keras.metrics.Metric):
 def __init__(self, name='binary_true_postives', **kwargs):
  super(CatgoricalTruePostives, self).__init__(name=name, **kwargs)
  self.true_postives = self.add_weight(name='tp', initializer='zeros')
  
 def update_state(self, y_true, y_pred, sample_weight=None):
  y_pred = tf.argmax(y_pred)
  y_true = tf.equal(tf.cast(y_pred, tf.int32), tf.cast(y_true, tf.int32))
  
  y_true = tf.cast(y_true, tf.float32)
  
  if sample_weight is not None:
   sample_weight = tf.cast(sample_weight, tf.float32)
   y_true = tf.multiply(sample_weight, y_true)
   
  return self.true_postives.assign_add(tf.reduce_sum(y_true))
 
 def result(self):
  return tf.identity(self.true_postives)
 
 def reset_states(self):
  self.true_postives.assign(0.)
  

model.compile(optimizer=keras.optimizers.RMSprop(1e-3),
    loss=keras.losses.SparseCategoricalCrossentropy(),
    metrics=[CatgoricalTruePostives()])

model.fit(x_train, y_train,
   batch_size=64, epochs=3)
# 以定義網(wǎng)絡(luò)層的方式添加網(wǎng)絡(luò)loss
class ActivityRegularizationLayer(layers.Layer):
 def call(self, inputs):
  self.add_loss(tf.reduce_sum(inputs) * 0.1)
  return inputs

inputs = keras.Input(shape=(784,), name='mnist_input')
h1 = layers.Dense(64, activation='relu')(inputs)
h1 = ActivityRegularizationLayer()(h1)
h1 = layers.Dense(64, activation='relu')(h1)
outputs = layers.Dense(10, activation='softmax')(h1)
model = keras.Model(inputs, outputs)
# keras.utils.plot_model(model, 'net001.png', show_shapes=True)

model.compile(optimizer=keras.optimizers.RMSprop(),
    loss=keras.losses.SparseCategoricalCrossentropy(),
    metrics=[keras.metrics.SparseCategoricalAccuracy()])
model.fit(x_train, y_train, batch_size=32, epochs=1)
# 也可以以定義網(wǎng)絡(luò)層的方式添加要統(tǒng)計(jì)的metric
class MetricLoggingLayer(layers.Layer):
 def call(self, inputs):
  self.add_metric(keras.backend.std(inputs),
      name='std_of_activation',
      aggregation='mean')
  
  return inputs

inputs = keras.Input(shape=(784,), name='mnist_input')
h1 = layers.Dense(64, activation='relu')(inputs)
h1 = MetricLoggingLayer()(h1)
h1 = layers.Dense(64, activation='relu')(h1)
outputs = layers.Dense(10, activation='softmax')(h1)
model = keras.Model(inputs, outputs)
# keras.utils.plot_model(model, 'net001.png', show_shapes=True)

model.compile(optimizer=keras.optimizers.RMSprop(),
    loss=keras.losses.SparseCategoricalCrossentropy(),
    metrics=[keras.metrics.SparseCategoricalAccuracy()])
model.fit(x_train, y_train, batch_size=32, epochs=1)

# 也可以直接在model上面加
# 也可以以定義網(wǎng)絡(luò)層的方式添加要統(tǒng)計(jì)的metric
class MetricLoggingLayer(layers.Layer):
 def call(self, inputs):
  self.add_metric(keras.backend.std(inputs),
      name='std_of_activation',
      aggregation='mean')
  
  return inputs

inputs = keras.Input(shape=(784,), name='mnist_input')
h1 = layers.Dense(64, activation='relu')(inputs)
h2 = layers.Dense(64, activation='relu')(h1)
outputs = layers.Dense(10, activation='softmax')(h2)
model = keras.Model(inputs, outputs)

model.add_metric(keras.backend.std(inputs),
      name='std_of_activation',
      aggregation='mean')
model.add_loss(tf.reduce_sum(h1)*0.1)

# keras.utils.plot_model(model, 'net001.png', show_shapes=True)

model.compile(optimizer=keras.optimizers.RMSprop(),
    loss=keras.losses.SparseCategoricalCrossentropy(),
    metrics=[keras.metrics.SparseCategoricalAccuracy()])
model.fit(x_train, y_train, batch_size=32, epochs=1)

處理使用validation_data傳入測試數(shù)據(jù),還可以使用validation_split劃分驗(yàn)證數(shù)據(jù)

ps:validation_split只能在用numpy數(shù)據(jù)訓(xùn)練的情況下使用

model.fit(x_train, y_train, batch_size=32, epochs=1, validation_split=0.2)

3.使用tf.data構(gòu)造數(shù)據(jù)

def get_compiled_model():
 inputs = keras.Input(shape=(784,), name='mnist_input')
 h1 = layers.Dense(64, activation='relu')(inputs)
 h2 = layers.Dense(64, activation='relu')(h1)
 outputs = layers.Dense(10, activation='softmax')(h2)
 model = keras.Model(inputs, outputs)
 model.compile(optimizer=keras.optimizers.RMSprop(),
     loss=keras.losses.SparseCategoricalCrossentropy(),
     metrics=[keras.metrics.SparseCategoricalAccuracy()])
 return model
model = get_compiled_model()
train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
train_dataset = train_dataset.shuffle(buffer_size=1024).batch(64)

val_dataset = tf.data.Dataset.from_tensor_slices((x_val, y_val))
val_dataset = val_dataset.batch(64)

# model.fit(train_dataset, epochs=3)
# steps_per_epoch 每個(gè)epoch只訓(xùn)練幾步
# validation_steps 每次驗(yàn)證,驗(yàn)證幾步
model.fit(train_dataset, epochs=3, steps_per_epoch=100,
   validation_data=val_dataset, validation_steps=3)

4.樣本權(quán)重和類權(quán)重

“樣本權(quán)重”數(shù)組是一個(gè)數(shù)字?jǐn)?shù)組,用于指定批處理中每個(gè)樣本在計(jì)算總損失時(shí)應(yīng)具有多少權(quán)重。 它通常用于不平衡的分類問題(這個(gè)想法是為了給予很少見的類更多的權(quán)重)。 當(dāng)使用的權(quán)重是1和0時(shí),該數(shù)組可以用作損失函數(shù)的掩碼(完全丟棄某些樣本對總損失的貢獻(xiàn))。

“類權(quán)重”dict是同一概念的更具體的實(shí)例:它將類索引映射到應(yīng)該用于屬于該類的樣本的樣本權(quán)重。 例如,如果類“0”比數(shù)據(jù)中的類“1”少兩倍,則可以使用class_weight = {0:1.,1:0.5}。

# 增加第5類的權(quán)重
import numpy as np
# 樣本權(quán)重
model = get_compiled_model()
class_weight = {i:1.0 for i in range(10)}
class_weight[5] = 2.0
print(class_weight)
model.fit(x_train, y_train,
   class_weight=class_weight,
   batch_size=64,
   epochs=4)
# 類權(quán)重
model = get_compiled_model()
sample_weight = np.ones(shape=(len(y_train),))
sample_weight[y_train == 5] = 2.0
model.fit(x_train, y_train,
   sample_weight=sample_weight,
   batch_size=64,
   epochs=4)
# tf.data數(shù)據(jù)
model = get_compiled_model()

sample_weight = np.ones(shape=(len(y_train),))
sample_weight[y_train == 5] = 2.0

train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train,
             sample_weight))
train_dataset = train_dataset.shuffle(buffer_size=1024).batch(64)

val_dataset = tf.data.Dataset.from_tensor_slices((x_val, y_val))
val_dataset = val_dataset.batch(64)

model.fit(train_dataset, epochs=3, )

5.多輸入多輸出模型

image_input = keras.Input(shape=(32, 32, 3), name='img_input')
timeseries_input = keras.Input(shape=(None, 10), name='ts_input')

x1 = layers.Conv2D(3, 3)(image_input)
x1 = layers.GlobalMaxPooling2D()(x1)

x2 = layers.Conv1D(3, 3)(timeseries_input)
x2 = layers.GlobalMaxPooling1D()(x2)

x = layers.concatenate([x1, x2])

score_output = layers.Dense(1, name='score_output')(x)
class_output = layers.Dense(5, activation='softmax', name='class_output')(x)

model = keras.Model(inputs=[image_input, timeseries_input],
     outputs=[score_output, class_output])
keras.utils.plot_model(model, 'multi_input_output_model.png'
      , show_shapes=True)

# 可以為模型指定不同的loss和metrics
model.compile(
 optimizer=keras.optimizers.RMSprop(1e-3),
 loss=[keras.losses.MeanSquaredError(),
   keras.losses.CategoricalCrossentropy()])

# 還可以指定loss的權(quán)重
model.compile(
 optimizer=keras.optimizers.RMSprop(1e-3),
 loss={'score_output': keras.losses.MeanSquaredError(),
   'class_output': keras.losses.CategoricalCrossentropy()},
 metrics={'score_output': [keras.metrics.MeanAbsolutePercentageError(),
        keras.metrics.MeanAbsoluteError()],
    'class_output': [keras.metrics.CategoricalAccuracy()]},
 loss_weight={'score_output': 2., 'class_output': 1.})

# 可以把不需要傳播的loss置0
model.compile(
 optimizer=keras.optimizers.RMSprop(1e-3),
 loss=[None, keras.losses.CategoricalCrossentropy()])

# Or dict loss version
model.compile(
 optimizer=keras.optimizers.RMSprop(1e-3),
 loss={'class_output': keras.losses.CategoricalCrossentropy()})

6.使用回 調(diào)

Keras中的回調(diào)是在訓(xùn)練期間(在epoch開始時(shí),batch結(jié)束時(shí),epoch結(jié)束時(shí)等)在不同點(diǎn)調(diào)用的對象,可用于實(shí)現(xiàn)以下行為:

  • 在培訓(xùn)期間的不同時(shí)間點(diǎn)進(jìn)行驗(yàn)證(超出內(nèi)置的每個(gè)時(shí)期驗(yàn)證)
  • 定期檢查模型或超過某個(gè)精度閾值
  • 在訓(xùn)練似乎平穩(wěn)時(shí)改變模型的學(xué)習(xí)率
  • 在訓(xùn)練似乎平穩(wěn)時(shí)對頂層進(jìn)行微調(diào)
  • 在培訓(xùn)結(jié)束或超出某個(gè)性能閾值時(shí)發(fā)送電子郵件或即時(shí)消息通知等等。

可使用的內(nèi)置回調(diào)有

  • ModelCheckpoint:定期保存模型。
  • EarlyStopping:當(dāng)訓(xùn)練不再改進(jìn)驗(yàn)證指標(biāo)時(shí)停止培訓(xùn)。
  • TensorBoard:定期編寫可在TensorBoard中顯示的模型日志(更多細(xì)節(jié)見“可視化”)。
  • CSVLogger:將丟失和指標(biāo)數(shù)據(jù)流式傳輸?shù)紺SV文件。
  • 等等

6.1回調(diào)使用

model = get_compiled_model()

callbacks = [
 keras.callbacks.EarlyStopping(
  # Stop training when `val_loss` is no longer improving
  monitor='val_loss',
  # "no longer improving" being defined as "no better than 1e-2 less"
  min_delta=1e-2,
  # "no longer improving" being further defined as "for at least 2 epochs"
  patience=2,
  verbose=1)
]
model.fit(x_train, y_train,
   epochs=20,
   batch_size=64,
   callbacks=callbacks,
   validation_split=0.2)

# checkpoint模型回調(diào)
model = get_compiled_model()
check_callback = keras.callbacks.ModelCheckpoint(
 filepath='mymodel_{epoch}.h5',
 save_best_only=True,
 monitor='val_loss',
 verbose=1
)

model.fit(x_train, y_train,
   epochs=3,
   batch_size=64,
   callbacks=[check_callback],
   validation_split=0.2)

# 動(dòng)態(tài)調(diào)整學(xué)習(xí)率
initial_learning_rate = 0.1
lr_schedule = keras.optimizers.schedules.ExponentialDecay(
 initial_learning_rate,
 decay_steps=10000,
 decay_rate=0.96,
 staircase=True
)
optimizer = keras.optimizers.RMSprop(learning_rate=lr_schedule)
# 使用tensorboard
tensorboard_cbk = keras.callbacks.TensorBoard(log_dir='./full_path_to_your_logs')
model.fit(x_train, y_train,
   epochs=5,
   batch_size=64,
   callbacks=[tensorboard_cbk],
   validation_split=0.2)

6.2創(chuàng)建自己的回調(diào)方法

class LossHistory(keras.callbacks.Callback):
 def on_train_begin(self, logs):
  self.losses = []
 def on_epoch_end(self, batch, logs):
  self.losses.append(logs.get('loss'))
  print('\nloss:',self.losses[-1])
  
model = get_compiled_model()

callbacks = [
 LossHistory()
]
model.fit(x_train, y_train,
   epochs=3,
   batch_size=64,
   callbacks=callbacks,
   validation_split=0.2)

7.自己構(gòu)造訓(xùn)練和驗(yàn)證循環(huán)

# Get the model.
inputs = keras.Input(shape=(784,), name='digits')
x = layers.Dense(64, activation='relu', name='dense_1')(inputs)
x = layers.Dense(64, activation='relu', name='dense_2')(x)
outputs = layers.Dense(10, activation='softmax', name='predictions')(x)
model = keras.Model(inputs=inputs, outputs=outputs)

# Instantiate an optimizer.
optimizer = keras.optimizers.SGD(learning_rate=1e-3)
# Instantiate a loss function.
loss_fn = keras.losses.SparseCategoricalCrossentropy()

# Prepare the training dataset.
batch_size = 64
train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
train_dataset = train_dataset.shuffle(buffer_size=1024).batch(batch_size)

# 自己構(gòu)造循環(huán)
for epoch in range(3):
 print('epoch: ', epoch)
 for step, (x_batch_train, y_batch_train) in enumerate(train_dataset):
  # 開一個(gè)gradient tape, 計(jì)算梯度
  with tf.GradientTape() as tape:
   logits = model(x_batch_train)
   
   loss_value = loss_fn(y_batch_train, logits)
   grads = tape.gradient(loss_value, model.trainable_variables)
   optimizer.apply_gradients(zip(grads, model.trainable_variables))
   
  if step % 200 == 0:
   print('Training loss (for one batch) at step %s: %s' % (step, float(loss_value)))
   print('Seen so far: %s samples' % ((step + 1) * 64))
# 訓(xùn)練并驗(yàn)證
# Get model
inputs = keras.Input(shape=(784,), name='digits')
x = layers.Dense(64, activation='relu', name='dense_1')(inputs)
x = layers.Dense(64, activation='relu', name='dense_2')(x)
outputs = layers.Dense(10, activation='softmax', name='predictions')(x)
model = keras.Model(inputs=inputs, outputs=outputs)

# Instantiate an optimizer to train the model.
optimizer = keras.optimizers.SGD(learning_rate=1e-3)
# Instantiate a loss function.
loss_fn = keras.losses.SparseCategoricalCrossentropy()

# Prepare the metrics.
train_acc_metric = keras.metrics.SparseCategoricalAccuracy() 
val_acc_metric = keras.metrics.SparseCategoricalAccuracy()

# Prepare the training dataset.
batch_size = 64
train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
train_dataset = train_dataset.shuffle(buffer_size=1024).batch(batch_size)

# Prepare the validation dataset.
val_dataset = tf.data.Dataset.from_tensor_slices((x_val, y_val))
val_dataset = val_dataset.batch(64)


# Iterate over epochs.
for epoch in range(3):
 print('Start of epoch %d' % (epoch,))
 
 # Iterate over the batches of the dataset.
 for step, (x_batch_train, y_batch_train) in enumerate(train_dataset):
 with tf.GradientTape() as tape:
  logits = model(x_batch_train)
  loss_value = loss_fn(y_batch_train, logits)
 grads = tape.gradient(loss_value, model.trainable_variables)
 optimizer.apply_gradients(zip(grads, model.trainable_variables))
  
 # Update training metric.
 train_acc_metric(y_batch_train, logits)

 # Log every 200 batches.
 if step % 200 == 0:
  print('Training loss (for one batch) at step %s: %s' % (step, float(loss_value)))
  print('Seen so far: %s samples' % ((step + 1) * 64))

 # Display metrics at the end of each epoch.
 train_acc = train_acc_metric.result()
 print('Training acc over epoch: %s' % (float(train_acc),))
 # Reset training metrics at the end of each epoch
 train_acc_metric.reset_states()

 # Run a validation loop at the end of each epoch.
 for x_batch_val, y_batch_val in val_dataset:
 val_logits = model(x_batch_val)
 # Update val metrics
 val_acc_metric(y_batch_val, val_logits)
 val_acc = val_acc_metric.result()
 val_acc_metric.reset_states()
 print('Validation acc: %s' % (float(val_acc),))
## 添加自己構(gòu)造的loss, 每次只能看到最新一次訓(xùn)練增加的loss
class ActivityRegularizationLayer(layers.Layer):
 
 def call(self, inputs):
 self.add_loss(1e-2 * tf.reduce_sum(inputs))
 return inputs
 
inputs = keras.Input(shape=(784,), name='digits')
x = layers.Dense(64, activation='relu', name='dense_1')(inputs)
# Insert activity regularization as a layer
x = ActivityRegularizationLayer()(x)
x = layers.Dense(64, activation='relu', name='dense_2')(x)
outputs = layers.Dense(10, activation='softmax', name='predictions')(x)

model = keras.Model(inputs=inputs, outputs=outputs)
logits = model(x_train[:64])
print(model.losses)
logits = model(x_train[:64])
logits = model(x_train[64: 128])
logits = model(x_train[128: 192])
print(model.losses)
# 將loss添加進(jìn)求導(dǎo)中
optimizer = keras.optimizers.SGD(learning_rate=1e-3)

for epoch in range(3):
 print('Start of epoch %d' % (epoch,))

 for step, (x_batch_train, y_batch_train) in enumerate(train_dataset):
 with tf.GradientTape() as tape:
  logits = model(x_batch_train)
  loss_value = loss_fn(y_batch_train, logits)

  # Add extra losses created during this forward pass:
  loss_value += sum(model.losses)
  
 grads = tape.gradient(loss_value, model.trainable_variables)
 optimizer.apply_gradients(zip(grads, model.trainable_variables))

 # Log every 200 batches.
 if step % 200 == 0:
  print('Training loss (for one batch) at step %s: %s' % (step, float(loss_value)))
  print('Seen so far: %s samples' % ((step + 1) * 64))

到此這篇關(guān)于TensorFlow2.0使用keras訓(xùn)練模型的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)TensorFlow2.0 keras訓(xùn)練模型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 入門tensorflow教程之TensorBoard可視化模型訓(xùn)練
  • TensorFlow2.X使用圖片制作簡單的數(shù)據(jù)集訓(xùn)練模型
  • 如何將tensorflow訓(xùn)練好的模型移植到Android (MNIST手寫數(shù)字識別)
  • 一小時(shí)學(xué)會(huì)TensorFlow2之大幅提高模型準(zhǔn)確率

標(biāo)簽:平頂山 烏蘭察布 郴州 海南 烏蘭察布 合肥 大慶 哈爾濱

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《TensorFlow2.0使用keras訓(xùn)練模型的實(shí)現(xiàn)》,本文關(guān)鍵詞  TensorFlow2.0,使用,keras,訓(xùn)練,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《TensorFlow2.0使用keras訓(xùn)練模型的實(shí)現(xiàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于TensorFlow2.0使用keras訓(xùn)練模型的實(shí)現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲视频网站在线| 91社区在线| 在线视频亚洲欧美| 蜜桃91精品入口| 自拍偷拍亚洲天堂| 美女视频黄 久久| 国产高潮呻吟久久久| 热99精品里视频精品| 爱草tv视频在线观看992| 成人av在线资源| 91在线观看下载| 亚洲国产精品va在看黑人| 不卡av免费在线| 亚洲AV无码国产精品| 日韩欧美99| av电影在线观看完整版一区二区| 欧美日韩国产一区二区在线观看| 久久一区91| 日本激情小视频| 亚洲国产一区二区精品专区| 成人黄18免费网站| 精品国产美女福利到在线不卡| 岛国在线免费| 91av在线免费观看| 亚洲欧美日本一区| 亚洲字幕在线观看| 亚洲草草视频| 亚洲精品欧美二区三区中文字幕| 91禁男男在线观看| 日韩av毛片网| 奇米影视777在线欧美电影观看| 精品成人无码久久久久久| 欧美第一在线视频| 嫩草影院永久入口| 久久久亚洲欧洲日产国码aⅴ| 成人精品动漫| 成人国产在线| 涩涩涩在线视频| 精品亚洲porn| 成人欧美精品久久久久影院| 影音先峰男人站| 成年人福利视频| 狠狠干视频网站| 美丽的姑娘在线观看免费动漫| 成人日韩av| 亚洲二区av| 国产精品久久久久一区二区三区厕所| 久久精品青青大伊人av| 丰满少妇被猛烈进入一区二区| 亚洲午夜精品视频| 亚洲无码精品在线观看| 日韩成人一区二区三区| 欧美理论电影在线观看| 亚洲v欧美v另类v综合v日韩v| 91麻豆精品国产综合久久久久久| 麻豆入口视频在线观看| 日本黄网免费一区二区精品| 欧美另类暴力丝袜| 欧洲亚洲两性| 欧美h版电影| caoporn视频在线| 人人干狠狠干| wwwww在线观看| 国产一区二区三区色淫影院| 欧美最猛黑人xxxx黑人猛交黄| 国产成人无码一二三区视频| 国产精品永久免费观看| 丰满湿润大白屁股bbw按摩| 成人av在线播放网站| 99porn视频在线| av二区在线| 欧美哺乳videos| 激情视频免费| 精品毛片三在线观看| 天然素人一区二区视频| 日本久久久久久久| 久久久久狠狠高潮亚洲精品| 国产精品午夜影院| 精品亚洲成a人片在线观看| 美女极度色诱视频www免费观看| 精品人妻一区二区三区香蕉| 国内视频一区| 亚洲天堂网视频| 欧美日韩综合不卡| 你懂的免费在线观看| 欧美综合一区二区三区| 奇米影视四色在线| 亚洲欧洲美洲国产香蕉| 在线成人免费视频| 99re在线国产| 成年人网站免费在线观看| 在线看福利67194| 亚洲欧美日本国产| 宅男午夜电影| 美女视频黄免费的久久| 精品国产av鲁一鲁一区| 99re6在线视频精品免费| 黄视频在线免费| 日韩乱码在线视频| 欧洲一区二区三区免费视频| 一区二区视频免费| www.亚洲色图.com| 欧美高清视频看片在线观看| 一区二区三区四区在线播放| 久久精品免费在线观看| 日本在线观看免费视频| 免费视频最近日韩| 日韩精品日韩在线观看| 国产精品欧美久久久久天天影视| eeuss影院www在线观看免费| 男人操女人动态图| 超碰成人福利网| 91亚洲精品在看在线观看高清| 夜夜精品视频| 2019中文字幕在线电影免费| 日韩黄色片在线| 26uuu成人网一区二区三区| 国产精品精品国产| 国产欧美1区2区3区| 精品无吗乱吗av国产爱色| 欧美一区二区激情| 欧美日韩亚洲一区二区三区四区| 日韩一区欧美小说| 亚洲男女一区二区三区| 国产精品高清在线观看| 成 人 免费 黄 色| 亚洲精品www| 欧美一级黄色网| 亚洲伊人伊色伊影伊综合网| 国产成人欧美日韩在线电影| 日本一级理论片在线大全| 国产亚洲一区二区精品| 狠狠v欧美ⅴ日韩v亚洲v大胸| 免费无码国产v片在线观看| 麻豆一区二区三区精品视频| 久久草视频在线| а√中文在线资源库| 91免费网站视频| 国产成人亚洲综合| 伊人久久久久久久久久久久久| 久久久人人爽| 91久久综合亚洲鲁鲁五月天| 欧洲一区av| 欧美国产日韩在线观看成人| 午夜久久影院| 国产欧美一区二区视频| 亚洲熟妇无码一区二区三区| 欧美性猛交xxxxbbbb| 久久综合九色综合欧美亚洲| 国产精品传媒精东影业在线| 国产熟妇久久777777| 亚洲free性xxxx护士hd| 欧产日产国产精品视频| 成人网在线免费视频| 一色桃子一区二区| 欧美韩国日本一区| 欧美性猛交xxxx乱大交少妇| 中文字幕97| 欧美调教视频| 日本欧美黄色| 黄色一级片在线免费观看| 国产在线拍揄自揄拍无码| 国产综合在线视频| 一个人看的免费网站www视频| 成人午夜视频在线观看| 精品国产一区二区三区四区四| bdsm精品捆绑chinese| x99av成人免费| 一级成人国产| 日韩—二三区免费观看av| 亚洲欧洲日韩精品| 日韩一区免费观看| 神马久久久久| 午夜精品美女久久久久av福利| 91麻豆国产语对白在线观看| 91九色单男在线观看| jizzjizz免费大全| 久久久久亚洲av无码a片| 亚洲欧美日韩综合| 少妇免费毛片久久久久久久久| 日韩av在线网址| 蜜桃传媒视频麻豆一区| 国产免费一区二区三区最新6| 国产精品久久国产愉拍| 色影院视频在线| 免费激情网址| 欧美精品自拍| 老司机福利在线视频| 日韩一区不卡| 26uuu国产日韩综合| 成人久久久久爱| 亚洲自偷自拍熟女另类| 久久久久久久高清| 精品日本一区二区三区| 欧美一级片免费观看| 欧美图片一区二区三区| 久一视频在线观看| 久久女人天堂| fc2ppv在线观看| 国产成人精品999在线观看| 国产在线视频二区| 日本亚洲色大成网站www久久| 天堂社区在线视频| 国产日韩在线免费| 欧美日韩va| 亚洲韩国一区二区三区| 欧美在线激情视频| 久久久久久久久福利| 成人国产电影在线观看| 精品国偷自产在线视频99| 亚洲国产美女视频| 亚洲AV无码成人片在线观看| 99精品国产一区二区青青牛奶| 人妻熟妇乱又伦精品视频| 91欧美精品| www.97| 色婷婷综合在线观看| 欧美一区二区三区四区久久| 免费黄色在线网站| 国产免费一区二区三区视频| 亚洲影院色无极综合| 亚洲天堂电影在线观看| 亚洲精品一二三四| 久久国产精品免费观看| а_天堂中文在线| 少妇太紧太爽又黄又硬又爽小说| 亚洲视频一区在线播放| 九九热线视频只有这里最精品| 久久伊人蜜桃av一区二区| 国产精品久在线观看| 国语对白一区二区| 亚洲欧洲日韩在线| 日韩欧美专区在线| 91小视频xxxx网站在线| 欧美三级韩国三级日本三斤在线观看| 日韩一区二区不卡| 国产精品99免视看9| 国产91丝袜在线观看| www国产在线观看| 久久久久久影视| 69174成人网| 国产中文字幕在线免费观看| 日韩在线中文视频| 人人香蕉久久| 欧美日韩亚洲一二三| 毛片手机在线观看| 天堂在线视频免费| 男女一区二区三区免费| 91精品人妻一区二区三区蜜桃欧美| 午夜视黄欧洲亚洲| 久草在线官网| 国模精品娜娜一二三区| 69日小视频在线观看| 久久99久国产精品黄毛片入口| a天堂在线观看| 日韩在线免费看| 人人做人人草| 欧美午夜性色大片在线观看| 亚洲一二三四区不卡| 手机在线免费看片| 一本一道久久a久久综合精品| 九九视频九九热| 久久久综合激的五月天| 日日摸天天添天天添破| 欧美电影免费观看完整版| 一区二区成人精品| 久久久国产精品人人片| 亚洲国产欧美一区二区三区不卡| 日韩一级片免费看| 国产黄色录像片| 韩国成人精品a∨在线观看| 91黄视频在线| 中文在线免费一区三区| 国产一二三四区在线| 美女扒开内裤让男人桶| 在线观看视频亚洲| 国内成+人亚洲+欧美+综合在线| 国产三区精品| 亚洲视频 欧美视频| 亚洲不卡一卡2卡三卡4卡5卡精品| 国产麻豆成人传媒免费观看| 精品精品国产高清a毛片牛牛| 白白色亚洲国产精品| 成年人在线播放| 国产成人精品免费看在线播放| 色狠狠av一区二区三区| 婷婷在线精品视频| 欧美日韩精品系列| 久久国产色av| 欧美大片1688网站| 久久精品一区二区三区不卡| 成人黄色激情网| 国产精品视频第一区二区三区| 99国产精品免费视频观看| 亚洲香蕉在线视频| 亚洲精品欧美专区| 亚洲色图15p| a在线观看网站| www.在线视频| 亚洲校园激情春色| 手机成人av在线| 久久久久久com| 热99精品只有里视频精品| 亚洲日本在线视频观看| 国产精品无码一本二本三本色| 国产精品福利小视频| 欧美妇女性影城| 久久综合色婷婷| 久久草视频在线| 亚洲激情视频网站| 污视频在线观看免费| 17c丨国产丨精品视频| 精品久久蜜桃| 国产精品夜夜夜爽张柏芝| 国产一区二区三区久久久久久久久| 在线视频日本亚洲性| 高清精品久久| 国产精品一区久久久久| 欧美日韩精品免费观看视欧美高清免费大片| 羞羞电影在线观看www| 中文字幕一区二区三区手机版| 久久精品99国产精品酒店日本| 性感美女久久精品| 欧美激情在线视频二区| 欧美一区二区三区男人的天堂| 韩国三级在线播放| 色戒在线免费观看| 日本一级理论片在线大全|