|
import sys
|
|
import numpy
|
|
import tensorflow as tf
|
|
|
|
####
|
|
import subprocess
|
|
subprocess.run("nvidia-smi")
|
|
subprocess.run(["find", "/dev"])
|
|
print(tf.config.list_physical_devices())
|
|
|
|
###
|
|
|
|
# Based on TensorFlow 2 quickstart for beginners
|
|
# https://www.tensorflow.org/tutorials/quickstart/beginner
|
|
|
|
print("TensorFlow version:", tf.__version__)
|
|
|
|
with numpy.load(sys.argv[1], allow_pickle=True) as f: # pylint: disable=unexpected-keyword-arg
|
|
x_train, y_train = f['x_train'], f['y_train']
|
|
x_test, y_test = f['x_test'], f['y_test']
|
|
|
|
x_train, x_test = x_train / 255.0, x_test / 255.0
|
|
|
|
model = tf.keras.models.Sequential([
|
|
tf.keras.layers.Flatten(input_shape=(28, 28)),
|
|
tf.keras.layers.Dense(128, activation='relu'),
|
|
tf.keras.layers.Dropout(0.2),
|
|
tf.keras.layers.Dense(10)
|
|
])
|
|
|
|
predictions = model(x_train[:1]).numpy()
|
|
print(predictions)
|
|
|
|
print(tf.nn.softmax(predictions).numpy())
|
|
|
|
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
|
|
|
|
print(loss_fn(y_train[:1], predictions).numpy())
|
|
|
|
model.compile(optimizer='adam',
|
|
loss=loss_fn,
|
|
metrics=['accuracy'])
|
|
|
|
print(model.fit(x_train, y_train, epochs=5))
|
|
|
|
print(model.evaluate(x_test, y_test, verbose=2))
|
|
|
|
probability_model = tf.keras.Sequential([
|
|
model,
|
|
tf.keras.layers.Softmax()
|
|
])
|
|
|
|
print(probability_model(x_test[:5]))
|