培训强化学习代理时,tflearn损失始终为0.0

时间:2017-10-22 16:39:02

标签: python artificial-intelligence reinforcement-learning tflearn openai-gym

我尝试使用此代码训练强化学习代理与健身房和tflearn:

from tflearn import *
import gym
import numpy as np

env = gym.make('CartPole-v0')
x = []
y = []
max_reward = 0

for i in range(1000):
    env.reset()
    while True:
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)
        if done:
            break
        if reward >= max_reward:
            x.append(observation)
            y.append(np.array([action]))
x = np.asarray(x)
y = np.asarray(y)

net = input_data((None,4))
net = fully_connected(net,8,'softmax')
net = fully_connected(net,16,'softmax')
net = fully_connected(net,32,'softmax')
net = fully_connected(net,64,'softmax')
net = fully_connected(net,128,'softmax')
net = fully_connected(net,64,'softmax')
net = fully_connected(net,32,'softmax')
net = fully_connected(net,16,'softmax')
net = fully_connected(net,8,'softmax')
net = fully_connected(net,4,'softmax')
net = fully_connected(net,2,'softmax')
net = fully_connected(net,1)
net = regression(net,optimizer='adam',learning_rate=0.01,loss='categorical_crossentropy',batch_size=1)
model = DNN(net)

model.fit(x,y,10)
model.save('saved/model.tflearn')

问题是,当模型训练时,损失总是0.0。 有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

不确定您的目标是什么,但categorical_crossentropy是用于多类分类的损失函数,但您的网络输出只是一个单位fully_connected(net,1),具有线性激活,这就是您获得的原因损失0.

尝试mean_square甚至binary_crossentropy,您会看到不同的损失值。

我会在最后一层使用sigmoid激活,并依赖其余部分。