目录
CIFAR10 MyDenseLayer
CIFAR10
MyDenseLayer
import?os
import?tensorflow?as?tf
from?tensorflow.keras?import?datasets,?layers,?optimizers,?Sequential,?metrics
from?tensorflow?import?keras
os.environ['TF_CPP_MIN_LOG_LEVEL']?=?'2'
def?preprocess(x,?y):
????#?[0,?255]?-->?[-1,1]
????x?=?2?*?tf.cast(x,?dtype=tf.float32)?/?255.?-?1
????y?=?tf.cast(y,?dtype=tf.int32)
????return?x,?y
batch_size?=?128
#?x?-->?[32,32,3],?y?-->?[10k,?1]
(x,?y),?(x_val,?y_val)?=?datasets.cifar10.load_data()
y?=?tf.squeeze(y)??#?[10k,?1]?-->?[10k]
y_val?=?tf.squeeze(y_val)
y?=?tf.one_hot(y,?depth=10)??#?[50k,?10]
y_val?=?tf.one_hot(y_val,?depth=10)??#?[10k,?10]
print('datasets:',?x.shape,?y.shape,?x_val.shape,?y_val.shape,?x.min(),
??????x.max())
train_db?=?tf.data.Dataset.from_tensor_slices((x,?y))
train_db?=?train_db.map(preprocess).shuffle(10000).batch(batch_size)
test_db?=?tf.data.Dataset.from_tensor_slices((x_val,?y_val))
test_db?=?test_db.map(preprocess).batch(batch_size)
sample?=?next(iter(train_db))
print('batch:',?sample[0].shape,?sample[1].shape)
class?MyDense(layers.Layer):
????#?to?replace?standard?layers.Dense()
????def?__init__(self,?inp_dim,?outp_dim):
????????super(MyDense,?self).__init__()
????????self.kernel?=?self.add_variable('w',?[inp_dim,?outp_dim])
#?????????self.bias?=?self.add_variable('b',?[outp_dim])
????def?call(self,?inputs,?training=None):
????????x?=?inputs?@?self.kernel
????????return?x
class?MyNetwork(keras.Model):
????def?__init__(self):
????????super(MyNetwork,?self).__init__()
????????self.fc1?=?MyDense(32?*?32?*?3,?256)
????????self.fc2?=?MyDense(256,?128)
????????self.fc3?=?MyDense(128,?64)
????????self.fc4?=?MyDense(64,?32)
????????self.fc5?=?MyDense(32,?10)
????def?call(self,?inputs,?training=None):
????????"""inputs:?[b,32,32,32,3]"""
????????x?=?tf.reshape(inputs,?[-1,?32?*?32?*?3])
????????#?[b,32*32*32]?-->?[b,?256]
????????x?=?self.fc1(x)
????????x?=?tf.nn.relu(x)
????????#?[b,?256]?-->?[b,128]
????????x?=?self.fc2(x)
????????x?=?tf.nn.relu(x)
????????#?[b,?128]?-->?[b,64]
????????x?=?self.fc3(x)
????????x?=?tf.nn.relu(x)
????????#?[b,?64]?-->?[b,32]
????????x?=?self.fc4(x)
????????x?=?tf.nn.relu(x)
????????#?[b,?32]?-->?[b,10]
????????x?=?self.fc5(x)
????????return?x
network?=?MyNetwork()
network测试数据pile(optimizer=optimizers.Adam(lr=1e-3),
????????????????loss=tf.losses.CategoricalCrossentropy(from_logits=True),
????????????????metrics=['accuracy'])
network.fit(train_db,?epochs=5,?validation_data=test_db,?validation_freq=1)
network.evaluate(test_db)
network.save_weights('weights.ckpt')
del?network
print('saved?to?ckpt/weights.ckpt')
network?=?MyNetwork()
network测试数据pile(optimizer=optimizers.Adam(lr=1e-3),
????????????????loss=tf.losses.CategoricalCrossentropy(from_logits=True),
????????????????metircs=['accuracy'])
network.fit(train_db,?epochs=5,?validation_data=test_db,?validation_freq=1)
network.load_weights('weights.ckpt')
print('loaded?weights?from?file.')
network.evaluate(test_db)datasets:?(50000,?32,?32,?3)?(50000,?10)?(10000,?32,?32,?3)?(10000,?10)?0?255 batch:?(128,?32,?32,?3)?(128,?10) Epoch?1/5 391/391?[==============================]?-?7s?19ms/step?-?loss:?1.7276?-?accuracy:?0.3358?-?val_loss:?1.5801?-?val_accuracy:?0.4427 Epoch?2/5 391/391?[==============================]?-?7s?18ms/step?-?loss:?1.5045?-?accuracy:?0.4606?-?val_loss:?1.4808?-?val_accuracy:?0.4812 Epoch?3/5 391/391?[==============================]?-?6s?17ms/step?-?loss:?1.3919?-?accuracy:?0.5019?-?val_loss:?1.4596?-?val_accuracy:?0.4921 Epoch?4/5 391/391?[==============================]?-?7s?18ms/step?-?loss:?1.3039?-?accuracy:?0.5364?-?val_loss:?1.4651?-?val_accuracy:?0.4950 Epoch?5/5 391/391?[==============================]?-?6s?16ms/step?-?loss:?1.2270?-?accuracy:?0.5622?-?val_loss:?1.4483?-?val_accuracy:?0.5030 79/79?[==============================]?-?1s?11ms/step?-?loss:?1.4483?-?accuracy:?0.5030 saved?to?ckpt/weights.ckpt Epoch?1/5 391/391?[==============================]?-?7s?19ms/step?-?loss:?1.7216?-?val_loss:?1.5773 Epoch?2/5 391/391?[==============================]?-?10s?26ms/step?-?loss:?1.5010?-?val_loss:?1.5111 Epoch?3/5 391/391?[==============================]?-?8s?21ms/step?-?loss:?1.3868?-?val_loss:?1.4657 Epoch?4/5 391/391?[==============================]?-?8s?20ms/step?-?loss:?1.3021?-?val_loss:?1.4586 Epoch?5/5 391/391?[==============================]?-?7s?17ms/step?-?loss:?1.2276?-?val_loss:?1.4583 loaded?weights?from?file. 79/79?[==============================]?-?1s?12ms/step?-?loss:?1.4483 1.4482733222502697
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did127436