【发布时间】:2020-05-29 23:25:11
【问题描述】:
我在将数据输入到用于预测和训练的简单 keras 模型中时遇到了困难。我已经查看了相关问题,但在花了 6 个小时试图自己解决这个问题后,我仍然在努力解决这个问题。
进口和网络:
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'])
尝试使用网络进行预测:
X = [4, 5, 2, 8, 9]
tensor = convert_to_tensor(X)
print(tensor.shape) # Prints (5, ) as expected
prediction = model.predict(tensor)
出现以下错误:
ValueError: 检查输入时出错:预期dense_input 的形状为(5,),但得到的数组的形状为(1,)
尝试训练网络:
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)
出现以下错误:
ValueError: TypeError: len() of unsized object
如果没有 verbose=0,我会收到此错误:
AttributeError: 'ProgbarLogger' 对象没有属性 'log_values'
我在 conda 环境中运行。
我就这个话题询问了previous question,但我意识到我把问题复杂化了,我并不确定我在问什么。现在我做了更多的研究,我觉得我已经把我的问题归结为最基本的形式。我在考虑this meta post 后写了这个新问题。如果我应该刚刚编辑我之前的问题,请告诉我。
编辑 - 使用 darcycp 进行故障排除
正如下面给出的答案所指出的,我应该给出一个列来预测网络(使用两组括号)。但是,这会产生以下错误:
ValueError: TypeError: len() of unsized object
然后不使用张量(因为 keras predict 函数可以直接接受 python 列表)给出以下错误:
ValueError: 尝试将类型 () 不受支持的值 (4) 转换为张量
这对我来说非常不寻常,因为我没有将 numpy 导入到这个程序中。
【问题讨论】:
标签: python tensorflow keras conda