Keras backends

"バックエンド"とは?

Kerasはモデルレベルのライブラリで,深層学習モデルを開発するための高水準な構成要素を提供します.テンソル積,畳み込みなどのような低水準の操作をKeras自身で扱うことはありません.その代わりに,Kerasの"バックエンドエンジン"としての役割を果たし,そのような操作を行うために特化し,また最適化されたテンソルを取り扱うライブラリに依存しています.唯一のテンソルのライブラリを選び,そのライブラリに束縛されたKerasの実装を行うのではなく,Kerasはモジュール方式でこの問題を扱い,いくつかの異なるバックエンドエンジンをKerasにシームレスに接続できます.

現在は,Kerasは3つのバックエンドが利用可能で,それはTensorFlowバックエンドとTheanoバックエンド,そしてCNTKバックエンドです.

  • TensorFlow はGoogle, Inc.により開発されたオープンソースで,テンソルをシンボリックに操作ができるフレームワークです.
  • Theano はモントリオール大学のLISA/MILA Labにより開発されたオープンソースで,テンソルをシンボリックに操作ができるフレームワークです.
  • CNTK はMicrosoftによって開発された深層学習のためのcommercial-grade toolkitというオープンソースです.

将来的に,さらにバックエンドを追加する予定です.


バックエンドの切り替え

少なくとも一度Kerasを実行したら,以下にあるKerasの設定ファイルを見つけるでしょう.

$HOME/.keras/keras.json

もしそこにこのファイルがなければ,あなたが作成できます.

Windows ユーザへ注意: $HOME%USERPROFILE% に変更してください.

デフォルトの設定ファイルはおそらく以下のように見えるでしょう:

{
    "image_data_format": "channels_last",
    "epsilon": 1e-07,
    "floatx": "float32",
    "backend": "tensorflow"
}

backendフィールドを"theano""tensorflow""cntk"に変えるだけで,次回の実行時から新しい設定を利用します.

環境変数KERAS_BACKENDも定義することができて,かつあなたの設定ファイルで定義されているものを上書きします:

KERAS_BACKEND=tensorflow python -c "from keras import backend"
Using TensorFlow backend.

keras.json の詳細

{
    "image_data_format": "channels_last",
    "epsilon": 1e-07,
    "floatx": "float32",
    "backend": "tensorflow"
}

$HOME/.keras/keras.jsonを編集することでこれらの設定を変更できます.

  • image_data_format: 文字列,"channels_last""channels_first" のいずれか.Kerasが従うデータのフォーマット規則を指定します. (keras.backend.image_data_format() がこれを返します.)
  • 2次元データ (例えば画像) に対しては, "channels_last"(rows, cols, channels) とみなし,"channels_first"(channels, rows, cols)とみなします.
  • 3次元データに対しては, "channels_last"(conv_dim1, conv_dim2, conv_dim3, channels) とみなし, "channels_first"(channels, conv_dim1, conv_dim2, conv_dim3) とみなします.
  • epsilon: float,いくつかの操作で0除算を避けるために使う微小量定数.
  • floatx: 文字列,"float16""float32",か "float64".デフォルトの浮動小数点精度.
  • backend: 文字列,"tensorflow""theano""cntk"

新しいコードを書くための抽象的なKerasバックエンドの利用

もし,あなたがTheano(th)とTesorFlow(tf)の両方で互換性があるように記述できるKerasモジュールが欲しいときは,抽象的なKerasバックエンドAPIを通じて書く必要があります.以下は導入部になります.

あなたは以下を通じてバックエンドモジュールをインポートできます:

from keras import backend as K

以下のコードは入力のプレースホルダーのインスタンスを作成します. これはtf.placeholder()th.tensor.matrix(),またはth.tensor.tensor3(),などと同じです.

input = K.placeholder(shape=(2, 4, 5))
# 以下も動作します:
input = K.placeholder(shape=(None, 4, 5))
# 以下も動作します:
input = K.placeholder(ndim=3)

以下のコードは共有変数のインスタンスを作成します. これはtf.variable(),またはth.shared()と同じことです.

import numpy as np
val = np.random.random((3, 4, 5))
var = K.variable(value=val)

# すべて0の変数:
var = K.zeros(shape=(3, 4, 5))
# すべて1の変数:
var = K.ones(shape=(3, 4, 5))

あなたが必要とするであろう大抵のテンソルの操作はTensorFlowやTheanoにおいて行うように実行できます:

b = K.random_uniform_variable(shape=(3, 4)). # 一様分布
c = K.random_normal_variable(shape=(3, 4)). # ガウス分布
d = K.random_normal_variable(shape=(3, 4)).
# テンソルの計算
a = b + c * K.abs(d)
c = K.dot(a, K.transpose(b))
a = K.sum(b, axis=1)
a = K.softmax(b)
a = K.concatenate([b, c], axis=-1)
# などなど...

バックエンド関数

backend

backend()

現在のバックエンドを決定するためのアクセス可能なメソッド.

戻り値

文字列,現在利用しているKerasバックエンドの名前.

>>> keras.backend.backend()
'tensorflow'

epsilon

epsilon()

数値演算で使われる微小量を返します.

戻り値

浮動小数点数.

>>> keras.backend.epsilon()
1e-08

set_epsilon

set_epsilon(e)

数値演算で使われる微小量をセットします.

引数

  • e: 浮動小数点数,新たな微小量(epsilon).

>>> from keras import backend as K
>>> K.epsilon()
1e-08
>>> K.set_epsilon(1e-05)
>>> K.epsilon()
1e-05

floatx

floatx()

デフォルトのfloat型を文字列で返します(e.g. 'float16', 'float32', 'float64').

戻り値

文字列,現在のデフォルトのfloat型.

>>> keras.backend.floatx()
'float32'

set_floatx

set_floatx(floatx)

デフォルトのfloat型をセットします.

引数

  • floatx: 'float16','float32',または'float64'の文字列.

>>> from keras import backend as K
>>> K.floatx()
'float32'
>>> K.set_floatx('float16')
>>> K.floatx()
'float16'

cast_to_floatx

cast_to_floatx(x)

Numpy 配列をKerasのfloat型にキャストします.

引数

  • x: Numpy 配列

戻り値

新しい型にキャストされた同じNumpy 配列.

>>> from keras import backend as K
>>> K.floatx()
'float32'
>>> arr = numpy.array([1.0, 2.0], dtype='float64')
>>> arr.dtype
dtype('float64')
>>> new_arr = K.cast_to_floatx(arr)
>>> new_arr
array([ 1., 2], dtype=float32)
>>> new_arr.dtype
dtype('float32')

image_data_format

image_data_format()

画像におけるデフォルトのフォーマット規則('channels_first' か 'channels_last')を返します.

戻り値

'channels_first',または'channels_last'のどちらかの文字列.

>>> keras.backend.image_data_format()
'channels_first'

set_image_data_format

set_image_data_format(data_format)

デフォルトのフォーマット規則をセットします.

引数

  • data_format: 'channels_first',または'channels_last'の文字列.

>>> from keras import backend as K
>>> K.image_data_format()
'channels_first'
>>> K.set_image_data_format('channels_last')
>>> K,image_data_format()
'channels_last'

is_keras_tensor

is_keras_tensor(x)

xがKerasのテンソルかどうかを返します.

引数

  • x: 潜在的なテンソル.

戻り値

真理値: 引数がKerasのテンソルかどうか.

>>> from keras import backend as K
>>> np_var = numpy.array([1, 2])
>>> K.is_keras_tensor(np_var)
False
>>> keras_var = K.variable(np_var)
>>> K.is_keras_tensor(keras_var) # variable はテンソルではない.
False
>>> keras_placeholder = K.placeholder(shape=(2, 4, 5))
>>> K.is_keras_tensor(keras_placeholder) # placeholder はテンソル.
True

set_image_dim_ordering

set_image_dim_ordering(dim_ordering)

image_data_format に対するレガシーなセッター.

引数

  • dim_ordering: tf,またはthの文字列.

>>> from keras import backend as K
>>> K.image_data_format()
'channels_first'
>>> K.set_image_data_format('channels_last')
>>> K.image_data_format()
'channels_last'

Raises

  • ValueError: 無効なdim_orderingが与えられた場合.

image_dim_ordering

image_dim_ordering()

image_data_format に対するレガシーなゲッター.

戻り値

'th',または'tf'のどちらかの文字列.


get_uid

get_uid(prefix='')

デフォルトのグラフにおけるuidを取得します.

引数

  • prefix: グラフにおける任意の接頭語.

戻り値

グラフにおける唯一の識別子.


reset_uids

reset_uids()

グラフの識別子をリセットします.


constant

constant(value, dtype=None, shape=None, name=None)

引数

  • value: 定数,またはリスト.
  • dtype: 返されたテンソルに対する要素の型.
  • shape: 返されたテンソルに対する任意の次元.
  • name: テンソルの任意の名前.

戻り値

不変のテンソル.


placeholder

placeholder(shape=None, ndim=None, dtype=None, sparse=False, name=None)

プレースホルダーのテンソルをインスタンス化し,それを返します.

引数

  • shape: プレースホルダーのshape(整数のタプル,Noneを含んでいても構いません).
  • ndim: テンソルの軸の数.少なくとも{shape, ndim}から一つ指定する必要があります.両方が指定されると,shapeが使われます.
  • dtype: プレースホルダーの型.
  • sparse: プレースホルダーがスパースの型を持つべきかどうかの真理値.
  • name: このプレースホルダーに対する任意の名前を表す文字列.

戻り値

テンソルのインスタンス(Kerasのメタ情報が含まれています).

>>> from keras import backend as K
>>> input_ph = K.placeholder(shape=(2, 4, 5))
>>> input_ph._keras_shape
(2, 4, 5)
>>> input_ph
<tf.Tensor 'Placeholder_4:0' shape=(2, 4, 5) dtype=float32>

shape

shape(x)

テンソル,または変数のshapeを返します.

引数

  • x: テンソル,または変数.

戻り値

テンソルで表されたshape.

__Tensorflow example__

>>> from keras import backend as K
>>> tf_session = K.get_session()
>>> val = np.array([[1, 2], [3, 4]])
>>> kvar = K.variable(value=val)
>>> input = keras.backend.placeholder(shape=(2, 4, 5))
>>> K.shape(kvar)
<tf.Tensor 'Shape_8:0' shape=(2,) dtype=int32>
>>> K.shape(input)
<tf.Tensor 'Shape_9:0' shape=(3,) dtype=int32>
__To get integer shape (Instead, you can use K.int_shape(x))__

>>> K.shape(kvar).eval(session=tf_session)
array([2, 2], dtype=int32)
>>> K.shape(input).eval(session=tf_session)
array([2, 4, 5], dtype=int32)


int_shape

int_shape(x)

整数,またはNoneからなるタプルとしての変数,またはテンソルのshapeを返します.

引数

  • x: テンソル,または変数.

戻り値

整数のタプル(またはNone).

>>> from keras import backend as K
>>> input = K.placeholder(shape=(2, 4, 5))
>>> K.int_shape(input)
(2, 4, 5)
>>> val = np.array([[1, 2], [3, 4]])
>>> kvar = K.variable(value=val)
>>> K.int_shape(kvar)
(2, 2)

ndim

ndim(x)

テンソルの軸の数を整数で返します.

引数

  • x: テンソル,または変数.

戻り値

軸の数を表す整数(スカラー).

>>> from keras import backend as K
>>> input = K.placeholder(shape=(2, 4, 5))
>>> val = np.array([[1, 2], [3, 4]])
>>> kvar = K.variable(value=val)
>>> K.ndim(input)
3
>>> K.ndim(kvar)
2

dtype

dtype(x)

Kerasのテンソル,または変数のdtypeを文字列で返します.

引数

  • x: テンソル,または変数.

戻り値

xのdtypeを表す文字列.

>>> from keras import backend as K
>>> K.dtype(K.placeholder(shape=(2,4,5)))
'float32'
>>> K.dtype(K.placeholder(shape=(2,4,5), dtype='float32'))
'float32'
>>> K.dtype(K.placeholder(shape=(2,4,5), dtype='float64'))
'float64'
__Keras variable__

>>> kvar = K.variable(np.array([[1, 2], [3, 4]]))
>>> K.dtype(kvar)
'float32_ref'
>>> kvar = K.variable(np.array([[1, 2], [3, 4]]), dtype='float32')
>>> K.dtype(kvar)
'float32_ref'

eval

eval(x)

テンソルの変数値を評価します.

引数

  • x: 変数.

戻り値

Numpy 配列.

>>> from keras import backend as K
>>> kvar = K.variable(np.array([[1, 2], [3, 4]]), dtype='float32')
>>> K.eval(kvar)
array([[ 1.,  2.],
   [ 3.,  4.]], dtype=float32)

zeros

zeros(shape, dtype=None, name=None)

全要素が0の変数をインスタンス化し,それを返します.

引数

  • shape: 整数のタプル.返されたKerasの変数に対するshape.
  • dtype: 文字列.返されたKerasの変数に対するデータの型.
  • name: 文字列.返されたKerasの変数に対する名前.

戻り値

0.0で埋まった変数(Kerasのメタ情報が含まれています).

>>> from keras import backend as K
>>> kvar = K.zeros((3,4))
>>> K.eval(kvar)
array([[ 0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.]], dtype=float32)

ones

ones(shape, dtype=None, name=None)

全要素が1の変数をインスタンス化し,それを返します.

引数

  • shape: 整数のタプル.返されたKerasの変数に対するshape.
  • dtype: 文字列.返されたKerasの変数に対するデータの型.
  • name: 文字列.返されたKerasの変数に対する名前.

戻り値

1.0で埋まった変数.

>>> from keras import backend as K
>>> kvar = K.ones((3,4))
>>> K.eval(kvar)
array([[ 1.,  1.,  1.,  1.],
   [ 1.,  1.,  1.,  1.],
   [ 1.,  1.,  1.,  1.]], dtype=float32)

eye

eye(size, dtype=None, name=None)

単位行列をインスタンス化し,それを返します.

引数

  • shape: 整数のタプル.返されたKerasの変数に対するshape.
  • dtype: 文字列.返されたKerasの変数に対するデータの型.
  • name: 文字列.返されたKerasの変数に対する名前.

戻り値

単位行列を表すKerasの変数.

>>> from keras import backend as K
>>> kvar = K.eye(3)
>>> K.eval(kvar)
array([[ 1.,  0.,  0.],
   [ 0.,  1.,  0.],
   [ 0.,  0.,  1.]], dtype=float32)

zeros_like

zeros_like(x, dtype=None, name=None)

別のテンソルと同じshapeを持つ全要素が0の変数のインスタンスを作成します.

引数

  • x: Kerasのテンソル,または変数.
  • dtype: 文字列.返されたKerasの変数に対するデータの型.
  • name: 文字列.返されたKerasの変数に対する名前.

戻り値

xのshapeを持つ全要素が0のKerasの変数.

>>> from keras import backend as K
>>> kvar = K.variable(np.random.random((2,3)))
>>> kvar_zeros = K.zeros_like(kvar)
>>> K.eval(kvar_zeros)
array([[ 0.,  0.,  0.],
   [ 0.,  0.,  0.]], dtype=float32)

ones_like

ones_like(x, dtype=None, name=None)

別のテンソルと同じshapeを持つ全要素が1の変数のインスタンスを作成します.

引数

  • x: Kerasのテンソル,または変数.
  • dtype: 文字列.返されたKerasの変数に対するデータの型.
  • name: 文字列.返されたKerasの変数に対する名前.

戻り値

xのshapeを持つ全要素が1のKerasの変数.

>>> from keras import backend as K
>>> kvar = K.variable(np.random.random((2,3)))
>>> kvar_ones = K.ones_like(kvar)
>>> K.eval(kvar_ones)
array([[ 1.,  1.,  1.],
   [ 1.,  1.,  1.]], dtype=float32)

identity

identity(x)

入力されたテンソルと同じ内容を持つテンソルを返します.

引数

  • x: テンソル.

戻り値

同じshape,型,及び内容を持つテンソル.


random_uniform_variable

random_uniform_variable(shape, low, high, dtype=None, name=None, seed=None)

一様分布からサンプリングされた値を持つ変数のインスタンスを作成します.

引数

  • shape: 整数のタプル.返されたKerasの変数に対するshape.
  • low: 浮動小数点数.出力の区間における下限.
  • high: 浮動小数点数.出力の区間における上限.
  • dtype: 文字列.返されたKerasの変数に対するデータの型.
  • name: 文字列.返されたKerasの変数に対する名前.
  • seed: 整数.ランダムシード値.

戻り値

サンプリング値で埋まったKerasの変数.

__TensorFlow example__

>>> kvar = K.random_uniform_variable((2,3), 0, 1)
>>> kvar
<tensorflow.python.ops.variables.Variable object at 0x10ab40b10>
>>> K.eval(kvar)
array([[ 0.10940075,  0.10047495,  0.476143  ],
   [ 0.66137183,  0.00869417,  0.89220798]], dtype=float32)

random_normal_variable

random_normal_variable(shape, mean, scale, dtype=None, name=None, seed=None)

ガウス分布からサンプリングされた値を持つ変数のインスタンスを作成します.

引数

  • shape: 整数のタプル.返されたKerasの変数に対するshape.
  • mean: 浮動小数点数.ガウス分布の平均.
  • scale: 浮動小数点数.ガウス分布の標準偏差.
  • dtype: 文字列.返されたKerasの変数に対するデータの型.
  • name: 文字列.返されたKerasの変数に対する名前.
  • seed: 整数.ランダムシード値.

戻り値

サンプリング値で埋まったKerasの変数.

__TensorFlow example__

>>> kvar = K.random_normal_variable((2,3), 0, 1)
>>> kvar
<tensorflow.python.ops.variables.Variable object at 0x10ab12dd0>
>>> K.eval(kvar)
array([[ 1.19591331,  0.68685907, -0.63814116],
   [ 0.92629528,  0.28055015,  1.70484698]], dtype=float32)

count_params

count_params(x)

Kerasの変数におけるスカラーの数を返します.

引数

  • x: Kerasの変数.

戻り値

x におけるスカラーの数を表す整数.

>>> kvar = K.zeros((2,3))
>>> K.count_params(kvar)
6
>>> K.eval(kvar)
array([[ 0.,  0.,  0.],
   [ 0.,  0.,  0.]], dtype=float32)

cast

cast(x, dtype)

テンソルを異なる型にキャストします.

Kerasの変数をキャストできますが,Kerasのテンソルが返されます.

引数

  • x: Kerasのテンソル(または変数).
  • dtype: 文字列.'float16''float32',または'float64'のいずれか.

戻り値

dtypeを持つKerasのテンソル.

>>> from keras import backend as K
>>> input = K.placeholder((2, 3), dtype='float32')
>>> input
<tf.Tensor 'Placeholder_2:0' shape=(2, 3) dtype=float32>
__It doesn't work in-place as below.__

>>> K.cast(input, dtype='float16')
<tf.Tensor 'Cast_1:0' shape=(2, 3) dtype=float16>
>>> input
<tf.Tensor 'Placeholder_2:0' shape=(2, 3) dtype=float32>
__you need to assign it.__

>>> input = K.cast(input, dtype='float16')
>>> input
<tf.Tensor 'Cast_2:0' shape=(2, 3) dtype=float16>

update

update(x, new_x)

xの値をnew_xのものに更新する.

引数

  • x: 変数.
  • new_x: xと同じshapeを持つテンソル.

戻り値

更新されたx


update_add

update_add(x, increment)

xの値をincrementで加算することで更新する.

引数

  • x: 変数.
  • increment: xと同じshapeを持つテンソル.

戻り値

更新されたx


update_sub

update_sub(x, decrement)

xの値をdecrementで加算することで更新する.

引数

  • x: 変数.
  • decrement: xと同じshapeを持つテンソル.

戻り値

更新されたx


moving_average_update

moving_average_update(x, value, momentum)

変数における移動平均を計算します.

引数

  • x: 変数.
  • value: variableと同じshapeを持つテンソル.
  • momentum: 移動平均のモーメンタム.

戻り値

変数を更新するための命令.


dot

dot(x, y)

2つのテンソル(かつ/または変数)を掛け合わせ,テンソルを返します.

n階テンソルにn次元のを掛ける場合,Theanoの振る舞いを再現します(e.g. (2, 3).(4, 3, 5) = (2, 4, 5)).

引数

  • x: テンソル,または変数.
  • y: テンソル,または変数.

戻り値

xyでドット積を行なったテンソル.

__dot product between tensors__

>>> x = K.placeholder(shape=(2, 3))
>>> y = K.placeholder(shape=(3, 4))
>>> xy = K.dot(x, y)
>>> xy
<tf.Tensor 'MatMul_9:0' shape=(2, 4) dtype=float32>
__dot product between tensors__

>>> x = K.placeholder(shape=(32, 28, 3))
>>> y = K.placeholder(shape=(3, 4))
>>> xy = K.dot(x, y)
>>> xy
<tf.Tensor 'MatMul_9:0' shape=(32, 28, 4) dtype=float32>
__Theano-like behavior example__

>>> x = K.random_uniform_variable(shape=(2, 3), low=0, high=1)
>>> y = K.ones((4, 3, 5))
>>> xy = K.dot(x, y)
>>> K.int_shape(xy)
(2, 4, 5)

batch_dot

batch_dot(x, y, axes=None)

バッチ式のドット積.

batch_dotxyがバッチに含まれる,すなわち(batch_size, :)のshapeの中で,xyのドット積を計算するために使われます.batch_dotの結果は入力より小さい次元を持つテンソルになります.次元数が1になれば,ndimが少なくとも2であることを保証するためにexpand_dimsを利用します.

引数

  • x: ndim >= 2のKerasのテンソル.
  • y: ndim >= 2のKerasのテンソル.
  • axes: 目標となる次元を持つ整数のリスト(もしくは整数単体).axes[0]axes[1]の長さは同じにすべきです.

戻り値

(次元数の総和より少ない)xのshapeと(バッチの次元の総和より少ない)yのshapeを連結したshapeに等しいテンソル.もし最後のランクが1なら,(batch_size, 1)に整形します.

x = [[1, 2], [3,4]], y = [[5, 6], [7, 8]]と仮定すると,非対角成分を計算しなくても,x.dot(y.T)の主対角成分であるbatch_dot(x, y, axes=1) = [[17, 53]]が得られます.

shapeの推定: xyのshapeがそれぞれ(100, 20)(100, 30, 20)としましょう.axesが(1, 2)の場合,出力されたテンソルのshapeを見つけるために,xyのshapeにおけるそれぞれの次元でループさせることになります.

  • x.shape[0]: 100: 出力されるshapeに付加されます.
  • x.shape[1]: 20: 出力されるshapeには付加されず,xの次元1は総和が取られています(dot_axes[0] = 1).
  • y.shape[0]: 100: 出力されるshapeには付加されず,yの最初の次元はいつも無視されます.
  • y.shape[1]: 30: 出力されるshapeに付加されます.
  • y.shape[2]: 20: 出力されるshapeには付加されず,yの次元1は総和が取られています(dot_axes[1] = 2)output_shape = (100, 30)
>>> x_batch = K.ones(shape=(32, 20, 1))
>>> y_batch = K.ones(shape=(32, 30, 20))
>>> xy_batch_dot = K.batch_dot(x_batch, y_batch, axes=[1, 2])
>>> K.int_shape(xy_batch_dot)
(32, 1, 30)

transpose

transpose(x)

行列を転置します.

引数

  • x: テンソル,または変数.

戻り値

テンソル.

>>> var = K.variable([[1, 2, 3], [4, 5, 6]])
>>> K.eval(var)
array([[ 1.,  2.,  3.],
   [ 4.,  5.,  6.]], dtype=float32)
>>> var_transposed = K.transpose(var)
>>> K.eval(var_transposed)
array([[ 1.,  4.],
   [ 2.,  5.],
   [ 3.,  6.]], dtype=float32)
>>> input = K.placeholder((2, 3))
>>> input
<tf.Tensor 'Placeholder_11:0' shape=(2, 3) dtype=float32>
>>> input_transposed = K.transpose(input)
>>> input_transposed
<tf.Tensor 'transpose_4:0' shape=(3, 2) dtype=float32>

gather

gather(reference, indices)

テンソルのreferenceにおける添字の要素indicesを探索します.

引数

  • reference: テンソル.
  • indices: 添字の整数テンソル.

戻り値

referenceと同じ型を持つテンソル.


max

max(x, axis=None, keepdims=False)

テンソル内の最大値.

引数

  • x: テンソル,または変数.
  • axis: 整数,最大値を探すため軸.
  • keepdims: 次元を保つかどうかの真理値.keepdimsFalseの場合,テンソルのランクは1に削減します.keepdimsTrueの場合,縮小された次元は1の長さにとどめます.

戻り値

xの中の最大値を持ったテンソル.


min

min(x, axis=None, keepdims=False)

テンソル内の最大値.

引数

  • x: テンソル,または変数.
  • axis: 整数,最小値を探すため軸.
  • keepdims: 次元を保つかどうかの真理値.keepdimsFalseの場合,テンソルのランクは1に削減します.keepdimsTrueの場合,縮小された次元は1の長さにとどめます.

戻り値

xの中の最小値を持ったテンソル.


clear_session

clear_session()

現在のTFグラフを壊し,新たなものを作成します.

古いモデル/レイヤが散らかってしまうを避けるのに役立ちます.


manual_variable_initialization

manual_variable_initialization(value)

手動で変数を初期化するかのフラグがセットされます.

この真理値が変数がインスタンス化することで初期化すべきか(デフォルト),利用者側で初期化を制御すべきか(例えば,tf.initialize_all_variables() を通じて)を決定します.

引数

  • value: 真理値.

learning_phase

learning_phase()

学習フェーズのフラグを返します.

学習フェーズのフラグは学習期間とテスト期間で異なる振る舞いをする任意のKeras関数への入力として渡される真理値のテンソル (0 = test, 1 = train) です.

戻り値

学習フェーズ(テンソルのスカラーにおける整数か,Pythonの整数).


set_learning_phase

set_learning_phase(value)

値を固定化するための学習フェーズをセットします.

引数

  • value: 学習フェーズの値.0,または1の整数.

Raises

  • ValueError: もしvalue0,または1ではなかった場合.

is_sparse

is_sparse(tensor)

テンソルがスパースかどうかを返します.

引数

  • tensor: テンソルのインスタンス.

戻り値

真理値.

>>> from keras import backend as K
>>> a = K.placeholder((2, 2), sparse=False)
>>> print(K.is_sparse(a))
False
>>> b = K.placeholder((2, 2), sparse=True)
>>> print(K.is_sparse(b))
True

to_dense

to_dense(tensor)

スパースなテンソルを密なテンソルに変換し,それを返します.

引数

  • tensor: テンソルのインスタンス(潜在的にスパースであること).

戻り値

密なテンソル.

>>> from keras import backend as K
>>> b = K.placeholder((2, 2), sparse=True)
>>> print(K.is_sparse(b))
True
>>> c = K.to_dense(b)
>>> print(K.is_sparse(c))
False

variable

variable(value, dtype=None, name=None)

テンソルのインスタンス化し,それを返します.

引数

  • value: テンソルの初期値が含まれたNumpy 配列.
  • dtype: テンソルの型.
  • name: テンソルに対する任意の名前を表す文字列.

戻り値

変数のインスタンス(Kerasのメタ情報が含まれています).

>>> from keras import backend as K
>>> val = np.array([[1, 2], [3, 4]])
>>> kvar = K.variable(value=val, dtype='float64', name='example_var')
>>> K.dtype(kvar)
'float64'
>>> print(kvar)
example_var
>>> kvar.eval()
array([[ 1.,  2.],
   [ 3.,  4.]])

sin

sin(x)

要素ごとにxのsinを計算します.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


cos

cos(x)

要素ごとにxのcosを計算します.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


normalize_batch_in_training

normalize_batch_in_training(x, gamma, beta, reduction_axes, epsilon=0.001)

平均と標準偏差を計算したのちに,バッチとしてbatch_normalizationを適用します.

引数

  • x: テンソル,または変数.
  • gamma: 入力をスケールするためのテンソル.
  • beta: 入力を補正するためのテンソル.
  • reduction_axes: 繰り返し可能な整数,軸上の値すべてにわたって正規化を行う.
  • epsilon: 微小量.

戻り値

3つの要素(normalize_tensor, mean, variance)からなるタプル.


batch_normalization

batch_normalization(x, mean, var, beta, gamma, epsilon=0.0001)

与えられたmean,var,beta,gammaを使ってxにbatch normalizationを適用します.

すなわち,output = (x - mean) / (sqrt(var) + epsilon) * gamma + beta が返されます.

引数

  • x: テンソル,または変数.
  • mean: バッチにおける平均.
  • var: バッチにおける分散.
  • gamma: 入力をスケールするためのテンソル.
  • beta: 入力を補正するためのテンソル.
  • reduction_axes: 繰り返し可能な整数,軸上の値すべてにわたって正規化を行う.
  • epsilon: 微小量.

戻り値

テンソル.


concatenate

concatenate(tensors, axis=-1)

指定した軸に沿ってテンソルのリストを連結します.

引数

  • tensor: 連結するためのテンソルのリスト.
  • axis: 連結する軸方向.

戻り値

テンソル.


reshape

reshape(x, shape)

指定したshapeにテンソルを整形します.

引数

  • x: テンソル,または変数.
  • shape: shapeのタプル.

戻り値

テンソル.


permute_dimensions

permute_dimensions(x, pattern)

テンソルにおける軸の順序を変更します.

引数

  • x: テンソル,または変数.
  • pattern: 次元の添字かなるタプル,e.g. (0, 2, 1)

戻り値

テンソル.


resize_images

resize_images(x, height_factor, width_factor, data_format)

4階テンソルに含まれる画像をリサイズします.

引数

  • x: リサイズのためのテンソル,または変数.
  • height_factor: 自然数.
  • width_factor: 自然数.
  • data_format: channels_first,またはchannels_last"のどちらか.

戻り値

テンソル.

Raises

  • ValueError: data_formatchannels_last,またはchannels_firstではない場合.

resize_volumes

resize_volumes(X, depth_factor, height_factor, width_factor, data_format)

5階テンソルに含まれるvolumeをリサイズします.

引数

  • x: リサイズのためのテンソル,または変数.
  • depth_factor: 自然数.
  • height_factor: 自然数.
  • width_factor: 自然数.
  • data_format: channels_first,またはchannels_lastのどちらか.

戻り値

テンソル.

Raises

  • ValueError: data_formatchannels_last,またはchannels_firstではない場合.

repeat_elements

repeat_elements(x, rep, axis)

np.repeatのように,軸に沿ってテンソルの要素を繰り返します.

xがshape(s1, s2, s3)を持ち,axis1の場合,この出力はshape(s1, s2 * rep, s3)を持ちます.

引数

  • x: テンソル,または変数.
  • rep: Pythonの整数,繰り返す回数.
  • axis: 繰り返す軸方向.

Raises

  • ValueError: x.shape[axis]が定義されていない場合.

戻り値

テンソル.


repeat

repeat(x, n)

2階テンソルを繰り返します.

xがshape (samples, dim)を持ちn=2であれば,この出力はshape(samples, 2, dim)を持ちます.

引数

  • x: テンソル,または変数.
  • n: Pythonの整数,繰り返す回数.

戻り値

テンソル.


arange

arange(start, stop=None, step=1, dtype='int32')

整数の並びからなる1階テンソルを作成します.

関数の引数はTheanoのarangeの慣例と同じです: 唯一の引数が与えられた場合,実際には"stop"の引数です.

返されたテンソルのデフォルトの型は'int32'でTensorFlowのデフォルトと一致します.

引数

  • start: 始めの値.
  • stop: 終わりの値.
  • step: 2つの連続値の差分.
  • dtype: 整数のデータ型.

戻り値

整数のテンソル.


tile

tile(x, n)

xnでタイル状に配置したテンソルを作成します.

引数

  • x: テンソル,または変数.
  • n: 整数のリスト.xの次元数と同じでなければなりません.

戻り値

タイル状に配置されたテンソル.


flatten

flatten(x)

平滑化されたテンソル.

引数

  • x: テンソル,または変数.

戻り値

1次元に整形されたテンソル.


batch_flatten

batch_flatten(x)

n階テンソルを0番目の次元が保たれるように2階テンソルに変換します.

言い換えると,バッチのそれぞれのサンプルに対して平滑化を行います.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


expand_dims

expand_dims(x, axis=-1)

添字"dim"でのサイズ1の次元を加えます.

引数

  • x: テンソル,または変数.
  • axis: 新しい軸を追加する場所.

戻り値

次元が拡張されたテンソル.


squeeze

squeeze(x, axis)

テンソルから添字"axis"での1次元を除きます.

引数

  • x: テンソル,または変数.
  • axis: 削除する軸.

戻り値

xと同じデータで,次元が削除されたテンソル.


temporal_padding

temporal_padding(x, padding=(1, 1))

3階テンソルの真ん中の次元に対してパディングを行います.

引数

  • x: テンソル,または変数.
  • padding: 2つの整数からなるタプル.次元1の始めと終わりにいくつ0をパディングするか.

戻り値

パディングされた3階テンソル.


spatial_2d_padding

spatial_2d_padding(x, padding=((1, 1), (1, 1)), data_format=None)

4階テンソルの2番目と3番目の次元に対してパディングを行います.

引数

  • x: テンソル,または変数.
  • padding: 2つのタプルのタプル.パディングのパターン.
  • data_format: channels_lastchannels_firstのどちらか.

戻り値

パディングされた4階テンソル.

Raises

  • ValueError: data_formatchannels_last,またはchannels_firstではない場合.

spatial_3d_padding

spatial_3d_padding(x, padding=((1, 1), (1, 1), (1, 1)), data_format=None)

5階テンソルに対して深さ,高さ,幅を表す次元に沿って0パディングを行います.

"padding[0]","padding[1]",かつ"padding[2]"それぞれの次元に対して左右を0パディングします.

'channels_last'のdata_formatに対して,2,3,4番目の次元がパディングされます.'channels_first'のdata_formatに対して,3,4,5番目の次元がパディングされます.

引数

  • x: テンソル,または変数.
  • padding: 3つのタプルのタプル.パディングのパターン.
  • data_format: channels_lastchannels_firstのどちらか.

戻り値

パディングされた5階テンソル.

Raises

  • ValueError: data_formatchannels_last,またはchannels_firstではない場合.

stack

stack(x, axis=0)

ランクRのテンソルのリストをランクR+1のテンソルに積み上げます.

引数

  • x: テンソルのリスト.
  • axis: 積み上げる軸方向.

戻り値

テンソル.


one_hot

one_hot(indices, num_classes)

整数のテンソルone-hot表現を導出します.

引数

  • indices: (batch_size, dim1, dim2, ... dim(n-1))のshapeを持つn階テンソル.
  • num_classes: 整数.いくつのクラスを考慮するか.

戻り値

(batch_size, dim1, dim2, ... dim(n-1), num_classes)のshapeを持つ(n + 1)次元のone-hot表現が含まれたテンソル.


reverse

reverse(x, axes)

指定した軸に沿ってテンソルを逆順にする.

引数

  • x: 逆順にするテンソル.
  • axes: 整数,または繰り返し可能な整数.逆順にする軸.

戻り値

テンソル.


get_value

get_value(x)

変数の値を返します.

引数

  • x: 入力変数.

戻り値

Numpy 配列.


batch_get_value

batch_get_value(xs)

1つ以上のテンソルの変数の値を返します.

引数

  • ops: 実行する命令のリスト.

戻り値

Numpy 配列のリスト.


set_value

set_value(x, value)

Numpy 配列から,変数の値を設定します.

引数

  • x: 新しい値をセットするテンソル.
  • value: Numpy 配列(同じshapeを持ちます)テンソルにセットする値.

batch_set_value

batch_set_value(tuples)

複数のテンソルの変数の値を一度にセットします.

引数

  • tuples: (tensor, value)のタプルのリスト.valueはNumpy 配列であるべきです.

get_variable_shape

get_variable_shape(x)

変数のshapeを返す.

引数

  • x: 変数.

戻り値

整数のタプル.


print_tensor(x, message='')

messageと評価されたテンソルの値を表示します.

引数

  • x: 表示するテンソル.
  • message: テンソルと一緒に表示するメッセージ.

戻り値

xと同じテンソル.


sum

sum(x, axis=None, keepdims=False)

テンソルに対して,指定した軸に沿って和を計算します.

引数

  • x: テンソル,または変数.
  • axis: 整数.和を計算する軸方向.
  • keepdims: 次元を保つかどうかの真理値.keepdimsFalseの場合,テンソルのランクは1に削減します.keepdimsTrueの場合,縮小された次元は1の長さにとどめます.

戻り値

xの和をとったテンソル.


prod

prod(x, axis=None, keepdims=False)

テンソルに対して,指定した軸に沿って積を計算します.

引数

  • x: テンソル,または変数.
  • axis: 整数.積を計算する軸方向.
  • keepdims: 次元を保つかどうかの真理値.keepdimsFalseの場合,テンソルのランクは1に削減します.keepdimsTrueの場合,縮小された次元は1の長さにとどめます.

戻り値

xの積をとったテンソル.


cumsum

cumsum(x, axis=0)

テンソルに対して,指定した軸に沿って累積和を計算します.

引数

  • x: テンソル,または変数.
  • axis: 整数.和を計算する軸方向.

戻り値

xaxisに沿って累積和をとったテンソル.


cumprod

cumprod(x, axis=0)

テンソルに対して,指定した軸に沿って累積積を計算します.

引数

  • x: テンソル,または変数.
  • axis: 整数.積を計算する軸方向.

戻り値

xaxisに沿って累積積をとったテンソル.


var

var(x, axis=None, keepdims=False)

指定した軸に沿ったテンソルの分散を計算します.

引数

  • x: テンソル,または変数.
  • axis: 整数.分散を計算する軸方向.
  • keepdims: 次元を保つかどうかの真理値.keepdimsFalseの場合,テンソルのランクは1に削減します.keepdimsTrueの場合,縮小された次元は1の長さにとどめます.

戻り値

xの要素の分散を持つテンソル.


std

std(x, axis=None, keepdims=False)

指定した軸に沿ったテンソルの標準偏差を計算します.

引数

  • x: テンソル,または変数.
  • axis: 整数.標準偏差を計算する軸方向.
  • keepdims: 次元を保つかどうかの真理値.keepdimsFalseの場合,テンソルのランクは1に削減します.keepdimsTrueの場合,縮小された次元は1の長さにとどめます.

戻り値

xの要素の標準偏差を持つテンソル.


mean

var(x, axis=None, keepdims=False)

指定した軸に沿ったテンソルの平均を計算します.

引数

  • x: テンソル,または変数.
  • axis: 整数.平均を計算する軸方向.
  • __keepdims: 次元を保つかどうかの真理値.keepdimsFalseの場合,テンソルのランクは1に削減します.keepdimsTrueの場合,縮小された次元は1の長さにとどめます.

戻り値

xの要素の平均を持つテンソル.


any

any(x, axis=None, keepdims=False)

ビット単位の縮約(論理OR).

引数

  • x: テンソル,または変数.
  • axis: 整数.縮約する軸方向.
  • keepdims: 次元を保つかどうかの真理値.keepdimsFalseの場合,テンソルのランクは1に削減します.keepdimsTrueの場合,縮小された次元は1の長さにとどめます.

戻り値

uint8のテンソル.


all

all(x, axis=None, keepdims=False)

ビット単位の縮約(論理AND).

引数

  • x: テンソル,または変数.
  • axis: 整数.縮約する軸方向.
  • keepdims: 次元を保つかどうかの真理値.keepdimsFalseの場合,テンソルのランクは1に削減します.keepdimsTrueの場合,縮小された次元は1の長さにとどめます.

戻り値

uint8のテンソル.


argmax

argmax(x, axis=-1)

テンソルの軸に沿った最大値の添字を返します.

引数

  • x: テンソル,または変数.
  • axis: 整数.縮約する軸方向.

戻り値

テンソル.


argmin

argmin(x, axis=-1)

テンソルの軸に沿った最小値の添字を返します.

引数

  • x: テンソル,または変数.
  • axis: 整数.縮約する軸方向.

戻り値

テンソル.


square

square(x)

要素ごとの二乗.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


abs

abs(x)

要素ごとの絶対値.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


sqrt

sqrt(x)

要素ごとの平方根.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


exp

exp(x)

要素ごとの指数関数値.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


log

log(x)

要素ごとの対数.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


logsumexp

logsumexp(x, axis=None, keepdims=False)

log(sum(exp(テンソルの次元を横断した要素)))を計算します.

この関数はlog(sum(exp(x)))よりも計算上安定します.小さい入力に対して対数をとることで発生するアンダーフローと,大きな入力に対して指数関数にかけることで発生するオーバーフローを回避します.

引数

  • x: テンソル,または変数.
  • axis: 整数.縮約する軸方向.
  • keepdims: 次元を保つかどうかの真理値.keepdimsFalseの場合,テンソルのランクは1に削減します.keepdimsTrueの場合,縮小された次元は1の長さにとどめます.

戻り値

縮約されたテンソル.


round

round(x)

要素ごとの最も近い整数への丸め.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


sign

sign(x)

要素ごとの符号.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


pow

pow(x, a)

要素ごとの指数乗.

引数

  • x: テンソル,または変数.
  • a: Pythonの整数.

戻り値

テンソル.


clip

clip(x, min_value, max_value)

要素ごとのクリッピング.

引数

  • x: テンソル,または変数.
  • min_value: PythonのFloat,または整数.
  • max_value: PythonのFloat,または整数.

戻り値

テンソル.


equal

equal(x, y)

2つのテンソル間の要素ごとの等値性.

引数

  • x: テンソル,または変数.
  • y: テンソル,または変数.

戻り値

真理値からなるテンソル.


not_equal

not_equal(x, y)

2つのテンソル間の要素ごとの不等性.

引数

  • x: テンソル,または変数.
  • y: テンソル,または変数.

戻り値

真理値からなるテンソル.


greater

greater(x, y)

要素ごとの(x > y)の真理値.

引数

  • x: テンソル,または変数.
  • y: テンソル,または変数.

戻り値

真理値からなるテンソル.


greater_equal

greater_equal(x, y)

要素ごとの(x >= y)の真理値.

引数

  • x: テンソル,または変数.
  • y: テンソル,または変数.

戻り値

真理値からなるテンソル.


less

less(x, y)

要素ごとの(x < y)の真理値.

引数

  • x: テンソル,または変数.
  • y: テンソル,または変数.

戻り値

真理値からなるテンソル.


less_equal

less_equal(x, y)

要素ごとの(x <= y)の真理値.

引数

  • x: テンソル,または変数.
  • y: テンソル,または変数.

戻り値

真理値からなるテンソル.


maximum

maximum(x, y)

2つのテンソルの要素ごとの最大値.

引数

  • x: テンソル,または変数.
  • y: テンソル,または変数.

戻り値

テンソル.


minimum

minimum(x, y)

2つのテンソルの要素ごとの最小値.

引数

  • x: テンソル,または変数.
  • y: テンソル,または変数.

戻り値

テンソル.


function

function(inputs, outputs, updates=None)

Kerasの関数のインスタンスを作成します.

引数

  • inputs: プレースホルダーテンソルのリスト.
  • outputs: 出力のテンソルのリスト.
  • updates: 更新する命令のリスト.
  • **kwargs: TensorFlowでは利用されません.

戻り値

Numpy 配列.


gradients

gradients(loss, variables)

variableslossに関しての勾配を返します.

引数

  • loss: 最小化するためのスカラーからなるテンソル.
  • variables: 変数のリスト.

戻り値

勾配からなるテンソル.


stop_gradient

stop_gradient(variables)

全ての変数に関して,0の勾配を持つvariableを返します.

引数

  • variables: 変数のリスト.

戻り値

同様の変数のリスト.


rnn

rnn(step_function, inputs, initial_states, go_backwards=False, mask=None, constants=None, unroll=False, input_length=None)

テンソルの時間次元にわたって反復します.

引数

  • step_function: RNN のステップ関数
  • Parameters:
    • input: shape(samples, ...) (時間次元はありません)を持つテンソルで,ある時間ステップでのサンプルのバッチに対する入力を表します.
    • states: テンソルのリスト.
  • 戻り値:
    • output: shape(samples, output_dim) を持つテンソル(時間次元はありません).
    • new_states: 'states'と同じ長さとshapeを持つテンソルのリスト.リストの中の最初のステートは前回の時間ステップでの出力されたテンソルでなければなりません.
  • inputs: shape(samples, time, ...) を持つ一時的なテンソル(少なくとも3次元です).
  • initial_states: ステップ関数で利用される状態に対する初期値を含む,shape (samples, output_dim) を持つテンソル(時間軸を持たない).ステップ関数で扱うstatesの初期値が含まれます.
  • go_backwards: 真理値.真ならば,逆順で時間次元にわたって反復します.
  • mask: マスクされたすべての要素に対して0となるような,shape(samples, time, 1)を持つバイナリ型のテンソル.
  • constants: 各ステップで渡される定数値のリスト.
  • unroll: RNNをアンロールするか,またはシンボリックループ(バックエンドに応じたwhile_loop,またはscan)どうか.
  • input_length: TensorFlowの実装では関係ありません.Theanoでアンロールを利用するときは指定する必要があります.

戻り値

(last_output, outputs, new_states)のタプル.

  • last_output: shape(samples, ...)を持つRNNの最新の出力.
  • outputs: 各output[s, t]がサンプルsに対する時刻tでのステップ関数の出力であるような,shape(samples, time, ...)を持つテンソル
  • new_states: shape(samples, ...)を持つ,ステップ関数で返される最新の状態を表すテンソルのリスト.

Raises

  • ValueError: 3以下の次元の入力が与えられた場合.
  • ValueError: unollTrueだが,入力の時間ステップが固定値ではない場合.
  • ValueError: Noneではないmaskが与えられたが,statesが与えられていない(len(states) == 0)場合.

switch

switch(condition, then_expression, else_expression)

スカラー値に応じて2つの命令を入れ替えます.

then_expressionelse_expressionはともに同じshapeを持つシンボリックなテンソルであるべきであることに注意してください.

引数

  • condition: スカラーからなるテンソル(整数,または真理値).
  • then_expression: テンソル,またはテンソルを返すcallable.
  • else_expression: テンソル,またはテンソルを返すcallable.

戻り値

選択されたテンソル.


in_train_phase

in_train_phase(x, alt, training=None)

学習フェーズではxを選択し,それ以外ではaltを選択します.

altx同じshapeを持つべきであることに注意してください.

引数

  • x: 学習フェーズにおいて何を返すか(テンソル,またはテンソルを返すcallable).
  • alt: 学習フェーズ以外において何を返すか(テンソル,またはテンソルを返すcallable).
  • training: 学習フェーズを指定した任意のスカラーからなるテンソル(またはPythonの真理値,整数).

戻り値

trainingのフラグに基づいたx,またはaltのどちらか.trainingのフラグはK.learning_phase()をデフォルトにします.


in_test_phase

in_test_phase(x, alt, training=None)

テストフェーズではxを選択し,それ以外ではaltを選択します.

altx同じshapeを持つべきであることに注意してください.

引数

  • x: テストフェーズにおいて何を返すか(テンソル,またはテンソルを返すcallable).
  • alt: テストフェーズ以外において何を返すか(テンソル,またはテンソルを返すcallable).
  • training: 学習フェーズを指定した任意のスカラーからなるテンソル(またはPythonの真理値,整数).

戻り値

K.learning_phaseのフラグに基づいたx,またはaltのどちらか.


relu

relu(x, alpha=0.0, max_value=None)

Rectified linear unit.

デフォルトは,要素ごとにmax(x, 0)を返します.

引数

  • x: テンソル,または変数.
  • alpha: スカラー値.負の領域における関数の傾き(デフォルトは0.).
  • max_value: 飽和度の閾値.

戻り値

テンソル.


elu

elu(x, alpha=1.0)

Exponential linear unit.

引数

  • x: テンソル,または変数.
  • alpha: スカラー値.正の領域における関数の傾き.

戻り値

テンソル.


softmax

softmax(x)

Softmax.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


softplus

softplus(x)

Softplus.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


softsign

softsign(x)

引数

  • x: テンソル,または変数.

戻り値

テンソル.


categorical_crossentropy

categorical_crossentropy(output, target, from_logits=False)

出力テンソルと目標テンソルの間のカテゴリカルクロスエントロピー.

引数

  • output: softmaxに適用したテンソル(from_logitsがTrueでない限り,outputはロジット値で表されるでしょう).
  • target: outputと同じshapeからなるテンソル.
  • from_logits: 真理値.outputがsoftmaxの結果,またはロジット値からなるテンソルかどうか.

戻り値

出力のテンソル.


sparse_categorical_crossentropy

sparse_categorical_crossentropy(output, target, from_logits=False)

整数の目標におけるカテゴリカルクロスエントロピー.

引数

  • output: softmaxに適用したテンソル(from_logitsがTrueでない限り,outputはロジット値で表されるでしょう).
  • target: 整数のテンソル.
  • from_logits: 真理値.outputがsoftmaxの結果,またはロジット値からなるテンソルかどうか.

戻り値

出力のテンソル.


binary_crossentropy

binary_crossentropy(output, target, from_logits=False)

出力テンソルと目標テンソルの間のバイナリクロスエントロピー.

引数

  • output: softmaxに当てはめたテンソル(from_logitsがTrueでない限り,outputはロジット値で表されるでしょう).
  • target: outputと同じshapeからなるテンソル.
  • from_logits: 真理値.outputがsoftmaxの結果,またはロジット値からなるテンソルかどうか.

戻り値

テンソル.


sigmoid

sigmoid(x)

要素ごとのシグモイド.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


hard_sigmoid

hard_sigmoid(x)

セグメントごとのシグモイドの線形近似.

シグモイドよりも高速.x < -2.5の場合,0.x > 2.5の場合,1.-2.5 <= x <= 2.5の場合,0.2 * x + 0.5が返される.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


tanh

tanh(x)

要素ごとのtanh.

引数

  • x: テンソル,または変数.

戻り値

テンソル.


dropout

dropout(x, level, seed=None)

xの要素をランダムに0にセットし,その上,テンソル全体をスケールさせます.

引数

  • x: テンソル
  • level: 0に設定されるテンソルにおける要素の割合
  • noise_shape: ランダムに生成された保持/棄却のフラグのshapeで,xのshapeにブロードキャスト可能でなければなりません.
  • seed: 決定論を保証するランダムシード.

戻り値

テンソル.


l2_normalize

l2_normalize(x, axis)

指定した軸に沿って,L2ノルムでテンソルを正則化します.

引数

  • x: テンソル,または変数.
  • axis: 正則化する軸方向.

戻り値

テンソル.


in_top_k

in_top_k(predictions, targets, k)

targetspredictionsの上位kに含まれているかどうか,を返します.

引数

  • predictions: shape(batch_size, classes)float32型のテンソル.
  • target: 長さbatch_sizeint32,またはint64の1階テンソル.
  • k: 整数.上位何件を考慮するかの数.

戻り値

batch_sizeの長さで真理値からなる1階テンソル.predictions[i]が上位kに含まれていたらoutput[i]True


conv1d

conv1d(x, kernel, strides=1, padding='valid', data_format=None, dilation_rate=1)

1次元の畳み込み.

引数

  • x: テンソル,または変数.
  • kernel: カーネルを表すテンソル.
  • strides: ストライドの整数.
  • padding: 文字列.samecausal,またはvalid
  • data_format: 文字列channels_last,またはchannels_firstのどちらか.
  • dilation_rate: 整数.ディレーションを行う割合.

戻り値

1次元の畳み込みの結果からなるテンソル.


conv2d

conv2d(x, kernel, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1))

2次元の畳み込み.

引数

  • x: テンソル,または変数.
  • kernel: カーネルを表すテンソル.
  • strides: ストライドの整数.
  • padding: 文字列.same,またはvalid
  • data_format: 文字列.channels_last,またはchannels_firstのどちらか.入力/カーネル/出力でTheanoもしくはTensorFlowのデータ形式を利用するかどうか.
  • dilation_rate: 整数のタプル.

戻り値

2次元の畳み込みの結果からなるテンソル.

Raises

  • ValueError: data_formatchannels_last,またはchannels_firstではない場合.

conv2d_transpose

conv2d_transpose(x, kernel, output_shape, strides=(1, 1), padding='valid', data_format=None)

2次元の逆畳み込み(すなわち,転置畳み込み).

引数

  • x: テンソル,または変数.
  • kernel: カーネルを表すテンソル.
  • output_shape: 出力するshapeに対する整数の1階テンソル.
  • strides: ストライドの整数.
  • padding: 文字列.same,またはvalid
  • data_format: 文字列.channels_last,またはchannels_firstのどちらか.入力/カーネル/出力でTheanoもしくはTensorFlowのデータ形式を利用するかどうか.

戻り値

2次元の転置畳み込みの結果からなるテンソル.

Raises

  • ValueError: data_formatchannels_last,またはchannels_firstではない場合.

separable_conv2d

separable_conv2d(x, depthwise_kernel, pointwise_kernel, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1))

separableフィルタ込みで2次元の畳み込み.

引数

  • x: テンソル,または変数.
  • depthwise_kernel: 深さごとの畳み込みに対するカーネル.
  • pointwise_kernel: 1x1の畳み込みに対するカーネル.
  • strides: ストライドのタプル(長さ2).
  • padding: パディングのモード.same,またはvalid
  • data_format: 文字列.channels_last,またはchannels_firstのどちらか.
  • dilation_rate: 整数のタプル.ディレーションを行う割合.

戻り値

出力テンソル.

Raises

  • ValueError: data_formatchannels_last,またはchannels_firstではない場合.

conv3d

conv3d(x, kernel, strides=(1, 1, 1), padding='valid', data_format=None, dilation_rate=(1, 1, 1))

3次元の畳み込み.

引数

  • x: テンソル,または変数.
  • kernel: カーネルのテンソル.
  • strides: ストライドのタプル.
  • padding: 文字列.same,またはvalid
  • data_format: 文字列.channels_last,またはchannels_firstのどちらか.入力/カーネル/出力でTheanoもしくはTensorFlowのデータ形式を利用するかどうか.
  • dilation_rate: 3つの整数からなるタプル

戻り値

3次元の畳み込みの結果からなるテンソル.

Raises

  • ValueError: data_formatchannels_last,またはchannels_firstではない場合.

pool2d

pool2d(x, pool_size, strides=(1, 1), padding='valid', data_format=None, pool_mode='max')

2次元のプーリング.

引数

  • x: テンソル,または変数.
  • pool_size: 2つの整数からなるタプル.
  • strides: 2つの整数からなるタプル.
  • padding: 文字列.same,またはvalid
  • data_format: 文字列.channels_last,またはchannels_firstのどちらか.
  • pool_mode: maxavgのどちらか.

戻り値

2次元のプーリングの結果からなるテンソル.

Raises

  • ValueError: data_formatchannels_last,またはchannels_firstではない場合.
  • ValueError: pool_modemax,またはavgではない場合.

pool3d

pool3d(x, pool_size, strides=(1, 1, 1), padding='valid', data_format=None, pool_mode='max')

2次元のプーリング.

引数

  • x: テンソル,または変数.
  • pool_size: 3つの整数からなるタプル.
  • strides: 3つの整数からなるタプル.
  • padding: 文字列.same,またはvalid
  • data_format: 文字列.channels_last,またはchannels_firstのどちらか.
  • pool_mode: maxavgのどちらか.

戻り値

3次元のプーリングの結果からなるテンソル.

Raises

  • ValueError: data_formatchannels_last,またはchannels_firstではない場合.
  • ValueError: pool_modemax,またはavgではない場合.

bias_add

bias_add(x, bias, data_format=None)

テンソルにバイアスベクトルを付加します.

引数

  • x: テンソル,または変数.
  • bias: 付加するバイアスを表すテンソル.
  • data_format: 3,4,5階テンソルに対するデータの形式: "channels_last",または"channels_first"のどちらか.

戻り値

出力テンソル.

Raises

  • ValueError: 以下の2つの場合の一方:
    1. 不正なdata_formatが与えられた場合.
    2. 不正なbiasのshape.biasはベクトルかndim(x) - 1のテンソルにすべきです.

random_normal

random_normal(shape, mean=0.0, stddev=1.0, dtype=None, seed=None)

ガウス分布の値を持つテンソルを返します.

引数

  • shape: 整数のタプル.作成するテンソルのshape.
  • mean: 浮動小数点数.サンプリングするためのガウス分布の平均.
  • stddev: 浮動小数点数.サンプリングするためのガウス分布の標準偏差.
  • dtype: 文字列.返されるテンソルのデータ型.
  • seed: 整数.ランダムシード.

戻り値

テンソル.


random_uniform

random_uniform(shape, minval=0.0, maxval=1.0, dtype=None, seed=None)

一様分布の値を持つテンソルを返します.

引数

  • shape: 整数のタプル.作成するテンソルのshape.
  • minval: 浮動小数点数.サンプリングするための一様分布の下限.
  • maxval: 浮動小数点数.サンプリングするための一様分布の上限.
  • dtype: 文字列.返されるテンソルのデータ型.
  • seed: 整数.ランダムシード.

戻り値

テンソル.


random_binomial

random_binomial(shape, p=0.0, dtype=None, seed=None)

二項分布の値を持つテンソルを返します.

引数

  • shape: 整数のタプル.作成するテンソルのshape.
  • p: 浮動小数点数.0. <= p <= 1,二項分布の確率.
  • dtype: 文字列.返されるテンソルのデータ型.
  • seed: 整数.ランダムシード.

戻り値

テンソル.


truncated_normal

truncated_normal(shape, mean=0.0, stddev=1.0, dtype=None, seed=None)

切断ガウス分布の値を持つテンソルを返します.

生成された値は,指定された平均値と標準偏差を持つガウス分布に従いますが,平均値から2の標準偏差を超える値が削除され,再選択されます。

引数

  • shape: 整数のタプル.作成するテンソルのshape.
  • mean: 浮動小数点数.値の平均.
  • stddev: 浮動小数点数.値の標準偏差.
  • dtype: 文字列.返されるテンソルのデータ型.
  • seed: 整数.ランダムシード.

戻り値

テンソル.


ctc_label_dense_to_sparse

ctc_label_dense_to_sparse(labels, label_lengths)

CTCのラベルを密からスパースなものに変換します.

引数

  • labels: 密なCTCのラベル.
  • label_length: ラベルの長さ.

戻り値

ラベルにおけるスパース表現からなるテンソル.


ctc_batch_cost

ctc_batch_cost(y_true, y_pred, input_length, label_length)

各バッチ要素に対してCTCのlossアルゴリズムを実行.

引数

  • y_true: 真のラベルを含むテンソル(samples, max_string_length)
  • y_pred: 予測値かsoftmaxの出力を含むテンソル(samples, time_steps, num_categories)
  • input_length: y_predの各バッチの系列長を含むテンソル(samples,1)
  • label_length: y_trueの各バッチの系列長を含むテンソル(samples,1)

戻り値

各要素のCTCの損失値を含んだshape(samples, 1)のテンソル.


ctc_decode

ctc_decode(y_pred, input_length, greedy=True, beam_width=100, top_paths=1)

softmaxの出力をデコードします.

(最適な探索として知られる)貪欲法かconstrained dictionary searchを使います .

引数

  • y_pred: 予測値かsoftmaxの出力を含むテンソル(samples, time_steps, num_categories)
  • input_length: y_predの各バッチの系列長を含むテンソル(samples,1)
  • greedy: trueなら高速な最適パス探索を行います.このとき,辞書を使わない
  • beam_width: greedyFalseの場合,この幅を使ったビームサーチを行います.
  • top_paths: greedyFalseの場合,最も辿る可能性の高いパスがどれだけあるか返されます.

戻り値

  • Tuple:
  • List: greedytrueの場合,デコードされたシーケンスを含む1つの要素のリストが返されます.greedyfalseの場合,最も辿る可能性の高いデコードされたシーケンスを返します.
  • Important: 空白のラベルは-1を返されます.デコードされたシーケンスの対数確率を含むテンソル(top_paths, )です.

map_fn

map_fn(fn, elems, name=None, dtype=None)

関数fnをelemsの要素全てに対して当てはめ,その出力を返します.

引数

  • fn: elemsの各要素に対して呼び出されるCallable.
  • elems: テンソル.
  • name: グラフの中のmapのノードに対する文字列の名前.
  • dtype: 出力のデータ型.

戻り値

データ型dtypeを持つテンソル.


foldl

foldl(fn, elems, initializer=None, name=None)

fnを使って左から右にelemsの要素を結合させることでelemsを縮約します.

引数

  • fn: elemsの各要素に対して呼び出されるCallable.例えば,lambda acc, x: acc + x
  • elems: テンソル.
  • initializer: 使用される最初の値.(Noneの場合はelems[0]を指す)
  • name: グラフの中のfoldlのノードに対する文字列の名前.

戻り値

initializerの同じ型とshapeを持つテンソル.


foldr

foldr(fn, elems, initializer=None, name=None)

fnを使って右から左にelemsの要素を結合させることでelemsを縮約します.

引数

  • fn: elemsの各要素に対して呼び出されるCallable.例えば,lambda acc, x: acc + x
  • elems: テンソル.
  • initializer: 使用される最初の値.(Noneの場合はelems[-1]を指す)
  • name: グラフの中のfoldrのノードに対する文字列の名前.

戻り値

initializerの同じ型とshapeを持つテンソル.


local_conv1d

local_conv1d(inputs, kernel, kernel_size, strides, data_format=None)

重みを共有しない1次元畳み込みの適用.

引数

  • inputs: (batch_size, steps, input_dim)のshapeをもつ3階テンソル
  • kernel: (output_length, feature_dim, filters)のshapeをもつ畳み込みのため共有なしの重み
  • kernel_size: 1次元の畳み込みにおけるwondowの長さを指定する整数1つをもつタプル
  • strides: 畳み込みのstrideの長さを指定する整数1つをもつタプル
  • data_format: channels_first か channels_last のデータフォーマット

戻り値

重みを共有しない1次元の畳み込みを適用した (batch_size, output_lenght, filters) のshapeをもつテンソル

Raises

  • ValueError: data_formatchannels_lastchannels_firstでないとき.

local_conv2d

local_conv2d(inputs, kernel, kernel_size, strides, output_shape, data_format=None)

重みを共有しない2次元畳み込みの適用.

引数

  • inputs: 4階テンソル: data_format='channels_first'なら (batch_size, filters, new_rows, new_cols),data_format='channels_last'なら (batch_size, new_rows, new_cols, filters)
  • kernel: (output_items, feature_dim, filters)のshapeをもつ畳み込みのため共有なしの重み
  • kernel_size: 2次元の畳み込みにおけるwondowの幅と高さを指定する整数2つをもつタプル
  • strides: 幅と高さにそった畳み込みのstrideを指定する整数2つをもつタプル
  • output_shape: (output_row, output_col) のタプル
  • data_format: channels_first か channels_last のデータフォーマット

戻り値

4階テンソル: data_format='channels_first'なら(batch_size, filters, new_rows, new_cols)のshapeの4階テンソル,data_format='channels_last'なら(batch_size, new_rows, new_cols, filters)のshapeの4階テンソル.

Raises

  • ValueError: data_formatchannels_lastchannels_firstでないとき.