凯拉斯的矩阵乘法的格式是什么

2024-04-26 10:00:57 发布

您现在位置:Python中文网/ 问答频道 /正文

在计算z时,我所看到的将数据从一个神经网络层传播到下一个神经网络层背后的所有数学都是这样的:

zTx+b

但keras似乎偏离了这个标准。它接受行的样本数和列的特征数形式的输入矩阵,get_weights()命令返回的矩阵形状仅满足等式z,如果满足以下条件:

z=xθ+b

给出以下网络学习输入维数为4x2、输出维数为4x1的异或门的示例:

from keras.models import Sequential
from keras.layers import Dense
import numpy as np


X = np.array([[0,0],
              [1,0],
              [0,1],
              [1,1]])
Y = np.array([0,1,1,0])

model = Sequential()
model.add(Dense(10, input_dim=2, activation='sigmoid'))
model.add(Dense(10, activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])
model.fit(X, Y, epochs=100000, batch_size=4, verbose=0)

print model.get_weights()
print model.predict(X)

每层的模型权重为2x10、10x10和10x10。矩阵乘法不能满足第一个方程,但对第二个方程似乎有效。keras真的是这样处理它的神经网络计算还是我在代码中误解了什么?我的输入X维应该被转置吗?感谢任何帮助。在


Tags: fromimportaddgetmodelnp矩阵网络层
2条回答

设置权重(形状)的方法有问题。看看这个例子,取自here

from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
import numpy as np 

X = np.array([[0,0],[0,1],[1,0],[1,1]])
y = np.array([[0],[1],[1],[0]])

model = Sequential()
model.add(Dense(8, input_dim=2))
model.add(Activation('tanh'))
model.add(Dense(1))
model.add(Activation('sigmoid'))

sgd = SGD(lr=0.1)
model.compile(loss='binary_crossentropy', optimizer=sgd)

model.fit(X, y, show_accuracy=True, batch_size=1, nb_epoch=1000)
print(model.predict_proba(X))
"""
[[ 0.0033028 ]
 [ 0.99581173]
 [ 0.99530098]
 [ 0.00564186]]
"""

一切如期而至。请查看here编写的代码,并搜索密集类。在

为了让它更简单一点。。下面是两个重要的代码片段。 内核就是这样构建的

 input_dim = input_shape[-1]

        self.kernel = self.add_weight(shape=(input_dim, self.units),
                                      initializer=self.kernel_initializer,
                                      name='kernel',
                                      regularizer=self.kernel_regularizer,
                                      constraint=self.kernel_constraint)

这就是乘法的原理

^{pr2}$

如果你考虑这种方法,你的权重,输入尺寸等是如何定义的,那么这一切都是非常有意义的。 如果没有,请留下回复:)

相关问题 更多 >