私はゲームをするためにCNNを実装しようとしています。 私はtheano/lasagneでpythonを使用しています。私はネットワークを構築して、それを訓練する方法を考え出しています。畳み込みニューラルネットワーク:それを訓練する方法? (監督なし)
は、だから今、私は32件の州のバッチを持っており、そのバッチアクションの各状態と、そのアクションの期待報酬ため。
これらの状態でこれらの行動がこれらの報酬につながることを知るためにネットワークを鍛えることができますか?
編集:私の問題を明らかにする。私はこのビットとのトラブルを抱えているhttp://pastebin.com/fgGCabzR
:
def _train(self):
# Prepare Theano variables for inputs and targets
input_var = T.tensor4('inputs')
target_var = T.ivector('targets')
states = T.tensor4('states')
print "sampling mini batch..."
# sample a mini_batch to train on
mini_batch = random.sample(self._observations, self.MINI_BATCH_SIZE)
# get the batch variables
previous_states = [d[self.OBS_LAST_STATE_INDEX] for d in mini_batch]
actions = [d[self.OBS_ACTION_INDEX] for d in mini_batch]
rewards = [d[self.OBS_REWARD_INDEX] for d in mini_batch]
current_states = np.array([d[self.OBS_CURRENT_STATE_INDEX] for d in mini_batch])
agents_expected_reward = []
# print np.rollaxis(current_states, 3, 1).shape
print "compiling current states..."
current_states = np.rollaxis(current_states, 3, 1)
current_states = theano.compile.sharedvalue.shared(current_states)
print "getting network output from current states..."
agents_reward_per_action = lasagne.layers.get_output(self._output_layer, current_states)
print "rewards adding..."
for i in range(len(mini_batch)):
if mini_batch[i][self.OBS_TERMINAL_INDEX]:
# this was a terminal frame so need so scale future reward...
agents_expected_reward.append(rewards[i])
else:
agents_expected_reward.append(
rewards[i] + self.FUTURE_REWARD_DISCOUNT * np.max(agents_reward_per_action[i].eval()))
# figure out how to train the model (self._output_layer) with previous_states,
# actions and agent_expected_rewards
私はそうprevious_states、アクションとagent_expected_rewardsを使用してモデルを更新したいhttp://pastebin.com/zY8w98Ng ヘビのインポート:ここ
は私の完全なコードですそれらの行動がそれらの報酬に結びつくことを知ること。
私はそれがこのようなものに見えるかもしれません期待して:私はちょうどネットワークを構築するとき、私はそれらを指定していないので、ギブンスがモデルに影響を与えるだろうか得ることはありません
train_model = theano.function(inputs=[input_var],
outputs=self._output_layer,
givens={
states: previous_states,
rewards: agents_expected_reward
expected_rewards: agents_expected_reward)
を。私はtheanoとlasagneのドキュメンテーションでそれを見つけることができません。
どのようにモデル/ネットワークを更新して「学習する」ことができますか?
まだ明確でない場合は、まだ必要な情報についてコメントしてください。私は数日間これを理解しようとしてきました。