[Tensorflow2.0] High-level api-the class interface of the model mainly provided for tf.keras.models

The following example uses TensorFlow's high-level API to implement a linear regression model.

The high-level API of TensorFlow is mainly the class interface of the models provided by tf.keras.models.

There are three ways to build models using the Keras interface: use Sequential to build models in order of layers, use functional APIs to build arbitrary structural models, and inherit Model base classes to build custom models.

Here we demonstrate the use of Sequential to build models in layer order and inherit the Model base class to build custom models.

First, use Sequential to build models in order of layers [for novices]

import tensorflow as tf
from tensorflow.keras import models,layers,optimizers
 
#Number of samples
n = 800
 
# Generate test data set 
X-tf.random.uniform = ([n-, 2], MINVAL = -10, MAXVAL = 10 )
w0 = tf.constant([[2.0],[-1.0]])
b0 = tf.constant(3.0)
 
Y = X @ w0 + b0 + tf.random.normal ([n, 1], mean = 0.0, stddev = 2.0)   # @ indicates matrix multiplication, adding normal disturbance 
tf.keras.backend.clear_session ()
 
linear = models.Sequential()
linear.add(layers.Dense(1,input_shape =(2,)))
linear.summary()


# ## Use the fit method for training 
 
linear.compile (optimizer = " adam " , loss = " mse " , metrics = [ " mae " ])
linear.fit(X,Y,batch_size = 20,epochs = 200)  
 
tf.print("w = ",linear.layers[0].kernel)
tf.print("b = ",linear.layers[0].bias)

result:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 1)                 3         
=================================================================
Total params: 3
Trainable params: 3
Non-trainable params: 0
_________________________________________________________________
Epoch 1/200
40/40 [==============================] - 0s 908us/step - loss: 195.5055 - mae: 11.7040
Epoch 2/200
40/40 [==============================] - 0s 870us/step - loss: 188.2559 - mae: 11.4891
Epoch 3/200
40/40 [==============================] - 0s 820us/step - loss: 181.3084 - mae: 11.2766
Epoch 4/200
40/40 [==============================] - 0s 859us/step - loss: 174.4538 - mae: 11.0680
Epoch 5/200
40/40 [==============================] - 0s 886us/step - loss: 167.8749 - mae: 10.8582
Epoch 6/200
40/40 [==============================] - 0s 912us/step - loss: 161.5035 - mae: 10.6533
Epoch 7/200
40/40 [==============================] - 0s 916us/step - loss: 155.3012 - mae: 10.4504
Epoch 8/200
40/40 [==============================] - 0s 839us/step - loss: 149.3520 - mae: 10.2490
Epoch 9/200
40/40 [==============================] - 0s 977us/step - loss: 143.5773 - mae: 10.0487
Epoch 10/200
40/40 [==============================] - 0s 951us/step - loss: 137.9654 - mae: 9.8543
Epoch 11/200
40/40 [==============================] - 0s 964us/step - loss: 132.5708 - mae: 9.6616
Epoch 12/200
40/40 [==============================] - 0s 876us/step - loss: 127.3686 - mae: 9.4716
Epoch 13/200
40/40 [==============================] - 0s 885us/step - loss: 122.3309 - mae: 9.2796
Epoch 14/200
40/40 [==============================] - 0s 901us/step - loss: 117.4739 - mae: 9.0935
Epoch 15/200
40/40 [==============================] - 0s 919us/step - loss: 112.7674 - mae: 8.9095
Epoch 16/200
40/40 [==============================] - 0s 1ms/step - loss: 108.2400 - mae: 8.7304
Epoch 17/200
40/40 [==============================] - 0s 1ms/step - loss: 103.8868 - mae: 8.5522
Epoch 18/200
40/40 [==============================] - 0s 955us/step - loss: 99.6424 - mae: 8.3771
Epoch 19/200
40/40 [==============================] - 0s 951us/step - loss: 95.6005 - mae: 8.2044
Epoch 20/200
40/40 [==============================] - 0s 939us/step - loss: 91.7217 - mae: 8.0324
Epoch 21/200
40/40 [==============================] - 0s 1ms/step - loss: 87.9180 - mae: 7.8633
Epoch 22/200
40/40 [==============================] - 0s 1ms/step - loss: 84.2936 - mae: 7.6975
Epoch 23/200
40/40 [==============================] - 0s 1ms/step - loss: 80.7858 - mae: 7.5372
Epoch 24/200
40/40 [==============================] - 0s 891us/step - loss: 77.4177 - mae: 7.3785
Epoch 25/200
40/40 [==============================] - 0s 902us/step - loss: 74.1665 - mae: 7.2210
Epoch 26/200
40/40 [==============================] - 0s 876us/step - loss: 71.0455 - mae: 7.0657
Epoch 27/200
40/40 [==============================] - 0s 892us/step - loss: 68.0396 - mae: 6.9119
Epoch 28/200
40/40 [==============================] - 0s 898us/step - loss: 65.1385 - mae: 6.7610
Epoch 29/200
40/40 [==============================] - 0s 944us/step - loss: 62.3531 - mae: 6.6115
Epoch 30/200
40/40 [==============================] - 0s 1ms/step - loss: 59.6815 - mae: 6.4647
Epoch 31/200
40/40 [==============================] - 0s 1ms/step - loss: 57.0783 - mae: 6.3193
Epoch 32/200
40/40 [==============================] - 0s 978us/step - loss: 54.6050 - mae: 6.1775
Epoch 33/200
40/40 [==============================] - 0s 940us/step - loss: 52.2259 - mae: 6.0359
Epoch 34/200
40/40 [==============================] - 0s 966us/step - loss: 49.9196 - mae: 5.8980
Epoch 35/200
40/40 [==============================] - 0s 964us/step - loss: 47.7187 - mae: 5.7628
Epoch 36/200
40/40 [==============================] - 0s 1ms/step - loss: 45.6023 - mae: 5.6286
Epoch 37/200
40/40 [==============================] - 0s 953us/step - loss: 43.5680 - mae: 5.4965
Epoch 38/200
40/40 [==============================] - 0s 978us/step - loss: 41.6182 - mae: 5.3673
Epoch 39/200
40/40 [==============================] - 0s 1ms/step - loss: 39.7323 - mae: 5.2402
Epoch 40/200
40/40 [==============================] - 0s 976us/step - loss: 37.9372 - mae: 5.1159
Epoch 41/200
40/40 [==============================] - 0s 989us/step - loss: 36.2184 - mae: 4.9935
Epoch 42/200
40/40 [==============================] - 0s 964us/step - loss: 34.5556 - mae: 4.8724
Epoch 43/200
40/40 [==============================] - 0s 978us/step - loss: 32.9704 - mae: 4.7550
Epoch 44/200
40/40 [==============================] - 0s 954us/step - loss: 31.4466 - mae: 4.6392
Epoch 45/200
40/40 [==============================] - 0s 1ms/step - loss: 29.9887 - mae: 4.5273
Epoch 46/200
40/40 [==============================] - 0s 1ms/step - loss: 28.5938 - mae: 4.4169
Epoch 47/200
40/40 [==============================] - 0s 944us/step - loss: 27.2567 - mae: 4.3116
Epoch 48/200
40/40 [==============================] - 0s 874us/step - loss: 25.9801 - mae: 4.2037
Epoch 49/200
40/40 [==============================] - 0s 875us/step - loss: 24.7709 - mae: 4.1004
Epoch 50/200
40/40 [==============================] - 0s 843us/step - loss: 23.5911 - mae: 3.9987
Epoch 51/200
40/40 [==============================] - 0s 880us/step - loss: 22.4801 - mae: 3.8986
Epoch 52/200
40/40 [==============================] - 0s 862us/step - loss: 21.4129 - mae: 3.8020
Epoch 53/200
40/40 [==============================] - 0s 930us/step - loss: 20.4039 - mae: 3.7072
Epoch 54/200
40/40 [==============================] - 0s 921us/step - loss: 19.4387 - mae: 3.6129
Epoch 55/200
40/40 [==============================] - 0s 929us/step - loss: 18.5113 - mae: 3.5211
Epoch 56/200
40/40 [==============================] - 0s 958us/step - loss: 17.6301 - mae: 3.4325
Epoch 57/200
40/40 [==============================] - 0s 857us/step - loss: 16.7977 - mae: 3.3455
Epoch 58/200
40/40 [==============================] - 0s 924us/step - loss: 16.0002 - mae: 3.2620
Epoch 59/200
40/40 [==============================] - 0s 906us/step - loss: 15.2526 - mae: 3.1796
Epoch 60/200
40/40 [==============================] - 0s 989us/step - loss: 14.5282 - mae: 3.1000
Epoch 61/200
40/40 [==============================] - 0s 1ms/step - loss: 13.8489 - mae: 3.0228
Epoch 62/200
40/40 [==============================] - 0s 957us/step - loss: 13.2086 - mae: 2.9496
Epoch 63/200
40/40 [==============================] - 0s 1ms/step - loss: 12.5944 - mae: 2.8770
Epoch 64/200
40/40 [==============================] - 0s 1ms/step - loss: 12.0144 - mae: 2.8087
Epoch 65/200
40/40 [==============================] - 0s 939us/step - loss: 11.4699 - mae: 2.7409
Epoch 66/200
40/40 [==============================] - 0s 950us/step - loss: 10.9486 - mae: 2.6764
Epoch 67/200
40/40 [==============================] - 0s 922us/step - loss: 10.4627 - mae: 2.6140
Epoch 68/200
40/40 [==============================] - 0s 937us/step - loss: 10.0007 - mae: 2.5530
Epoch 69/200
40/40 [==============================] - 0s 1ms/step - loss: 9.5686 - mae: 2.4958
Epoch 70/200
40/40 [==============================] - 0s 926us/step - loss: 9.1566 - mae: 2.4412
Epoch 71/200
40/40 [==============================] - 0s 990us/step - loss: 8.7749 - mae: 2.3897
Epoch 72/200
40/40 [==============================] - 0s 1ms/step - loss: 8.4119 - mae: 2.3410
Epoch 73/200
40/40 [==============================] - 0s 1ms/step - loss: 8.0721 - mae: 2.2930
Epoch 74/200
40/40 [==============================] - 0s 996us/step - loss: 7.7548 - mae: 2.2490
Epoch 75/200
40/40 [==============================] - 0s 1ms/step - loss: 7.4565 - mae: 2.2054
Epoch 76/200
40/40 [==============================] - 0s 1ms/step - loss: 7.1764 - mae: 2.1642
Epoch 77/200
40/40 [==============================] - 0s 987us/step - loss: 6.9172 - mae: 2.1252
Epoch 78/200
40/40 [==============================] - 0s 1ms/step - loss: 6.6718 - mae: 2.0881
Epoch 79/200
40/40 [==============================] - 0s 1ms/step - loss: 6.4435 - mae: 2.0517
Epoch 80/200
40/40 [==============================] - 0s 1ms/step - loss: 6.2325 - mae: 2.0181
Epoch 81/200
40/40 [==============================] - 0s 946us/step - loss: 6.0333 - mae: 1.9845
Epoch 82/200
40/40 [==============================] - 0s 934us/step - loss: 5.8515 - mae: 1.9533
Epoch 83/200
40/40 [==============================] - 0s 922us/step - loss: 5.6774 - mae: 1.9230
Epoch 84/200
40/40 [==============================] - 0s 941us/step - loss: 5.5195 - mae: 1.8950
Epoch 85/200
40/40 [==============================] - 0s 1ms/step - loss: 5.3701 - mae: 1.8676
Epoch 86/200
40/40 [==============================] - 0s 1ms/step - loss: 5.2337 - mae: 1.8420
Epoch 87/200
40/40 [==============================] - 0s 1ms/step - loss: 5.1067 - mae: 1.8188
Epoch 88/200
40/40 [==============================] - 0s 894us/step - loss: 4.9888 - mae: 1.7968
Epoch 89/200
40/40 [==============================] - 0s 909us/step - loss: 4.8797 - mae: 1.7761
Epoch 90/200
40/40 [==============================] - 0s 876us/step - loss: 4.7784 - mae: 1.7572
Epoch 91/200
40/40 [==============================] - 0s 872us/step - loss: 4.6857 - mae: 1.7381
Epoch 92/200
40/40 [==============================] - 0s 866us/step - loss: 4.5981 - mae: 1.7221
Epoch 93/200
40/40 [==============================] - 0s 928us/step - loss: 4.5178 - mae: 1.7055
Epoch 94/200
40/40 [==============================] - 0s 868us/step - loss: 4.4441 - mae: 1.6920
Epoch 95/200
40/40 [==============================] - 0s 931us/step - loss: 4.3759 - mae: 1.6776
Epoch 96/200
40/40 [==============================] - 0s 963us/step - loss: 4.3143 - mae: 1.6650
Epoch 97/200
40/40 [==============================] - 0s 971us/step - loss: 4.2540 - mae: 1.6532
Epoch 98/200
40/40 [==============================] - 0s 914us/step - loss: 4.2015 - mae: 1.6427
Epoch 99/200
40/40 [==============================] - 0s 874us/step - loss: 4.1508 - mae: 1.6330
Epoch 100/200
40/40 [==============================] - 0s 897us/step - loss: 4.1059 - mae: 1.6243
Epoch 101/200
40/40 [==============================] - 0s 884us/step - loss: 4.0636 - mae: 1.6162
Epoch 102/200
40/40 [==============================] - 0s 971us/step - loss: 4.0239 - mae: 1.6081
Epoch 103/200
40/40 [==============================] - 0s 918us/step - loss: 3.9885 - mae: 1.6012
Epoch 104/200
40/40 [==============================] - 0s 990us/step - loss: 3.9542 - mae: 1.5946
Epoch 105/200
40/40 [==============================] - 0s 919us/step - loss: 3.9245 - mae: 1.5892
Epoch 106/200
40/40 [==============================] - 0s 872us/step - loss: 3.8949 - mae: 1.5834
Epoch 107/200
40/40 [==============================] - 0s 879us/step - loss: 3.8686 - mae: 1.5779
Epoch 108/200
40/40 [==============================] - 0s 872us/step - loss: 3.8441 - mae: 1.5735
Epoch 109/200
40/40 [==============================] - 0s 1ms/step - loss: 3.8221 - mae: 1.5693
Epoch 110/200
40/40 [==============================] - 0s 941us/step - loss: 3.7991 - mae: 1.5651
Epoch 111/200
40/40 [==============================] - 0s 958us/step - loss: 3.7793 - mae: 1.5617
Epoch 112/200
40/40 [==============================] - 0s 888us/step - loss: 3.7607 - mae: 1.5583
Epoch 113/200
40/40 [==============================] - 0s 834us/step - loss: 3.7446 - mae: 1.5555
Epoch 114/200
40/40 [==============================] - 0s 872us/step - loss: 3.7285 - mae: 1.5529
Epoch 115/200
40/40 [==============================] - 0s 878us/step - loss: 3.7146 - mae: 1.5499
Epoch 116/200
40/40 [==============================] - 0s 944us/step - loss: 3.7016 - mae: 1.5476
Epoch 117/200
40/40 [==============================] - 0s 949us/step - loss: 3.6883 - mae: 1.5449
Epoch 118/200
40/40 [==============================] - 0s 939us/step - loss: 3.6753 - mae: 1.5428
Epoch 119/200
40/40 [==============================] - 0s 859us/step - loss: 3.6651 - mae: 1.5408
Epoch 120/200
40/40 [==============================] - 0s 876us/step - loss: 3.6544 - mae: 1.5387
Epoch 121/200
40/40 [==============================] - 0s 860us/step - loss: 3.6459 - mae: 1.5371
Epoch 122/200
40/40 [==============================] - 0s 938us/step - loss: 3.6357 - mae: 1.5357
Epoch 123/200
40/40 [==============================] - 0s 918us/step - loss: 3.6284 - mae: 1.5345
Epoch 124/200
40/40 [==============================] - 0s 890us/step - loss: 3.6212 - mae: 1.5334
Epoch 125/200
40/40 [==============================] - 0s 853us/step - loss: 3.6131 - mae: 1.5318
Epoch 126/200
40/40 [==============================] - 0s 856us/step - loss: 3.6067 - mae: 1.5307
Epoch 127/200
40/40 [==============================] - 0s 1ms/step - loss: 3.6014 - mae: 1.5297
Epoch 128/200
40/40 [==============================] - 0s 990us/step - loss: 3.5953 - mae: 1.5289
Epoch 129/200
40/40 [==============================] - 0s 955us/step - loss: 3.5898 - mae: 1.5278
Epoch 130/200
40/40 [==============================] - 0s 929us/step - loss: 3.5857 - mae: 1.5270
Epoch 131/200
40/40 [==============================] - 0s 878us/step - loss: 3.5823 - mae: 1.5267
Epoch 132/200
40/40 [==============================] - 0s 925us/step - loss: 3.5767 - mae: 1.5255
Epoch 133/200
40/40 [==============================] - 0s 1ms/step - loss: 3.5735 - mae: 1.5246
Epoch 134/200
40/40 [==============================] - 0s 950us/step - loss: 3.5699 - mae: 1.5239
Epoch 135/200
40/40 [==============================] - 0s 855us/step - loss: 3.5664 - mae: 1.5233
Epoch 136/200
40/40 [==============================] - 0s 869us/step - loss: 3.5637 - mae: 1.5228
Epoch 137/200
40/40 [==============================] - 0s 920us/step - loss: 3.5611 - mae: 1.5224
Epoch 138/200
40/40 [==============================] - 0s 946us/step - loss: 3.5586 - mae: 1.5218
Epoch 139/200
40/40 [==============================] - 0s 864us/step - loss: 3.5570 - mae: 1.5216
Epoch 140/200
40/40 [==============================] - 0s 1ms/step - loss: 3.5544 - mae: 1.5208
Epoch 141/200
40/40 [==============================] - 0s 990us/step - loss: 3.5522 - mae: 1.5206
Epoch 142/200
40/40 [==============================] - 0s 914us/step - loss: 3.5508 - mae: 1.5200
Epoch 143/200
40/40 [==============================] - 0s 865us/step - loss: 3.5494 - mae: 1.5197
Epoch 144/200
40/40 [==============================] - 0s 867us/step - loss: 3.5487 - mae: 1.5194
Epoch 145/200
40/40 [==============================] - 0s 848us/step - loss: 3.5473 - mae: 1.5194
Epoch 146/200
40/40 [==============================] - 0s 920us/step - loss: 3.5453 - mae: 1.5188
Epoch 147/200
40/40 [==============================] - 0s 954us/step - loss: 3.5445 - mae: 1.5186
Epoch 148/200
40/40 [==============================] - 0s 958us/step - loss: 3.5443 - mae: 1.5188
Epoch 149/200
40/40 [==============================] - 0s 929us/step - loss: 3.5430 - mae: 1.5181
Epoch 150/200
40/40 [==============================] - 0s 919us/step - loss: 3.5430 - mae: 1.5186
Epoch 151/200
40/40 [==============================] - 0s 875us/step - loss: 3.5409 - mae: 1.5176
Epoch 152/200
40/40 [==============================] - 0s 931us/step - loss: 3.5425 - mae: 1.5177
Epoch 153/200
40/40 [==============================] - 0s 957us/step - loss: 3.5403 - mae: 1.5175
Epoch 154/200
40/40 [==============================] - 0s 967us/step - loss: 3.5403 - mae: 1.5172
Epoch 155/200
40/40 [==============================] - 0s 873us/step - loss: 3.5425 - mae: 1.5177
Epoch 156/200
40/40 [==============================] - 0s 905us/step - loss: 3.5402 - mae: 1.5173
Epoch 157/200
40/40 [==============================] - 0s 1ms/step - loss: 3.5395 - mae: 1.5172
Epoch 158/200
40/40 [==============================] - 0s 876us/step - loss: 3.5385 - mae: 1.5169
Epoch 159/200
40/40 [==============================] - 0s 877us/step - loss: 3.5383 - mae: 1.5167
Epoch 160/200
40/40 [==============================] - 0s 847us/step - loss: 3.5385 - mae: 1.5167
Epoch 161/200
40/40 [==============================] - 0s 846us/step - loss: 3.5375 - mae: 1.5165
Epoch 162/200
40/40 [==============================] - 0s 947us/step - loss: 3.5377 - mae: 1.5166
Epoch 163/200
40/40 [==============================] - 0s 986us/step - loss: 3.5371 - mae: 1.5165
Epoch 164/200
40/40 [==============================] - 0s 869us/step - loss: 3.5380 - mae: 1.5167
Epoch 165/200
40/40 [==============================] - 0s 875us/step - loss: 3.5402 - mae: 1.5169
Epoch 166/200
40/40 [==============================] - 0s 913us/step - loss: 3.5390 - mae: 1.5170
Epoch 167/200
40/40 [==============================] - 0s 926us/step - loss: 3.5389 - mae: 1.5163
Epoch 168/200
40/40 [==============================] - 0s 853us/step - loss: 3.5379 - mae: 1.5160
Epoch 169/200
40/40 [==============================] - 0s 925us/step - loss: 3.5380 - mae: 1.5159
Epoch 170/200
40/40 [==============================] - 0s 935us/step - loss: 3.5376 - mae: 1.5167
Epoch 171/200
40/40 [==============================] - 0s 873us/step - loss: 3.5371 - mae: 1.5164
Epoch 172/200
40/40 [==============================] - 0s 847us/step - loss: 3.5376 - mae: 1.5165
Epoch 173/200
40/40 [==============================] - 0s 874us/step - loss: 3.5383 - mae: 1.5167
Epoch 174/200
40/40 [==============================] - 0s 930us/step - loss: 3.5362 - mae: 1.5162
Epoch 175/200
40/40 [==============================] - 0s 960us/step - loss: 3.5386 - mae: 1.5165
Epoch 176/200
40/40 [==============================] - 0s 968us/step - loss: 3.5376 - mae: 1.5166
Epoch 177/200
40/40 [==============================] - 0s 986us/step - loss: 3.5373 - mae: 1.5164
Epoch 178/200
40/40 [==============================] - 0s 907us/step - loss: 3.5395 - mae: 1.5166
Epoch 179/200
40/40 [==============================] - 0s 911us/step - loss: 3.5375 - mae: 1.5161
Epoch 180/200
40/40 [==============================] - 0s 1ms/step - loss: 3.5377 - mae: 1.5165
Epoch 181/200
40/40 [==============================] - 0s 1ms/step - loss: 3.5367 - mae: 1.5164
Epoch 182/200
40/40 [==============================] - 0s 890us/step - loss: 3.5380 - mae: 1.5164
Epoch 183/200
40/40 [==============================] - 0s 926us/step - loss: 3.5373 - mae: 1.5167
Epoch 184/200
40/40 [==============================] - 0s 931us/step - loss: 3.5389 - mae: 1.5168
Epoch 185/200
40/40 [==============================] - 0s 839us/step - loss: 3.5371 - mae: 1.5158
Epoch 186/200
40/40 [==============================] - 0s 892us/step - loss: 3.5383 - mae: 1.5159
Epoch 187/200
40/40 [==============================] - 0s 915us/step - loss: 3.5371 - mae: 1.5163
Epoch 188/200
40/40 [==============================] - 0s 992us/step - loss: 3.5384 - mae: 1.5170
Epoch 189/200
40/40 [==============================] - 0s 913us/step - loss: 3.5376 - mae: 1.5160
Epoch 190/200
40/40 [==============================] - 0s 970us/step - loss: 3.5386 - mae: 1.5166
Epoch 191/200
40/40 [==============================] - 0s 954us/step - loss: 3.5398 - mae: 1.5163
Epoch 192/200
40/40 [==============================] - 0s 906us/step - loss: 3.5370 - mae: 1.5163
Epoch 193/200
40/40 [==============================] - 0s 892us/step - loss: 3.5371 - mae: 1.5166
Epoch 194/200
40/40 [==============================] - 0s 1ms/step - loss: 3.5389 - mae: 1.5167
Epoch 195/200
40/40 [==============================] - 0s 976us/step - loss: 3.5376 - mae: 1.5170
Epoch 196/200
40/40 [==============================] - 0s 925us/step - loss: 3.5371 - mae: 1.5164
Epoch 197/200
40/40 [==============================] - 0s 995us/step - loss: 3.5368 - mae: 1.5161
Epoch 198/200
40/40 [==============================] - 0s 957us/step - loss: 3.5380 - mae: 1.5161
Epoch 199/200
40/40 [==============================] - 0s 923us/step - loss: 3.5391 - mae: 1.5162
Epoch 200/200
40/40 [==============================] - 0s 899us/step - loss: 3.5368 - mae: 1.5160
w =  [[2.00381827]
 [-0.98936516]]
b =  [2.9572618]

Second, inherit the Model base class to build a custom model [for experts]

import tensorflow as tf
from tensorflow.keras import models,layers,optimizers,losses,metrics
 
 
# Print time dividing line 
@ tf.function
 DEF printbar ():
    ts = tf.timestamp()
    today_ts = ts%(24*60*60)
 
    hour = tf.cast(today_ts//3600+8,tf.int32)%tf.constant(24)
    minite = tf.cast((today_ts%3600)//60,tf.int32)
    second = tf.cast(tf.floor(today_ts%60),tf.int32)
 
    def timeformat(m):
        if tf.strings.length(tf.strings.format("{}",m))==1:
            return(tf.strings.format("0{}",m))
        else:
            return(tf.strings.format("{}",m))
 
    timestring = tf.strings.join([timeformat(hour),timeformat(minite),
                timeformat(second)],separator = ":")
    tf.print("=========="*8,end = "")
    tf.print(timestring)
 
#Number of samples
n = 800
 
# Generate test data set 
X-tf.random.uniform = ([n-, 2], MINVAL = -10, MAXVAL = 10 )
w0 = tf.constant([[2.0],[-1.0]])
b0 = tf.constant(3.0)
 
Y = X @ w0 + b0 + tf.random.normal ([n, 1], mean = 0.0, stddev = 2.0)   # @ indicates matrix multiplication, adding normal disturbance 
 
ds_train = tf.data.Dataset.from_tensor_slices ((X [0: n * 3 // 4,:], Y [0: n * 3 // 4,: ])) \
     .shuffle(buffer_size = 1000).batch(20) \
     .prefetch(tf.data.experimental.AUTOTUNE) \
     .cache()
 
ds_valid = tf.data.Dataset.from_tensor_slices((X[n*3//4:,:],Y[n*3//4:,:])) \
     .shuffle(buffer_size = 1000).batch(20) \
     .prefetch(tf.data.experimental.AUTOTUNE) \
     .cache()
 
tf.keras.backend.clear_session()
 
class MyModel(models.Model):
    def __init__(self):
        super (MyModel, self). __init__ ()
 
    def build(self,input_shape):
        self.dense1 = layers.Dense(1)   
        super(MyModel,self).build(input_shape)
 
    def call(self, x):
        y = self.dense1 (x)
         return (y)
 
model = MyModel ()
model.build(input_shape =(None,2))
model.summary()
 


# ## Custom training loop (expert tutorial)
 
 
optimizer = optimizers.Adam()
loss_func = losses.MeanSquaredError()
 
train_loss = tf.keras.metrics.Mean(name='train_loss')
train_metric = tf.keras.metrics.MeanAbsoluteError(name='train_mae')
 
valid_loss = tf.keras.metrics.Mean(name='valid_loss')
valid_metric = tf.keras.metrics.MeanAbsoluteError(name='valid_mae')
 
 
@tf.function
def train_step(model, features, labels):
    with tf.GradientTape() as tape:
        predictions = model(features)
        loss = loss_func(labels, predictions)
    gradients = tape.gradient(loss, model.trainable_variables)
    optimizer.apply_gradients(zip(gradients, model.trainable_variables))
 
    train_loss.update_state(loss)
    train_metric.update_state(labels, predictions)
 
@tf.function
def valid_step(model, features, labels):
    predictions = model(features)
    batch_loss = loss_func(labels, predictions)
    valid_loss.update_state(batch_loss)
    valid_metric.update_state(labels, predictions)
 
 
@tf.function
def train_model(model,ds_train,ds_valid,epochs):
    for epoch in tf.range(1,epochs+1):
        for features, labels in ds_train:
            train_step(model,features,labels)
 
        for features, labels in ds_valid:
            valid_step(model,features,labels)
 
        logs = 'Epoch={},Loss:{},MAE:{},Valid Loss:{},Valid MAE:{}'
 
        if  epoch%100 ==0:
            printable ()
            tf.print(tf.strings.format(logs,
            (epoch,train_loss.result(),train_metric.result(),valid_loss.result(),valid_metric.result())))
            tf.print("w=",model.layers[0].kernel)
            tf.print("b=",model.layers[0].bias)
            tf.print("")
 
        train_loss.reset_states()
        valid_loss.reset_states()
        train_metric.reset_states()
        valid_metric.reset_states()
 
train_model(model,ds_train,ds_valid,400)

result:

Model: "my_model"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                multiple                  3         
=================================================================
Total params: 3
Trainable params: 3
Non-trainable params: 0
_________________________________________________________________
================================================================================15:40:27
Epoch=100,Loss:7.5666852,MAE:2.1710279,Valid Loss:6.50372219,Valid MAE:2.06310129
w= [[1.78483891]
 [-0.941808105]]
b= [1.89865637]

================================================================================15:40:34
Epoch=200,Loss:4.18288374,MAE:1.6310848,Valid Loss:3.79517508,Valid MAE:1.53697133
w= [[2.02300119]
 [-0.992656231]]
b= [2.88763976]

================================================================================15:40:42
Epoch=300,Loss:4.17580175,MAE:1.62464666,Valid Loss:3.80199885,Valid MAE:1.53819764
w= [[2.02173]
 [-0.992035568]]
b= [2.97494888]

================================================================================15:40:49
Epoch=400,Loss:4.17601919,MAE:1.6246767,Valid Loss:3.80182695,Valid MAE:1.53820801
w= [[2.02159858]
 [-0.992003262]]
b= [2.97537684]

 

reference:

Open source e-book address: https://lyhue1991.github.io/eat_tensorflow2_in_30_days/

GitHub project address: https://github.com/lyhue1991/eat_tensorflow2_in_30_days

Guess you like

Origin www.cnblogs.com/xiximayou/p/12673939.html