Files
neuralchen-SimSwap/m1_tf_test.py
T
2022-07-11 11:58:04 +02:00

102 lines
3.0 KiB
Python

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
#############################################################
# File: m1_tf_test.py
# Created Date: Saturday July 9th 2022
# Author: Smiril
# Email: sonar@gmx.com
#############################################################
import sys
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.layers import Layer, Input, LSTM
from tensorflow.keras.models import *
tf.__version__
tf.config.list_physical_devices()
from random import randrange
class ComputeSum(Layer):
def __init__(self, input_dim):
super(ComputeSum, self).__init__()
# Create a trainable weight.
self.total = tf.Variable(initial_value=tf.zeros((input_dim,)),
trainable=True)
def call(self, inputs):
self.total.assign_add(tf.reduce_sum(inputs, axis=0))
return self.total
def call(self, data, depth = 0):
n = len(data)
return n
def ComputeSumModel(input_shape):
inputs = Input(shape = input_shape)
outputs = ComputeSum(input_shape[0])(inputs)
model = tf.keras.Model(inputs = inputs, outputs = outputs)
return model
def xatoi(Str):
sign, base, i = 1, 0, 0
# If whitespaces then ignore.
while (Str[i] == ' '):
i += 1
# Sign of number
if (Str[i] == '-' or Str[i] == '+'):
sign = 1 - 2 * (Str[i] == '-')
i += 1
# Checking for valid input
while (i < len(Str) and
Str[i] >= '0' and Str[i] <= '9'):
# Handling overflow test case
if (base > (sys.maxsize // 10) or
(base == (sys.maxsize // 10) and
(Str[i] - '0') > 7)):
if (sign == 1):
return sys.maxsize
else:
return -(sys.maxsize)
base = 10 * base + (ord(Str[i]) - ord('0'))
i += 1
return base * sign
inputs = tf.keras.Input(shape=(xatoi(sys.argv[1]),), name="digits")
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / randrange(255+1), x_test / randrange(255+1)
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128,activation='selu',name='layer1'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(64,activation='relu',name='layer2'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(32,activation='elu',name='layer3'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(16,activation='tanh',name='layer4'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(8,activation='sigmoid',name='layer5'),
tf.keras.layers.Dropout(0.2)
])
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
model.compile(optimizer='adam', loss=loss_fn, metrics=['accuracy'])
these = model.fit(x_train, y_train, epochs=10).history
that = ComputeSum(len(these))
those = that(these)
print(those)
model = ComputeSumModel((tf.shape(these)[1],))
print(model(these))
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.build()
model.save(these)
model.summary()