TensorFlow2.0:keras.compile与fit的使用

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers,datasets,optimizers,Sequential,metrics

def preprocess(x,y):
    x = tf.cast(x,dtype=tf.float32)/255.
    x = tf.reshape(x,[-1])
    y = tf.cast(y,dtype=tf.int32)
    y = tf.one_hot(y,depth=10)
    return x,y

#load data
(x_train,y_train),(x_test,y_test) = datasets.mnist.load_data()
print(x_train.shape,y_train.shape)
print(x_test.shape,y_test.shape)

db = tf.data.Dataset.from_tensor_slices((x_train,y_train))
db = db.map(preprocess).shuffle(60000).batch(128)
db_test = tf.data.Dataset.from_tensor_slices((x_test,y_test))
db_test = db_test.map(preprocess).batch(128)

#build network
network = Sequential([
    layers.Dense(512,activation=tf.nn.relu),
    layers.Dense(256,activation=tf.nn.relu),
    layers.Dense(128,activation=tf.nn.relu),
    layers.Dense(64,activation=tf.nn.relu),
    layers.Dense(32,activation=tf.nn.relu),
    layers.Dense(10)
])
network.build(input_shape=[None,28*28])
network.summary()

#input para
network.compile(optimizer=optimizers.Adam(lr=1e-2),
                loss = tf.losses.CategoricalCrossentropy(from_logits=True),
                metrics = ['accuracy'])

#run network
network.fit(db,epochs=20,validation_data=db_test,validation_freq=1)

network.evaluate(db_test)

你可能感兴趣的:(tensorflow2.0)