密集层给我二维数组
Dense layer give me 2D array
我正在为 CartPole 进行强化学习,我遇到了这个问题
model = keras.models.Sequential()
model.add(Dense(8,activation = 'relu'))
model.add(Dense(2,activation = 'linear')
这是我的模型
state = env.reset()
print(state)
output:
[-0.00315391 -0.0150189 0.01804181 0.02032083]
这就是我得到的模型预测结果
model.predict(state)
output:
[[-0.00028523 0.00031606]
[-0.00135828 0.00150507]
[ 0.00500827 -0.01125371]
[ 0.00564091 -0.01267526]]
为什么Dense(2,activation='linear')
接收二维数组?
我期望输出具有 (2,1) 形状,但为什么模型接收的是 (2,4) 形状?
我发现输出在模型的输出节点和输入形状之间存在关系
您已提供 4
个输入,对于这些 4
个输入,模型预测 4
个输出。由于您的输出层有 2
个神经元,因此每个 4
个输出都有 2
个值。似乎一切都很好。并且输出形状是(4, 2)
(不是(2, 4)
)。
如果您正在考虑它是如何算作 (4, 2)
,那么:要从左侧开始手动查找张量的形状,现在如果您在单个 [
内输入,您将找到 4
1 dimensional tensor
s,因此类似地访问这些张量中的任何一个,你会再次找到 2
0 dimensional tensor
s(即 scalar
s)。由于您已达到 0 dimensional tensor
,现在停止此过程。就是这样 (4, 2)
.
状态的形状是(4,)
,因此模型将其视为4个样本(第一维是样本数)。如果你想传递 1 个具有 4 个特征的样本,形状应该是 (1,4)
(1 个样本,4 个特征),给你 (1,2)
(1 个样本,2 个输出)。
这样传递:
model.predict(np.reshape(state,(1,-1)))
# output e.g.
# array([[ 0.0078704 , -0.00879759]], dtype=float32) #(1,2)
请注意,您的模型应该使用具有 4 个特征的输入构建(例如 input_shape=(4,)
),否则您会出错。如果您只是进行预测,运行 再次定义您的模型。
我正在为 CartPole 进行强化学习,我遇到了这个问题
model = keras.models.Sequential()
model.add(Dense(8,activation = 'relu'))
model.add(Dense(2,activation = 'linear')
这是我的模型
state = env.reset()
print(state)
output:
[-0.00315391 -0.0150189 0.01804181 0.02032083]
这就是我得到的模型预测结果
model.predict(state)
output:
[[-0.00028523 0.00031606]
[-0.00135828 0.00150507]
[ 0.00500827 -0.01125371]
[ 0.00564091 -0.01267526]]
为什么Dense(2,activation='linear')
接收二维数组?
我期望输出具有 (2,1) 形状,但为什么模型接收的是 (2,4) 形状?
我发现输出在模型的输出节点和输入形状之间存在关系
您已提供 4
个输入,对于这些 4
个输入,模型预测 4
个输出。由于您的输出层有 2
个神经元,因此每个 4
个输出都有 2
个值。似乎一切都很好。并且输出形状是(4, 2)
(不是(2, 4)
)。
如果您正在考虑它是如何算作 (4, 2)
,那么:要从左侧开始手动查找张量的形状,现在如果您在单个 [
内输入,您将找到 4
1 dimensional tensor
s,因此类似地访问这些张量中的任何一个,你会再次找到 2
0 dimensional tensor
s(即 scalar
s)。由于您已达到 0 dimensional tensor
,现在停止此过程。就是这样 (4, 2)
.
状态的形状是(4,)
,因此模型将其视为4个样本(第一维是样本数)。如果你想传递 1 个具有 4 个特征的样本,形状应该是 (1,4)
(1 个样本,4 个特征),给你 (1,2)
(1 个样本,2 个输出)。
这样传递:
model.predict(np.reshape(state,(1,-1)))
# output e.g.
# array([[ 0.0078704 , -0.00879759]], dtype=float32) #(1,2)
请注意,您的模型应该使用具有 4 个特征的输入构建(例如 input_shape=(4,)
),否则您会出错。如果您只是进行预测,运行 再次定义您的模型。