Guest User

Untitled

a guest
May 25th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1. from keras.layers import Input, Conv2D
  2. from keras.models import Model, optimizers
  3. import numpy as np
  4. import tensorflow as tf
  5. from keras import backend as K
  6. from keras.callbacks import ModelCheckpoint
  7.  
  8.  
  9. class ZeroCenterConv2D(Conv2D):
  10. def __init__(self, filters, kernel_size, **kwargs):
  11. super(ZeroCenterConv2D, self).__init__(filters, kernel_size, **kwargs)
  12.  
  13. def call(self, inputs):
  14. assert self.kernel_size[0] % 2 == 1, "Error: the kernel size is an even number"
  15. assert self.kernel_size[1] % 2 == 1, "Error: the kernel size is an even number"
  16.  
  17. centerX = (self.kernel_size[0] - 1) // 2
  18. centerY = (self.kernel_size[1] - 1) // 2
  19.  
  20. kernel_mask = np.ones(self.kernel_size + (1, 1))
  21. kernel_mask[centerX, centerY] = 0
  22. kernel_mask = K.constant(kernel_mask)
  23.  
  24. customKernel = self.kernel * kernel_mask
  25.  
  26. outputs = K.conv2d(
  27. inputs,
  28. customKernel,
  29. strides=self.strides,
  30. padding=self.padding,
  31. data_format=self.data_format,
  32. dilation_rate=self.dilation_rate)
  33.  
  34. if self.activation is not None:
  35. return self.activation(outputs)
  36.  
  37. return outputs
  38.  
  39.  
  40. size1 = 256
  41. size2 = 256
  42. input_img = Input(shape=(size1, size2, 8))
  43. conv1 = ZeroCenterConv2D(8, (5, 5), padding='same', activation='relu')(input_img)
  44. autoencoder = Model(input_img, conv1)
  45. adam = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8)
  46. autoencoder.compile(optimizer=adam, loss='mean_squared_error')
  47.  
  48.  
  49. import scipy.io
  50. A = scipy.io.loadmat('data_train')
  51. x_train = A['data']
  52. x_train = np.reshape(x_train, (1, 256, 256, 8))
  53.  
  54.  
  55. from keras.callbacks import TensorBoard
  56.  
  57. autoencoder.fit(x_train, x_train,
  58. epochs=5,
  59. batch_size=1,
  60. shuffle=False,
  61. validation_data=(x_train, x_train),
  62. callbacks=[TensorBoard(log_dir='/tmp/autoencoder')])
  63.  
  64.  
  65. decoded_imgs = autoencoder.predict(x_train)
  66.  
  67. Connected to pydev debugger (build 181.4668.75)
  68. /home/allen/kerasProject/keras/venv/py2.7/local/lib/python2.7/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  69. from ._conv import register_converters as _register_converters
  70. Using TensorFlow backend.
  71. Traceback (most recent call last):
  72. File "/snap/pycharm-community/60/helpers/pydev/pydevd.py", line 1664, in <module>
  73. main()
  74. File "/snap/pycharm-community/60/helpers/pydev/pydevd.py", line 1658, in main
  75. globals = debugger.run(setup['file'], None, None, is_module)
  76. File "/snap/pycharm-community/60/helpers/pydev/pydevd.py", line 1068, in run
  77. pydev_imports.execfile(file, globals, locals) # execute the script
  78. File "/home/allen/auto_ksp_completion/temptest", line 62, in <module>
  79. callbacks=[TensorBoard(log_dir='/tmp/autoencoder')])
  80. File "/home/allen/kerasProject/keras/venv/py2.7/local/lib/python2.7/site-packages/keras/engine/training.py", line 1682, in fit
  81. self._make_train_function()
  82. File "/home/allen/kerasProject/keras/venv/py2.7/local/lib/python2.7/site-packages/keras/engine/training.py", line 992, in _make_train_function
  83. loss=self.total_loss)
  84. File "/home/allen/kerasProject/keras/venv/py2.7/local/lib/python2.7/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
  85. return func(*args, **kwargs)
  86. File "/home/allen/kerasProject/keras/venv/py2.7/local/lib/python2.7/site-packages/keras/optimizers.py", line 445, in get_updates
  87. grads = self.get_gradients(loss, params)
  88. File "/home/allen/kerasProject/keras/venv/py2.7/local/lib/python2.7/site-packages/keras/optimizers.py", line 80, in get_gradients
  89. raise ValueError('An operation has `None` for gradient. '
  90. ValueError: An operation has `None` for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.
  91.  
  92. Process finished with exit code 1
Add Comment
Please, Sign In to add comment