Arrobear 2024-02-07 01:05 采纳率: 0%
浏览 7
已结题

tensorflow1.15保存错误

和这篇文章中类似的问题,https://blog.csdn.net/qq_36810544/article/details/81456182
我的网络是个9*60的全链接网络,试着用文章中的方法解决,但是总报错ValueError: Slices must all be slices

    def train(self, nIter):  
        W = self.weights
        b = self.biases
        a = self.activs
        
        variables_dict = {'weights': W,'biases': b,'activs': a}
        
        saver = tf.train.Saver(variables_dict)
  • 写回答

13条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-07 01:05
    关注
    获得0.60元问题酬金

    引自免费微信小程序:皆我百晓生

    在TensorFlow 1.15中,使用tf.train.Saver()保存模型时出现“ValueError: Slices must all be slices”错误,通常是因为尝试保存的变量不是张量或者其形状不正确,导致在构建saver时无法处理。针对您提供的代码片段和描述,全连接网络中的权重(weights)、偏置(biases)和激活值(activations)都应该是一维或二维张量。

    为了更好地帮助您解决这个问题,请检查以下几点:

    1. 确保self.weightsself.biasesself.activs是TensorFlow的Variable对象,并且它们具有正确的形状和数据类型。
    2. 激活值(activations)通常不会被保存,因为它们是在运行过程中动态计算得到的中间结果,而非训练参数。保存模型时重点关注权重和偏置即可。
    3. 检查这些变量是否有可能包含不能直接被Saver处理的数据结构,例如列表或其他非张量类型。

    这里是一个简单的全连接层模型定义以及保存模型的示例代码:

    import tensorflow as tf
    
    class FCNetwork:
        def __init__(self, input_size, output_size):
            self.input_size = input_size
            self.output_size = output_size
    
            # 初始化权重和偏置
            self.weights = tf.Variable(tf.random.normal([input_size, output_size]), name='weights')
            self.biases = tf.Variable(tf.zeros([output_size]), name='biases')
    
        def build_model(self, inputs):
            return tf.matmul(inputs, self.weights) + self.biases
    
        def train(self, nIter, session, optimizer, inputs, labels):
            # 假设已经有了优化器和损失函数
            for _ in range(nIter):
                # 这里省略了训练步骤...
    
            # 定义Saver
            saver = tf.train.Saver()
    
            # 保存模型
            save_path = saver.save(session, 'model.ckpt')
            print(f"Model saved in path: {save_path}")
    
    # 示例用法
    n_inputs = 9
    n_outputs = 60
    net = FCNetwork(n_inputs, n_outputs)
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        
        # 训练网络...
        
        net.train(nIter=1000, session=sess, optimizer=tf.train.AdamOptimizer(), 
                  inputs=tf.placeholder(tf.float32, [None, n_inputs]), 
                  labels=tf.placeholder(tf.float32, [None, n_outputs]))
    
    

    请确保在调用saver.save()之前已经正确初始化并运行了会话(Session),并且所有需要保存的变量都已经在TensorFlow图中定义为Variable对象。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月15日
  • 创建了问题 2月7日

悬赏问题

  • ¥15 asp写PC网站开通了微信支付,扫码付款不能跳转
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 关于#c语言#的问题:我在vscode和codeblocks中编写c语言时出现打不开源文件该怎么办
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥500 服务器搭建cisco AnyConnect vpn
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊