{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "import numpy as np\n", "from keras.models import Model\n", "from keras.engine import merge\n", "from keras.layers import Input\n", "from keras.layers.core import Dense, Merge\n", "from keras import backend as K" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def format_decimal(arr, places=6):\n", " return [round(x * 10**places) / 10**places for x in arr]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Merge" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.0] mode: sum**" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (2,)\n", "out: [4.85, 4.27]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_2 = merge([layer_1a, layer_1b], mode='sum')\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.1] mode: mul**" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (2,)\n", "out: [-17.885, -0.9408]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_2 = merge([layer_1a, layer_1b], mode='mul')\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.2] mode: ave**" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (2,)\n", "out: [2.425, 2.135]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_2 = merge([layer_1a, layer_1b], mode='ave')\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.3] mode: max**" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (2,)\n", "out: [7.3, 4.48]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_2 = merge([layer_1a, layer_1b], mode='max')\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.4] mode: concat (1D)**" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (4,)\n", "out: [7.3, -0.21, -2.45, 4.48]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_2 = merge([layer_1a, layer_1b], mode='concat', concat_axis=-1)\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.5] mode: concat (2D, concatAxis=-1)**" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (3, 4)\n", "out: [7.3, -0.21, -2.45, 4.48, 7.3, -0.21, -2.45, 4.48, 7.3, -0.21, -2.45, 4.48]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1a = RepeatVector(3)(layer_1a)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_1b = RepeatVector(3)(layer_1b)\n", "layer_2 = merge([layer_1a, layer_1b], mode='concat', concat_axis=-1)\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.6] mode: concat (2D, concatAxis=-2)**" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (6, 2)\n", "out: [7.3, -0.21, 7.3, -0.21, 7.3, -0.21, -2.45, 4.48, -2.45, 4.48, -2.45, 4.48]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1a = RepeatVector(3)(layer_1a)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_1b = RepeatVector(3)(layer_1b)\n", "layer_2 = merge([layer_1a, layer_1b], mode='concat', concat_axis=-2)\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.7] mode: concat (2D, concatAxis=1)**" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (6, 2)\n", "out: [7.3, -0.21, 7.3, -0.21, 7.3, -0.21, -2.45, 4.48, -2.45, 4.48, -2.45, 4.48]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1a = RepeatVector(3)(layer_1a)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_1b = RepeatVector(3)(layer_1b)\n", "layer_2 = merge([layer_1a, layer_1b], mode='concat', concat_axis=1)\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.8] mode: concat (2D, concatAxis=2)**" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (3, 4)\n", "out: [7.3, -0.21, -2.45, 4.48, 7.3, -0.21, -2.45, 4.48, 7.3, -0.21, -2.45, 4.48]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1a = RepeatVector(3)(layer_1a)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_1b = RepeatVector(3)(layer_1b)\n", "layer_2 = merge([layer_1a, layer_1b], mode='concat', concat_axis=2)\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.9] mode: dot (2D x 2D, dotAxes=1)**" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (2, 2)\n", "out: [-53.655003, 98.112007, 1.5435, -2.8224]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1a = RepeatVector(3)(layer_1a)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_1b = RepeatVector(3)(layer_1b)\n", "layer_2 = merge([layer_1a, layer_1b], mode='dot', dot_axes=1)\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.10] mode: dot (2D x 2D, dotAxes=2)**" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (3, 3)\n", "out: [-18.8258, -18.8258, -18.8258, -18.8258, -18.8258, -18.8258, -18.8258, -18.8258, -18.8258]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1a = RepeatVector(3)(layer_1a)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_1b = RepeatVector(3)(layer_1b)\n", "layer_2 = merge([layer_1a, layer_1b], mode='dot', dot_axes=2)\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.11] mode: cos (2D x 2D, dotAxes=1)**" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (1, 2, 2)\n", "out: [-1.0, 7.972744, 0.125427, -1.0]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1a = RepeatVector(3)(layer_1a)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_1b = RepeatVector(3)(layer_1b)\n", "layer_2 = merge([layer_1a, layer_1b], mode='cos', dot_axes=1)\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[core.Merge.12] mode: cos (2D x 2D, dotAxes=2)**" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in: [0, 0.2, 0.5, -0.1, 1, 2]\n", "in shape: (6,)\n", "out shape: (1, 3, 3)\n", "out: [-0.504843, -0.504843, -0.504843, -0.504843, -0.504843, -0.504843, -0.504843, -0.504843, -0.504843]\n" ] } ], "source": [ "layer_0 = Input(shape=(6,))\n", "layer_1a = Dense(2, activation='linear')(layer_0)\n", "layer_1a = RepeatVector(3)(layer_1a)\n", "layer_1b = Dense(2, activation='linear')(layer_0)\n", "layer_1b = RepeatVector(3)(layer_1b)\n", "layer_2 = merge([layer_1a, layer_1b], mode='cos', dot_axes=2)\n", "model = Model(input=layer_0, output=layer_2)\n", "\n", "W_1a = np.array([0.1, 0.4, 0.5, 0.1, 1, -2, 0, 0.3, 0.2, 0.1, 3, 0]).reshape((6, 2))\n", "b_1a = np.array([0.5, 0.7])\n", "W_1b = np.array([1, 0, -0.9, 0.6, -0.7, 0, 0.2, 0.4, 0, 0, -1, 2.3]).reshape((6, 2))\n", "b_1b = np.array([0.1, -0.2])\n", "model.set_weights([W_1a, b_1a, W_1b, b_1b])\n", "\n", "data_in = [0, 0.2, 0.5, -0.1, 1, 2]\n", "data_in_shape = (6,)\n", "print('in:', data_in)\n", "print('in shape:', data_in_shape)\n", "arr_in = np.array(data_in, dtype='float32').reshape(data_in_shape)\n", "result = model.predict(np.array([arr_in]))\n", "arr_out = result[0]\n", "print('out shape:', arr_out.shape)\n", "data_out = format_decimal(arr_out.ravel().tolist())\n", "print('out:', data_out)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }