技術系メモ

メモ。内容は保証しません。

【keras】keras のモデルの保存と読み込み

モデルの保存

# モデルの保存
json_model = model.to_json()
with open("model.json", "w") as f
  json.dump(text, f)

# パラメータの保存
model.save_weights("param.hdf5")

保存したモデルの読み込み

from keras.models import model_from_json

# モデルの読み込み
json_model = json.load(open("model.json"))
model = model_from_json(json_model)

# パラメータの読み込み
model.load_weights("param.hdf5")

【python】【xml】すでにあるxmlに要素を追加

サンプルコード

import xml.etree.ElementTree as ET

tree = ET.ElementTree(file="file.xml") # xmlを読み込む
root = tree.getroot()
element = ET.Element("vType") # 要素の作成
element.set("A", "a")  # 属性の追加
root.insert(0, element)  # 作成した要素

tree = ET.ElementTree(root)
tree.write("file.xml") # 書き込み

sumoの信号機のoffsetについてのメモ

まずは、信号機の設定が記述してあるファイル

net.xml

<tlLogic id="1/2" type="static" programID="0" offset="2"><phase duration="33" state="GGGggrrrrrGGGggrrrrr"/><phase duration="3" state="yyyggrrrrryyyggrrrrr"/><phase duration="6" state="rrrGGrrrrrrrrGGrrrrr"/><phase duration="3" state="rrryyrrrrrrrryyrrrrr"/><phase duration="33" state="rrrrrGGGggrrrrrGGGgg"/><phase duration="3" state="rrrrryyyggrrrrryyygg"/><phase duration="6" state="rrrrrrrrGGrrrrrrrrGG"/><phase duration="3" state="rrrrrrrryyrrrrrrrryy"/>

上記のようにoffsetを設定すると、最初に、一番下のphaseを2ステップ行った後に、一番上のphaseを実行する。

つまり、通常は0からスタートするが、この場合、-2からスタートするというようなこと

基本的に、programはシミュレーション途中では変更できない。additinalを用意すれば、

多少は変更はできるようだが。

To modify the program of a traffic light it is generally necessary to load a new program. However, in the special case that only the offset shall be modified it is also possible to specify a new offset for an existing traffic light id and programID:

http://sumo.dlr.de/wiki/Simulation/Traffic_Lights#Loading_New_TLS-Programs

chrome extensionで現在タブで開いているページのタイトルとurlを取得

以下のコードを同じフォルダにいれる。

基本的に、最初のサンプルプログラムであるhello サンプルを変更しただけ。

manifest.json

{
  "name": "Hello Extensions",
  "description" : "Base Level Extension",
  "version": "1.0",
  "browser_action": {
    "default_popup": "hello.html",
    "default_icon": "hello_extensions.png"
  },
  "permissions": [
    "tabs"
  ],
  "manifest_version": 2,
  "commands": {
    "_execute_browser_action": {
      "suggested_key": {
        "default": "Ctrl+Shift+F",
        "mac": "MacCtrl+Shift+F"
      },
      "description": "Opens hello.html"
    }
  }
}

hello.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<script type="text/javascript" src="main.js"></script>
</head>
<body style="min-width:250px">
<div id="title"></div>
<div id="url"></div>
</body>
</html>

main.js

window.onload = function() {
  chrome.tabs.getSelected(null, function(tab) {
    document.getElementById('title').innerHTML = tab.title;
    document.getElementById('url').innerHTML = tab.url;
    // $B$=$N$^$^Aw?.(B
    var form = document.createElement('form');
    var request = document.createElement('input');
    form.method = 'POST';
    form.action = 'http://0.0.0.0:8000/';
    request.type = 'hidden'; //$BF~NO%U%)!<%`$,I=<($5$l$J$$$h$&$K(B
    request.name = tab.title;
    request.value = tab.url;
    form.appendChild(request);
    document.body.appendChild(form);
    form.submit();  

  });
};