📄 input.txt (Text) 1.8 KB 2016-03-08
Source code file for input
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "input.txt",
"description": "Source code file for input",
"dateModified": "2016-03-08",
"dateCreated": "2025-03-23",
"contentSize": "1.8 KB",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/input.txt",
"encodingFormat": "text/plain",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Text"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
🐚 install_keras.sh (Shell) 334 bytes 2016-04-13
Source code file for install keras
| apt-get -y install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
apt-get -y install libblas-dev liblapack-dev libatlas-base-dev gfortran
pip install -U scipy
cd pip install -U keras
pip3 install -U keras
git clone https://github.com/fchollet/keras.git
cd keras/examples
|
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "install_keras.sh",
"description": "Source code file for install keras",
"dateModified": "2016-04-13",
"dateCreated": "2025-03-23",
"contentSize": "334 bytes",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/install_keras.sh",
"encodingFormat": "text/x-sh",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Shell"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
📄 install_keras.sh~ (Text) 331 bytes 2016-04-13
Source code file for install keras
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "install_keras.sh~",
"description": "Source code file for install keras",
"dateModified": "2016-04-13",
"dateCreated": "2025-03-23",
"contentSize": "331 bytes",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/install_keras.sh~",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Text"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
🐍 lstm_text_generation.py (Python) 3.1 KB 2016-04-17
Python module for lstm text generation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | '''Example script to generate text from Nietzsche's writings.
At least 20 epochs are required before the generated text
starts sounding coherent.
It is recommended to run this script on GPU, as recurrent
networks are quite computationally intensive.
If you try this script on new data, make sure your corpus
has at least ~100k characters. ~1M is better.
'''
from __future__ import print_function
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
from keras.utils.data_utils import get_file
import numpy as np
import random
import sys
text = open("input.txt").read().lower()
print('corpus length:', len(text))
chars = set(text)
print('total chars:', len(chars))
char_indices = dict((c, i) for i, c in enumerate(chars))
indices_char = dict((i, c) for i, c in enumerate(chars))
# cut the text in semi-redundant sequences of maxlen characters
maxlen = 40
step = 3
sentences = []
next_chars = []
for i in range(0, len(text) - maxlen, step):
sentences.append(text[i: i + maxlen])
next_chars.append(text[i + maxlen])
print('nb sequences:', len(sentences))
print('Vectorization...')
X = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool)
y = np.zeros((len(sentences), len(chars)), dtype=np.bool)
for i, sentence in enumerate(sentences):
for t, char in enumerate(sentence):
X[i, t, char_indices[char]] = 1
y[i, char_indices[next_chars[i]]] = 1
# build the model: 2 stacked LSTM
print('Build model...')
... [truncated, 52 more lines] ...
|
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "lstm_text_generation.py",
"description": "Python module for lstm text generation",
"dateModified": "2016-04-17",
"dateCreated": "2025-03-23",
"contentSize": "3.1 KB",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/lstm_text_generation.py",
"encodingFormat": "application/x-python",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Python"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
🐍 lstm_text_generation.py~ (Python) 3.1 KB 2016-04-17
Source code file for lstm text generation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | '''Example script to generate text from Nietzsche's writings.
At least 20 epochs are required before the generated text
starts sounding coherent.
It is recommended to run this script on GPU, as recurrent
networks are quite computationally intensive.
If you try this script on new data, make sure your corpus
has at least ~100k characters. ~1M is better.
'''
from __future__ import print_function
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
from keras.utils.data_utils import get_file
import numpy as np
import random
import sys
text = open("input.txt").read().lower()
print('corpus length:', len(text))
chars = set(text)
print('total chars:', len(chars))
char_indices = dict((c, i) for i, c in enumerate(chars))
indices_char = dict((i, c) for i, c in enumerate(chars))
# cut the text in semi-redundant sequences of maxlen characters
maxlen = 40
step = 3
sentences = []
next_chars = []
for i in range(0, len(text) - maxlen, step):
sentences.append(text[i: i + maxlen])
next_chars.append(text[i + maxlen])
print('nb sequences:', len(sentences))
print('Vectorization...')
X = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool)
y = np.zeros((len(sentences), len(chars)), dtype=np.bool)
for i, sentence in enumerate(sentences):
for t, char in enumerate(sentence):
X[i, t, char_indices[char]] = 1
y[i, char_indices[next_chars[i]]] = 1
# build the model: 2 stacked LSTM
print('Build model...')
... [truncated, 52 more lines] ...
|
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "lstm_text_generation.py~",
"description": "Source code file for lstm text generation",
"dateModified": "2016-04-17",
"dateCreated": "2025-03-23",
"contentSize": "3.1 KB",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/lstm_text_generation.py~",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Python"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
📦 onetipp.json (Json) 1.6 KB 2016-04-15
Source code file for onetipp
| {"class_name": "Sequential", "config": [{"class_name": "LSTM", "config": {"inner_activation": "hard_sigmoid", "trainable": true, "inner_init": "orthogonal", "output_dim": 128, "unroll": false, "consume_less": "cpu", "init": "glorot_uniform", "dropout_U": 0.0, "input_dtype": "float32", "batch_input_shape": [null, 40, 42], "input_length": null, "dropout_W": 0.0, "activation": "tanh", "stateful": false, "b_regularizer": null, "U_regularizer": null, "name": "lstm_1", "go_backwards": false, "input_dim": 42, "return_sequences": true, "W_regularizer": null, "forget_bias_init": "one"}}, {"class_name": "Dropout", "config": {"p": 0.2, "trainable": true, "name": "dropout_1"}}, {"class_name": "LSTM", "config": {"U_regularizer": null, "name": "lstm_2", "inner_activation": "hard_sigmoid", "go_backwards": false, "activation": "tanh", "trainable": true, "unroll": false, "consume_less": "cpu", "stateful": false, "init": "glorot_uniform", "inner_init": "orthogonal", "dropout_U": 0.0, "dropout_W": 0.0, "input_dim": 128, "return_sequences": false, "b_regularizer": null, "W_regularizer": null, "output_dim": 128, "forget_bias_init": "one", "input_length": null}}, {"class_name": "Dropout", "config": {"p": 0.2, "trainable": true, "name": "dropout_2"}}, {"class_name": "Dense", "config": {"W_constraint": null, "b_constraint": null, "name": "dense_1", "activity_regularizer": null, "trainable": true, "init": "glorot_uniform", "input_dim": null, "b_regularizer": null, "W_regularizer": null, "activation": "linear", "output_dim": 42}}, {"class_name": "Activation", "config": {"activation": "softmax", "trainable": true, "name": "activation_1"}}]}
|
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "onetipp.json",
"description": "Source code file for onetipp",
"dateModified": "2016-04-15",
"dateCreated": "2025-03-23",
"contentSize": "1.6 KB",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/onetipp.json",
"encodingFormat": "application/json",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Json"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
🐍 onetipp_demo - Kopie.py (Python) 3.2 KB 2016-04-13
Python module for onetipp demo Kopie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | '''Example script to generate text from Nietzsche's writings.
At least 20 epochs are required before the generated text
starts sounding coherent.
It is recommended to run this script on GPU, as recurrent
networks are quite computationally intensive.
If you try this script on new data, make sure your corpus
has at least ~100k characters. ~1M is better.
'''
from __future__ import print_function
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
from keras.utils.data_utils import get_file
import numpy as np
import random
import sys
path = get_file('nietzsche.txt', origin="https://www.buzzerstar.com/input.txt")
text = open(path).read().lower()
print('corpus length:', len(text))
chars = set(text)
print('total chars:', len(chars))
char_indices = dict((c, i) for i, c in enumerate(chars))
indices_char = dict((i, c) for i, c in enumerate(chars))
# cut the text in semi-redundant sequences of maxlen characters
maxlen = 40
step = 3
sentences = []
next_chars = []
for i in range(0, len(text) - maxlen, step):
sentences.append(text[i: i + maxlen])
next_chars.append(text[i + maxlen])
print('nb sequences:', len(sentences))
print('Vectorization...')
X = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool)
y = np.zeros((len(sentences), len(chars)), dtype=np.bool)
for i, sentence in enumerate(sentences):
for t, char in enumerate(sentence):
X[i, t, char_indices[char]] = 1
y[i, char_indices[next_chars[i]]] = 1
# build the model: 2 stacked LSTM
... [truncated, 53 more lines] ...
|
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "onetipp_demo - Kopie.py",
"description": "Python module for onetipp demo Kopie",
"dateModified": "2016-04-13",
"dateCreated": "2025-03-23",
"contentSize": "3.2 KB",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/onetipp_demo - Kopie.py",
"encodingFormat": "application/x-python",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Python"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
🐍 onetipp_demo.py (Python) 3.5 KB 2016-04-13
Python module for onetipp demo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | '''Example script to generate text from Nietzsche's writings.
At least 20 epochs are required before the generated text
starts sounding coherent.
It is recommended to run this script on GPU, as recurrent
networks are quite computationally intensive.
If you try this script on new data, make sure your corpus
has at least ~100k characters. ~1M is better.
'''
from __future__ import print_function
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
from keras.utils.data_utils import get_file
import numpy as np
import random
import sys
import codecs
'''
path = get_file('nietzsche.txt', origin="https://www.buzzerstar.com/input.txt")
text = open(path).read().lower()
'''
'''
Added by basti
'''
file = "input.txt"
f = codecs.open(file, 'r', 'UTF-8')
text = f.read()
print('corpus length:', len(text))
chars = set(text)
print('total chars:', len(chars))
char_indices = dict((c, i) for i, c in enumerate(chars))
indices_char = dict((i, c) for i, c in enumerate(chars))
# cut the text in semi-redundant sequences of maxlen characters
maxlen = 40
step = 3
sentences = []
next_chars = []
for i in range(0, len(text) - maxlen, step):
sentences.append(text[i: i + maxlen])
next_chars.append(text[i + maxlen])
print('nb sequences:', len(sentences))
print('Vectorization...')
... [truncated, 67 more lines] ...
|
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "onetipp_demo.py",
"description": "Python module for onetipp demo",
"dateModified": "2016-04-13",
"dateCreated": "2025-03-23",
"contentSize": "3.5 KB",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/onetipp_demo.py",
"encodingFormat": "application/x-python",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Python"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
🐍 onetipp_demo.py~ (Python) 3.2 KB 2016-04-13
Source code file for onetipp demo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | '''Example script to generate text from Nietzsche's writings.
At least 20 epochs are required before the generated text
starts sounding coherent.
It is recommended to run this script on GPU, as recurrent
networks are quite computationally intensive.
If you try this script on new data, make sure your corpus
has at least ~100k characters. ~1M is better.
'''
from __future__ import print_function
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
from keras.utils.data_utils import get_file
import numpy as np
import random
import sys
path = get_file('nietzsche.txt', origin="https://s3.amazonaws.com/text-datasets/nietzsche.txt")
text = open(path).read().lower()
print('corpus length:', len(text))
chars = set(text)
print('total chars:', len(chars))
char_indices = dict((c, i) for i, c in enumerate(chars))
indices_char = dict((i, c) for i, c in enumerate(chars))
# cut the text in semi-redundant sequences of maxlen characters
maxlen = 40
step = 3
sentences = []
next_chars = []
for i in range(0, len(text) - maxlen, step):
sentences.append(text[i: i + maxlen])
next_chars.append(text[i + maxlen])
print('nb sequences:', len(sentences))
print('Vectorization...')
X = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool)
y = np.zeros((len(sentences), len(chars)), dtype=np.bool)
for i, sentence in enumerate(sentences):
for t, char in enumerate(sentence):
X[i, t, char_indices[char]] = 1
y[i, char_indices[next_chars[i]]] = 1
# build the model: 2 stacked LSTM
... [truncated, 53 more lines] ...
|
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "onetipp_demo.py~",
"description": "Source code file for onetipp demo",
"dateModified": "2016-04-13",
"dateCreated": "2025-03-23",
"contentSize": "3.2 KB",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/onetipp_demo.py~",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Python"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
🐍 recurrent.py (Python) 5.6 KB 2016-04-18
Python module for recurrent
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | import types
import theano
import theano.tensor as T
from keras.layers.recurrent import Recurrent, GRU
from keras import backend as K
def _get_reversed_input(self, train=False):
if hasattr(self, 'previous'):
X = self.previous.get_output(train=train)
else:
X = self.input
return X[::-1]
class Bidirectional(Recurrent):
def __init__(self, forward=None, backward=None, return_sequences=False,
forward_conf=None, backward_conf=None):
assert forward is not None or forward_conf is not None, "Must provide a forward RNN or a forward configuration"
assert backward is not None or backward_conf is not None, "Must provide a backward RNN or a backward configuration"
super(Bidirectional, self).__init__()
if forward is not None:
self.forward = forward
else:
# Must import inside the function, because in order to support loading
# we must import this module inside layer_utils... ugly
from keras.utils.layer_utils import container_from_config
self.forward = container_from_config(forward_conf)
if backward is not None:
self.backward = backward
else:
from keras.utils.layer_utils import container_from_config
self.backward = container_from_config(backward_conf)
self.return_sequences = return_sequences
self.output_dim = self.forward.output_dim + self.backward.output_dim
if not (self.return_sequences == self.forward.return_sequences == self.backward.return_sequences):
raise ValueError("Make sure 'return_sequences' is equal for self,"
" forward and backward.")
def build(self):
self.input = T.tensor3()
self.forward.input = self.input
self.backward.input = self.input
self.forward.build()
self.backward.build()
self.trainable_weights = self.forward.trainable_weights + self.backward.trainable_weights
def set_previous(self, layer):
... [truncated, 90 more lines] ...
|
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "recurrent.py",
"description": "Python module for recurrent",
"dateModified": "2016-04-18",
"dateCreated": "2025-03-23",
"contentSize": "5.6 KB",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/recurrent.py",
"encodingFormat": "application/x-python",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Python"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
🐍 stateful_text_generation.py (Python) 10.6 KB 2016-04-18
Python module for stateful text generation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | from __future__ import print_function
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
from keras.datasets.data_utils import get_file
import numpy as np
import random, sys
from recurrent import StatefulGRU as SGRU
'''
Example modified from Keras's script to generate text from Nietzsche's writings.
At least 20 epochs are required before the generated text
starts sounding coherent.
It is recommended to run this script on GPU, as recurrent
networks are quite computationally intensive.
If you try this script on new data, make sure your corpus
has at least ~100k characters. ~1M is better.
'''
import numpy as np
import keras.backend as K
from keras.callbacks import Callback
class ResetRNNState(Callback):
"""
This is supposed to be used with stateful RNNs like
seya.layers.recurrent.StatefulGRU
h: the rnn state
func: a function that returns true when the state should be reset to zero
"""
def __init__(self, h, func):
self.h = h
self.func = func
def on_batch_end(self, batch, logs={}):
if self.func(batch, logs):
self.h.set_value(self.h.get_value()*0)
class RenormalizeWeight(Callback):
def __init__(self, W, transpose=False):
Callback.__init__(self)
self.W = W
self.W_shape = K.get_value(self.W).shape
self.transpose = transpose
... [truncated, 277 more lines] ...
|
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "stateful_text_generation.py",
"description": "Python module for stateful text generation",
"dateModified": "2016-04-18",
"dateCreated": "2025-03-23",
"contentSize": "10.6 KB",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/stateful_text_generation.py",
"encodingFormat": "application/x-python",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Python"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}
🐍 stateful_text_generation.py~ (Python) 3.7 KB 2016-04-18
Source code file for stateful text generation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | from __future__ import print_function
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
from keras.datasets.data_utils import get_file
import numpy as np
import random, sys
from seya.layers.recurrent import StatefulGRU as SGRU
from seya.callbacks import ResetRNNState
'''
Example modified from Keras's script to generate text from Nietzsche's writings.
At least 20 epochs are required before the generated text
starts sounding coherent.
It is recommended to run this script on GPU, as recurrent
networks are quite computationally intensive.
If you try this script on new data, make sure your corpus
has at least ~100k characters. ~1M is better.
'''
#path = get_file('nietzsche.txt', origin="https://s3.amazonaws.com/text-datasets/nietzsche.txt")
text = open("input.txt").read().lower()
print('corpus length:', len(text))
chars = set(text)
print('total chars:', len(chars))
char_indices = dict((c, i) for i, c in enumerate(chars))
indices_char = dict((i, c) for i, c in enumerate(chars))
# cut the text in semi-redundant sequences of maxlen characters
batch_size = 128
maxlen = 20
step = 3
sentences = []
next_chars = []
for i in range(0, len(text) - maxlen, step):
sentences.append(text[i : i + maxlen])
next_chars.append(text[i + maxlen])
print('nb sequences:', len(sentences))
print('Vectorization...')
X = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool)
y = np.zeros((len(sentences), len(chars)), dtype=np.bool)
for i, sentence in enumerate(sentences):
for t, char in enumerate(sentence):
X[i, t, char_indices[char]] = 1
y[i, char_indices[next_chars[i]]] = 1
... [truncated, 60 more lines] ...
|
{
"@context": "https://schema.org",
"@type": "SoftwareSourceCode",
"name": "stateful_text_generation.py~",
"description": "Source code file for stateful text generation",
"dateModified": "2016-04-18",
"dateCreated": "2025-03-23",
"contentSize": "3.7 KB",
"contentUrl": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/stateful_text_generation.py~",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "Python"
},
"codeRepository": "https://www.artikelschreiber.com/opensource/onetipp/04_IT/14_Framework/Keras/"
}