tensorflow高级API之keras

Keras 是一个主要由Python语言开发的开源神经网络计算库。

在TensorFlow 2 版本中,Keras被正式确定为TensorFlow的高层API唯一接口,取代了TensorFlow 1版本中自带的 tf.layers 等高层接口。也就是说,现在只能使用 Keras的接口来完成 TensorFlow 层方式的模型搭建与训练。 在TensorFlow中,Keras被实现在tf.keras子模块中。

其实 Keras 可以理解为一套搭建与训练神 经网络的高层 API 协议,Keras 本身已经实现了此协议,可以方便的调用 TensorFlow,CNTK等后端完成加速计算;在TensorFlow中,也实现了一套 Keras 协议,即tf.keras,但只能基于 TensorFlow 后端计算,并对 TensorFlow 的支持更好。对于使用 TensorFlow 的开发者来说,tf.keras 可以理解为一个普通的子模块,与其他子模块,如tf.math,tf.data等并没有什么差别。

1.简单应用

import tensorflow as tf
from tensorflow import keras
import numpy as np
model = keras.Sequential([keras.layers.Dense(units=1,input_shape=[1])])
model.compile(optimizer = 'sgd',loss='mean_squared_error')
xs = np.array([-1.0,0.0,1.0,2.0,3.0,4.0],dtype=float)
ys = np.array([-3.0,-1.0,1.0,3.0,5.0,7.0],dtype=float)
model.fit(xs,ys,epochs=500)
print(model.predict([10.0]))

2.识别图片

#下载fashion_mnist数据集
fashion_mnist = keras.datasets.fashion_mnist
(train_images,train_labels),(test_images,test_labels) = fashion_mnist.load_data()
#数据归一化
train_images  = train_images / 255.0
test_images = test_images / 255.0
#定义网络结构
#三层
model = tf.keras.models.Sequential([tf.keras.layers.Flatten(), 
                                    tf.keras.layers.Dense(128, activation=tf.nn.relu), 
                                    tf.keras.layers.Dense(10, activation=tf.nn.softmax)])
#
model.compile(optimizer = tf.optimizers.Adam(),
              loss = 'sparse_categorical_crossentropy',
              metrics=['accuracy'])
#预测
model.fit(train_images, train_labels, epochs=10)

callback

import tensorflow as tf
print(tf.__version__)

class myCallback(tf.keras.callbacks.Callback):
  def on_epoch_end(self, epoch, logs={
    
    }):
    if(logs.get('loss')<0.4):
      print("\nReached 60% accuracy so cancelling training!")
      self.model.stop_training = True

callbacks = myCallback()
mnist = tf.keras.datasets.fashion_mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()
training_images=training_images/255.0
test_images=test_images/255.0
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy')
model.fit(training_images, training_labels, epochs=5, callbacks=[callbacks])

CNN

import tensorflow as tf
print(tf.__version__)
mnist = tf.keras.datasets.mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()
training_images=training_images.reshape(60000, 28, 28, 1)
training_images=training_images / 255.0
test_images = test_images.reshape(10000, 28, 28, 1)
test_images=test_images/255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28, 28, 1)),
  tf.keras.layers.MaxPooling2D(2, 2),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

model.fit(training_images, training_labels, epochs=10)
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(test_acc)

—>

Epoch 1/10
1875/1875 [==============================] - 25s 13ms/step - loss: 0.1494 - accuracy: 0.9551
Epoch 2/10
1875/1875 [==============================] - 25s 13ms/step - loss: 0.0502 - accuracy: 0.9842
Epoch 3/10
1875/1875 [==============================] - 25s 13ms/step - loss: 0.0322 - accuracy: 0.9901
Epoch 4/10
1875/1875 [==============================] - 25s 13ms/step - loss: 0.0223 - accuracy: 0.9925
Epoch 5/10
1875/1875 [==============================] - 26s 14ms/step - loss: 0.0146 - accuracy: 0.9953
Epoch 6/10
1875/1875 [==============================] - 26s 14ms/step - loss: 0.0100 - accuracy: 0.9973
Epoch 7/10
1875/1875 [==============================] - 26s 14ms/step - loss: 0.0081 - accuracy: 0.9972
Epoch 8/10
1875/1875 [==============================] - 27s 14ms/step - loss: 0.0063 - accuracy: 0.9980
Epoch 9/10
1875/1875 [==============================] - 27s 14ms/step - loss: 0.0050 - accuracy: 0.9983
Epoch 10/10
1875/1875 [==============================] - 28s 15ms/step - loss: 0.0046 - accuracy: 0.9984
313/313 [==============================] - 1s 5ms/step - loss: 0.0591 - accuracy: 0.9876
0.9876000285148621

猜你喜欢

转载自blog.csdn.net/weixin_44127327/article/details/108996217
今日推荐