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 - Fatal编程技术网

Python 使用Keras进行贪婪分层训练

Python 使用Keras进行贪婪分层训练,python,tensorflow,keras,Python,Tensorflow,Keras,我试图在Keras(版本2.2.4-tf)中实现一个多层感知器,该感知器迭代地训练层。我一直把它当作一个模型,但事情对我不太合适。这是我的密码: # Train first layer mlp = keras.models.Sequential() mlp.add(keras.layers.Dense(units=512, activation='tanh', kernel_initializer='he_uniform')) mlp.add(keras.layers.Dense(units=1

我试图在Keras(版本2.2.4-tf)中实现一个多层感知器,该感知器迭代地训练层。我一直把它当作一个模型,但事情对我不太合适。这是我的密码:

# Train first layer
mlp = keras.models.Sequential()
mlp.add(keras.layers.Dense(units=512, activation='tanh', kernel_initializer='he_uniform'))
mlp.add(keras.layers.Dense(units=1, activation='sigmoid', kernel_initializer='he_uniform'))
mlp.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
mlp.fit(X,y)
output_layer = mlp.layers[-1]

# Add and train second layer
mlp.pop()
for layer in mlp.layers:
    layer.trainable=False
mlp.add(keras.layers.Dense(units=512, activation='tanh', kernel_initializer='he_uniform'))
mlp.add(output_layer)
mlp.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
mlp.fit(X,y)
我得到的错误是

 ('Error when checking model target: expected no data, but got:', array([1., 0., 0., 1., 1., 0., 0., 0., 1., 0., 1., 0., 1., 0., 1., 1., 1.,
       0., 0., 1., 1., 0., 0., 1., 0., 0., 0., 1., 1., 1., 1., 0., 0., 1.,
       1., 0., 0., 1., 1., 1., 0., 0., 1., 1., 1., 1., 0., 0., 1., 1., 1.,
       0., 0., 1., 1., 1., 1., 0., 0., 1., 0., 0., 0., 1., 1., 1., 1., 1.,
       0., 0., 0., 1., 0.], dtype=float32))
如果我尝试注释第二次编译,我会得到

ValueError: Weights for model sequential_3 have not yet been created. Weights are created when the Model is first called on inputs or `build()` is called with an `input_shape`.
有人知道我错过了什么吗

如果相关的话,我使用Tensorflow-1.14.0后端运行Keras,该后端通过conda从mkl repo安装

~ $ conda list tensorflow
# packages in environment at /home/justin/.conda/envs/local_idp:
#
tensorflow                1.14.0          mkl_py36h2526735_0  
tensorflow-base           1.14.0          mkl_py36h7ce6ba3_0  
tensorflow-estimator      1.14.0                     py_0  
非常感谢,


贾斯汀

我能够重现这个问题。由于使用tensorflow命名空间中的keras,因此出现了此问题。替换

import tensorflow.keras as keras


我无法重现这个问题。fit()方法第二次也成功执行了。这很有趣——感谢您对它进行了测试。你能告诉我你使用的是哪一个版本的Keras和哪一个后端吗?Keras-2.2.4和tensorflow-1.14.0。我特别喜欢你在没有把它放在示例代码中的情况下计算出我的导入语句。天真地说,我会认为这两种进口产品是等价的。有没有什么简单的参考资料来说明区别是什么?我不知道有什么参考资料。但keras2.2.4是去年10月发布的。从那时起,主分支上发生了许多尚未发布的更改。我们有Keras 2.2.4,Keras master和tf.Keras。在这三个版本中,情况可能并不一致。
import keras