Reputation: 1325
I want to manually give input to keras Conv2D layer.
I take MNIST data set.
Conv2D accepts only tensors, so I change x_train
to x_train_tensor
using the Input
command of keras.
My input is in the format given in the keras instructions
(samples,rows, cols,channels)
Example input:
(60000,128,128,1)
I am expecting output to be something like:
(None, 26, 26, 32)
I am getting:
shape=(?, 59998, 26, 32)
What am I doing wrong?
My code:
import keras
from keras.datasets import mnist
from keras.layers import Conv2D
from keras import backend as K
from keras.layers import Input
batch_size = 128
num_classes = 10
epochs = 1
# input image dimensions
img_rows, img_cols = 28, 28
# the data, shuffled and split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()
if K.image_data_format() == 'channels_first':
x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
input_shape = (1, img_rows, img_cols)
else:
x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
input_shape = (img_rows, img_cols, 1)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
x_train_tensor=Input(shape=(60000,28,28), name='x_train')
A=Conv2D(32, kernel_size=(3, 3),
activation='relu',
input_shape=input_shape)(x_train_tensor)
Upvotes: 0
Views: 2375
Reputation: 56357
The number of samples is not part of the input_shape
, in your case you are making two mistakes. First is having the wrong input shape, and second is specifying two input shapes, once in the Input constructor, and second in the Conv2D instance:
x_train_tensor=Input(shape=(28, 28, 1), name='x_train')
A=Conv2D(32, kernel_size=(3, 3), activation='relu')(x_train_tensor)
Upvotes: 3