I am having difficulty inputting data into a simple keras model for both predicting and training. I have looked at the related questions but after spending 6 hours attempting to figure this out on my own I am still struggling with this.
Imports and network:
from tensorflow import keras
from tensorflow.keras.layers import Dense
from tensorflow import convert_to_tensor
from random import randint
model = keras.Sequential()
model.add(Dense(3, activation='relu', input_dim=5))
model.add(Dense(4, activation='sigmoid'))
model.add(Dense(2))
model.compile(loss=keras.losses.MeanSquaredError(),
optimizer='adam',
metrics=['MeanSquaredError'])
Attempting to predict with the network:
X = [4, 5, 2, 8, 9]
tensor = convert_to_tensor(X)
print(tensor.shape) # Prints (5, ) as expected
prediction = model.predict(tensor)
The following error is raised:
ValueError: Error when checking input: expected dense_input to have shape (5,) but got array with shape (1,)
Trying to train the network:
states = [[7, 8, 3, 9, 7], [0, 7, 5, 0, 3], [2, 5, 8, 1, 10], [9, 9, 9, 8, 6]]
actions = [[1, 0], [0, 1], [0, 1], [0, 1]]
tensor_states = convert_to_tensor(states)
tensor_actions = convert_to_tensor(actions)
print(tensor_states.shape) # Prints (4, 5)
print(tensor_actions.shape) # Prints (4, 2)
model.fit(tensor_states, tensor_actions, verbose=0)
The following error is raised:
ValueError: TypeError: len() of unsized object
Without verbose=0 I get this error:
AttributeError: 'ProgbarLogger' object has no attribute 'log_values'
I am running in a conda environment.
I asked a previous question on this topic but I realized I overcomplicated the issue and was not exactly sure what I was asking. Now that I have done more research I feel I have boiled down my issue to the most basic form. I wrote this new question after consideration of this meta post. If I should have just edited my previous question please let me know.
EDIT - Trouble Shooting with darcycp
As the answer given below points out I should be giving a column to predict the network (using two sets of brackets). However, this gives the following error:
ValueError: TypeError: len() of unsized object
Then not using the tensor (as keras predict function can directly accept python lists) gives the following error:
ValueError: Attempt to convert a value (4) with an unsupported type () to a Tensor
Which is extremely unusual to me as I do not have numpy imported into this program.