Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 指定Keras中的参数列表_Python_Tensorflow_Keras_Neural Network - Fatal编程技术网

Python 指定Keras中的参数列表

Python 指定Keras中的参数列表,python,tensorflow,keras,neural-network,Python,Tensorflow,Keras,Neural Network,我为权重和偏差定义了两个变量偏差。如何在Keras中使用这些变量?基本上,我想做的是: w = tf.get_variable("weight", shape=[784, 512], trainable=True) b = tf.get_variable("bias", shape=[512], trainable=True) model = Sequential() model.add(Dense(512, activation='relu', input_shape=(784,), wei

我为权重和偏差定义了两个变量偏差。如何在Keras中使用这些变量?基本上,我想做的是:

w = tf.get_variable("weight", shape=[784, 512], trainable=True)
b = tf.get_variable("bias", shape=[512], trainable=True)

model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(784,), weights=w, biases=b))

有人知道如何使用Keras吗?

直接传入Numpy数组,Keras将为您处理张量转换;另外,
weights
处理“常规”权重和偏差。完整示例如下:

来自keras.layers
从keras.models导入顺序
将numpy作为np导入
输入_形状=(784,)
密集尺寸=512
W=np.random.randn(输入形状[0],密集尺寸)
b=np.random.randn(稠密尺寸)
模型=顺序()
添加(密集型(密集型,激活型,输入型=输入型,权重=[W,b]))
确保按照层期望的顺序传递重量-可直接检查:

打印(模型层[0].权重)
[,,
]

在构建模型后设置权重:使用
图层。设置权重()

model.layers[0]。设置_权重([W,b])#再次,注意顺序

使用tf.get_变量:无法执行;从
set_weights()
,使用
K.batch_set_value
,它对原始数组值而不是张量进行操作。如果您的目标是跟踪层的权重变量,则只需直接获取,并使用
K.eval()
获取它们的值(或TF2的
.numpy()
):

将keras.backend导入为K
dense1_权重,dense1_偏差=模型。层[0]。权重
如果tf.\uuuuu版本\uuuuu[0]=“2”:
打印(dense1_weights.numpy())
其他:
打印(K.eval(密度单位重量))

只需使用
model.trainable_variables
?@iyop45,它只检索变量列表。您可以轻松地为该列表编制索引:[v代表model.trainable_variables if v.name==“weight:0”]感谢您的回答。我来测试一下。我很惊讶文档中没有这个@PeterSmith Keras/TF文档并不完美(通常都很糟糕),但这次它们很好;由于
weights
位于
kwargs
中,因此在类的docstring中描述它不是标准做法。但是,您可以看到,
Dense
继承自我链接的base_Layer.py中定义的
Layer
,确实如此。我刚刚对此进行了测试。你知道有没有办法在
weights
列表中指定TensorFlow张量而不是NumPy数组?