as1.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import os
  2. from time import time
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. import tensorflow as tf
  6. from icecream import ic
  7. from tensorflow import keras
  8. # os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
  9. global_random_seed = 3884
  10. np.random.seed(global_random_seed)
  11. def gene_test_data(num_points: int, low_val=-1, high_val=1):
  12. return np.linspace(low_val, high_val, num_points)
  13. def get_network(input_dim, output_dim, width, depth):
  14. # Random weight
  15. initializer = keras.initializers.RandomUniform(
  16. minval=-1., maxval=1., seed=global_random_seed)
  17. # initializer = keras.initializers.Constant(1)
  18. # different activation functions
  19. activation_func = keras.activations.tanh
  20. # activation_func = tf.math.sin
  21. hidden_layers = [keras.layers.InputLayer(input_shape=[input_dim, ])]
  22. hidden_layers += [keras.layers.Dense(width, activation=activation_func,
  23. kernel_initializer=initializer, bias_initializer=initializer) for _ in range(depth-1)]
  24. hidden_layers.append(keras.layers.Dense(
  25. output_dim, kernel_initializer=initializer))
  26. model = keras.Sequential(hidden_layers)
  27. return model
  28. def predict(input):
  29. result = []
  30. for model in all_models:
  31. temp = model.predict(input)
  32. result.append(temp)
  33. return result
  34. model_5 = get_network(1, 1, 5, 15)
  35. model_10 = get_network(1, 1, 10, 15)
  36. model_20 = get_network(1, 1, 20, 15)
  37. model_40 = get_network(1, 1, 40, 15)
  38. all_models = [model_5, model_10, model_20, model_40]
  39. if __name__ == '__main__':
  40. st_time = time()
  41. test_data = gene_test_data(100)
  42. result = predict(test_data)
  43. ic(np.shape(result))
  44. print(time()-st_time)
  45. # result = list(zip(*result))
  46. ic(np.shape(result))
  47. result_fft = []
  48. for i in range(len(result)):
  49. result_fft.append(list(np.fft.fft(result[i], axis=0)))
  50. ic(np.shape(result_fft))
  51. fig, ((p1, p2, p3, p4), (p5, p6, p7, p8)) = plt.subplots(2, 4)
  52. pics = [p1, p2, p3, p4, p5, p6, p7, p8]
  53. for i in range(len(result)):
  54. pics[i].scatter(range(len(result[i])), list(result[i]), s=1.5, c='r')
  55. pics[i+4].scatter(range(len(result_fft[i])),
  56. list(result_fft[i]), s=0.5, c='b')
  57. pics[i].set(adjustable='box', aspect=1.0/pics[i].get_data_ratio())
  58. pics[i+4].set(adjustable='box', aspect=1.0/pics[i+4].get_data_ratio())
  59. plt.show()