## Issue

I am inputting series of float32 grayscale images as a list with `16*16`

shape to python and try do a regression task with labels inputted from Pandas data frame.

Here is the shape of images and df:

```
print(np.shape(images))
(2000, 16, 16)
print(np.shape(df))
(2000, 1)
```

I used `train_test_split`

from `sklearn`

to split the data to train and test:

```
print (np.shape(trainY),np.shape(testY),np.shape(trainX),np.shape(testX))
(1700, 1) (300, 1) (1700, 16, 16) (300, 16, 16)
```

I am using the following model for doing the prediction, but `model.fit`

returns error and does not run the training.

```
model = models.Sequential()
model.add(layers.Dense(512, activation='relu', input_shape=(16 * 16 * 1,)))
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='linear'))
model.compile(optimizer='adam',
loss='mean_squared_error',
metrics=['mae'])
history = model.fit(trainX, trainY, epochs=50, validation_split=.2, batch_size=128,verbose=1)
```

```
ValueError: Layer sequential_18 expects 1 input(s), but it received 1700 input tensors
```

I also tested `trainX = np.expand_dims(trainX, -1)`

before `model.fit`

but it still gives another error. Can anyone help me to solve this?

```
ValueError: Input 0 of layer sequential_18 is incompatible with the layer: expected axis -1 of input shape to have value 256 but received input with shape (None, 16, 16, 1)
```

## Solution

Your next layers are simply `Dense`

, so adding a `Flatten`

layer on the top of your network does the job (no need to additional manipulate the input images)

```
trainX = np.random.uniform(0,1, (1700, 16, 16))
trainY = np.random.uniform(0,1, (1700, 1))
model = models.Sequential()
model.add(layers.Flatten(input_shape=(16,16)))
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='linear'))
model.compile(optimizer='adam',
loss='mean_squared_error',
metrics=['mae'])
history = model.fit(trainX, trainY, epochs=50,
validation_split=.2, batch_size=128, verbose=1)
```

Pay attention also to correctly manipulate your images…

Images are stores in a list of arrays. You have to transform the list into a single array of shapes `(n_sample, 16, 16)`

.

This can be done simply:

```
images = np.asarray(images)
```

Answered By – Marco Cerliani

**This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 **