Keras模型突然输出Tensor,如何恢复以适配DQN Agent?
解决DQN模型输出形状异常的方法
彻底重置TensorFlow环境
该参数会修改TensorFlow的全局图行为,即使改回False,残留的图状态可能依然影响模型输出。执行以下操作:- 运行
tf.compat.v1.reset_default_graph()清空默认图 - 重启Python解释器,重新运行所有代码,不要复用之前定义的模型对象
- 运行
修正模型输出维度
当前输出形状(None,1,2)多了一个冗余的中间维度,可以在模型最后添加维度挤压操作:# 示例模型定义,根据你的实际结构调整 model = tf.keras.Sequential([ tf.keras.layers.Dense(64, activation='relu', input_shape=(4,)), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(2, activation='linear'), # 挤压掉索引为1的维度,将(None,1,2)转为(None,2) tf.keras.layers.Lambda(lambda x: tf.squeeze(x, axis=1)) ])也可以用
Flatten()层替代Lambda层,效果一致。重新定义模型结构
不要加载之前保存的模型文件,完全从头编写模型定义代码,确保每一层的输入输出形状符合预期。比如检查是否误加了会增加维度的层(如Reshape、带return_sequences=True的循环层残留配置)。
内容的提问来源于stack exchange,提问作者sleexed
相关产品推荐
相关产品推荐

