Чтобы добавить к другим вопросам, позвольте мне представить, как я это сделал с помощью функции Python 2.0 с помощью Numpy:
def one_hot(y_):
# Function to encode output labels from number indexes
# e.g.: [[5], [0], [3]] --> [[0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0]]
y_ = y_.reshape(len(y_))
n_values = np.max(y_) + 1
return np.eye(n_values)[np.array(y_, dtype=np.int32)] # Returns FLOATS
Строка n_values = np.max(y_) + 1
может быть жестко закодирована для вас, чтобы использовать хорошую количество нейронов, если вы используете мини-партии, например.
Демо-проект / учебник, в котором эта функция использовалась: https://github.com/guillaume-chevalier/LSTM-Human-Activity-Recognition
sqlite3
в Python может быть немного запутанной. Адаптер базы данных sqlite начинался как отдельный проект pysqlite2 , но для Python 2.5 его версия была включена в стандартную библиотеку Python под именем sqlite3 . Оригинальный адаптер продолжает разрабатываться как отдельный проект, периодически обновляя версию в Python, чтобы соответствовать ей. Если вы пытаетесь использовать более новую версию адаптера, она обычно устанавливается как pysqlite2
, чтобы не противоречить версии, включенной в стандартную библиотеку. И, в зависимости от того, как он был построен, он может ссылаться на другую версию базовой библиотеки sqlite3 database . Поэтому убедитесь, что вы импортируете его правильно:
>>> import sqlite3
>>> sqlite3.version_info
(2, 4, 1)
>>> sqlite3.sqlite_version_info
(3, 6, 11)
>>> from pysqlite2 import dbapi2 as sqlite3
>>> sqlite3.version_info
(2, 5, 5)
>>> sqlite3.sqlite_version_info
(3, 6, 18)
version_info
- это версия адаптера базы данных sqlite3
(pysqlite2
или встроенного sqlite3
). sqlite_version_info
- это версия базовой библиотеки базы данных sqlite3
.
Рекомендуется использовать from ... import ... as sqlite3
, чтобы остальная часть вашего кода не изменялась, если вы переходите от одной версии к другой.
Примечание. enable_load_extension
впервые появился в pysqlite2
2.5.0.
EDIT: enable_load_extension
отключен по умолчанию при создании адаптера , Чтобы включить его, вы можете создать pysqlite2
вручную. Следующий рецепт предполагает систему unix
-y и самую последнюю версию pysqlite2
, которая на момент написания этой статьи составляет 2.5.5.
Во-первых, если вы первоначально установили адаптер через easy_install
удалите его, выполнив первый запуск:
$ sudo /path/to/easy_install -m pysqlite # or whatever package name you first used
Будет выведен какой-то вывод, включая строки, такие как:
Removing pysqlite 2.5.5 from easy-install.pth file
Using /path/to/site-packages/pysqlite-2.5.5-py2.x-something.egg
Удалите яйцо, используя указанное имя файла (имя будет меняться в зависимости от вашей платформы и версии, и может ссылаться на файл или каталог):
$ sudo rm -r /path/to/site-packages/pysqlite-2.5.5-py2.x-something.egg
Теперь загрузите и извлеките исходный архив pysqlite-2.5.5
:
$ mkdir /tmp/build
$ cd /tmp/build
$ curl http://oss.itsystementwicklung.de/download/pysqlite/2.5/2.5.5/pysqlite-2.5.5.tar.gz | tar xz
$ cd pysqlite-2.5.5
Затем отредактируйте файл setup.cfg
, чтобы прокомментировать директиву SQLITE_OMIT_LOAD_EXTENSION
:
$ ed setup.cfg <<EOF
> /SQLITE_OMIT_LOAD_EXTENSION/s/define=/#define=/
> w
> q
> EOF
Поскольку версия sqlite3
настолько старая (3.4.0), вы также должны построить с последним sqlite3
] библиотека. Это облегчено в сценарии pysqlite2
setup.py:
$ /path/to/python2.x setup.py build_static
Это автоматически загрузит последний источник сборки sqlite3 и построит адаптер вместе с -date статически связанную версию sqlite3
.
UPDATE (2015/07/21): В соответствии с последним pysqlite 2.6.3 commit вам нужно загрузить исходный код sqlite на (g19) Теперь установите адаптер:
$ sudo /path/to/python2.x setup.py install
и запустите тесты:
$ cd # somewhere out of the build directory
$ /path/to/python2.x
>>> from pysqlite2 import test
>>> test.test()
и, если
В качестве бонуса, если причина, по которой вы хотите поддерживать расширение загрузки, заключается в использовании полнотекстового расширения sqlite3
, FTS3
, вы должны обнаружить, что это был включен как часть статической библиотеки, и дальнейшая работа не требуется:
>>> from pysqlite2 import dbapi2 as sqlite3
>>> con = sqlite3.connect(":memory:")
>>> con.execute("create virtual table recipe using fts3(name, ingredients)")
<pysqlite2.dbapi2.Cursor object at 0xca5e0>
Вместо стандартного модуля Python sqlite3
вы можете использовать модуль apsw , сторонний модуль SQLite, который более точно следует за API SQLite. Он включает поддержку для загрузки расширений, а также в основном все, что разрешено в SQLite C / C ++ API. Он также старается как можно больше следить за любыми новыми изменениями в SQLite.
Вам нужно посмотреть на свой Python-путь и убедиться, что sqlite, который вы хотите, установлен в более ранней директории, чем встроенный sqlite.
Вы можете увидеть путь с помощью:
import sys
print sys.path
Если вы хотите узнать, откуда находится модуль, попробуйте:
print sqlite3.__file__
У меня есть python 2.7 на машине для Windows, а встроенная sqlite3.sqlite_version - 3.6.x. Выполняя следующие шаги, я смог заставить его использовать sqlite 3.7.9.