Tensorflow AdvancedAPIのKeras

Kerasは、主にPython言語によって開発されたオープンソースのニューラルネットワークコンピューティングライブラリです。

TensorFlow 2バージョンでは、KerasはTensorFlowの唯一の高レベルAPIインターフェースとして正式に識別され、TensorFlow1バージョンに付属していたtf.layersなどの高レベルインターフェースに取って代わりました。つまり、TensorFlowレイヤーモデルの構築とトレーニングを完了するために使用できるのは、Kerasインターフェースのみです。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)

折り返し電話

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