TensorFlow2。0教程-迴歸

最全Tensorflow 2.0 入門教程持續更新:

完整tensorflow2。0教程程式碼請看https://github。com/czy36mengfei/tensorflow2_tutorials_chinese (歡迎star)

本教程主要由tensorflow2.0官方教程的個人學習復現筆記整理而來,中文講解,方便喜歡閱讀中文教程的朋友,官方教程:

https://www。tensorflow。org

在迴歸問題中,我們的目標是預測連續值的輸出,如價格或機率。 我們採用了經典的Auto MPG資料集,並建立了一個模型來預測20世紀70年代末和80年代初汽車的燃油效率。 為此,我們將為該模型提供該時段內許多汽車的描述。 此描述包括以下屬性:氣缸,排量,馬力和重量。

1。Auto MPG資料集

獲取資料

dataset_path

=

keras

utils

get_file

‘auto-mpg。data’

‘https://archive。ics。uci。edu/ml/machine-learning-databases/auto-mpg/auto-mpg。data’

print

dataset_path

Downloading

data

from

https

//

archive

ics

uci

edu

/

ml

/

machine

-

learning

-

databases

/

auto

-

mpg

/

auto

-

mpg

data

32768

/

30286

================================

-

1

s

25

us

/

step

/

home

/

czy

/。

keras

/

datasets

/

auto

-

mpg

data

使用pandas讀取資料

column_names

=

‘MPG’

‘Cylinders’

‘Displacement’

‘Horsepower’

‘Weight’

‘Acceleration’

‘Model Year’

‘Origin’

raw_dataset

=

pd

read_csv

dataset_path

names

=

column_names

na_values

=

‘?’

comment

=

\t

sep

=

‘ ’

skipinitialspace

=

True

dataset

=

raw_dataset

copy

()

dataset

tail

()

TensorFlow2.0教程-迴歸

2。資料預處理

清洗資料

print

dataset

isna

()

sum

())

dataset

=

dataset

dropna

()

origin

=

dataset

pop

‘Origin’

dataset

‘USA’

=

origin

==

1

*

1。0

dataset

‘Europe’

=

origin

==

2

*

1。0

dataset

‘Japan’

=

origin

==

3

*

1。0

dataset

tail

()

MPG

0

Cylinders

0

Displacement

0

Horsepower

6

Weight

0

Acceleration

0

Model

Year

0

Origin

0

dtype

int64

TensorFlow2.0教程-迴歸

劃分訓練集和測試集

train_dataset

=

dataset

sample

frac

=

0。8

random_state

=

0

test_dataset

=

dataset

drop

train_dataset

index

檢測資料

觀察訓練集中幾對列的聯合分佈。

sns

pairplot

train_dataset

[[

“MPG”

“Cylinders”

“Displacement”

“Weight”

]],

diag_kind

=

“kde”

<

seaborn

axisgrid

PairGrid

at

0x7f934072fe10

>

TensorFlow2.0教程-迴歸

整體統計資料:

train_stats

=

train_dataset

describe

()

train_stats

pop

“MPG”

train_stats

=

train_stats

transpose

()

train_stats

TensorFlow2.0教程-迴歸

取出標籤

train_labels

=

train_dataset

pop

‘MPG’

test_labels

=

test_dataset

pop

‘MPG’

標準化資料

最好使用不同比例和範圍的特徵進行標準化。 雖然模型可能在沒有特徵歸一化的情況下收斂,但它使訓練更加困難,並且它使得結果模型依賴於輸入中使用的單位的選擇。

def

norm

x

):

return

x

-

train_stats

‘mean’

])

/

train_stats

‘std’

normed_train_data

=

norm

train_dataset

normed_test_data

=

norm

test_dataset

3。構建模型

def

build_model

():

model

=

keras

Sequential

([

layers

Dense

64

activation

=

‘relu’

input_shape

=

len

train_dataset

keys

())]),

layers

Dense

64

activation

=

‘relu’

),

layers

Dense

1

])

optimizer

=

tf

keras

optimizers

RMSprop

0。001

model

compile

loss

=

‘mse’

optimizer

=

optimizer

metrics

=

‘mae’

‘mse’

])

return

model

model

=

build_model

()

model

summary

()

Model

“sequential”

_________________________________________________________________

Layer

type

Output

Shape

Param

#

=================================================================

dense

Dense

None

64

640

_________________________________________________________________

dense_1

Dense

None

64

4160

_________________________________________________________________

dense_2

Dense

None

1

65

=================================================================

Total

params

4

865

Trainable

params

4

865

Non

-

trainable

params

0

_________________________________________________________________

example_batch

=

normed_train_data

[:

10

example_result

=

model

predict

example_batch

example_result

array

([[

0。18062565

],

0。1714489

],

0。22555563

],

0。29366603

],

0。69764495

],

0。08851457

],

0。6851174

],

0。32245407

],

0。02959149

],

0。38945067

]],

dtype

=

float32

4。訓練模型

class

PrintDot

keras

callbacks

Callback

):

def

on_epoch_end

self

epoch

logs

):

if

epoch

%

100

==

0

print

‘’

print

‘。’

end

=

‘’

EPOCHS

=

1000

history

=

model

fit

normed_train_data

train_labels

epochs

=

EPOCHS

validation_split

=

0。2

verbose

=

0

callbacks

=

PrintDot

()])

……………………………………………………………………………………。。。。

……………………………………………………………………………………。。。。

……………………………………………………………………………………。。。。

……………………………………………………………………………………。。。。

……………………………………………………………………………………。。。。

……………………………………………………………………………………。。。。

……………………………………………………………………………………。。。。

……………………………………………………………………………………。。。。

……………………………………………………………………………………。。。。

……………………………………………………………………………………。。。。

檢視訓練記錄

hist

=

pd

DataFrame

history

history

hist

‘epoch’

=

history

epoch

hist

tail

()

loss mae mse val_loss val_mae val_mse epoch 995 2。191127 0。940755 2。191127 10。422818 2。594117 10。422818 995 996 2。113679 0。903680 2。113679 10。723925 2。631320 10。723926 996 997 2。517261 0。989557 2。517261 9。497868 2。379198 9。497869 997 998 2。250272 0。931618 2。250272 11。017041 2。658538 11。017041 998 999 1。976393 0。853547 1。976393 9。890977 2。491739 9。890977 999

def

plot_history

history

):

hist

=

pd

DataFrame

history

history

hist

‘epoch’

=

history

epoch

plt

figure

()

plt

xlabel

‘Epoch’

plt

ylabel

‘Mean Abs Error [MPG]’

plt

plot

hist

‘epoch’

],

hist

‘mae’

],

label

=

‘Train Error’

plt

plot

hist

‘epoch’

],

hist

‘val_mae’

],

label

=

‘Val Error’

plt

ylim

([

0

5

])

plt

legend

()

plt

figure

()

plt

xlabel

‘Epoch’

plt

ylabel

‘Mean Square Error [$MPG^2$]’

plt

plot

hist

‘epoch’

],

hist

‘mse’

],

label

=

‘Train Error’

plt

plot

hist

‘epoch’

],

hist

‘val_mse’

],

label

=

‘Val Error’

plt

ylim

([

0

20

])

plt

legend

()

plt

show

()

plot_history

history

TensorFlow2.0教程-迴歸

TensorFlow2.0教程-迴歸

使用early stop

model

=

build_model

()

early_stop

=

keras

callbacks

EarlyStopping

monitor

=

‘val_loss’

patience

=

10

history

=

model

fit

normed_train_data

train_labels

epochs

=

EPOCHS

validation_split

=

0。2

verbose

=

0

callbacks

=

early_stop

PrintDot

()])

plot_history

history

………………………………………………。。。。

TensorFlow2.0教程-迴歸

TensorFlow2.0教程-迴歸

測試

loss

mae

mse

=

model

evaluate

normed_test_data

test_labels

verbose

=

0

print

“Testing set Mean Abs Error: {:5。2f} MPG”

format

mae

))

Testing

set

Mean

Abs

Error

1。85

MPG

5。預測

test_predictions

=

model

predict

normed_test_data

flatten

()

plt

scatter

test_labels

test_predictions

plt

xlabel

‘True Values [MPG]’

plt

ylabel

‘Predictions [MPG]’

plt

axis

‘equal’

plt

axis

‘square’

plt

xlim

([

0

plt

xlim

()[

1

]])

plt

ylim

([

0

plt

ylim

()[

1

]])

_

=

plt

plot

([

-

100

100

],

-

100

100

])

TensorFlow2.0教程-迴歸

error

=

test_predictions

-

test_labels

plt

hist

error

bins

=

25

plt

xlabel

“Prediction Error [MPG]”

_

=

plt

ylabel

“Count”

TensorFlow2.0教程-迴歸

tensorflow 2。0 入門教程

TensorFlow 2。0 教程- Keras 快速入門

TensorFlow 2。0 教程-keras 函式api

TensorFlow 2。0 教程-使用keras訓練模型

TensorFlow 2。0 教程-用keras構建自己的網路層