m0_56062032 2024-03-09 22:20 采纳率: 65.4%
浏览 2
已结题

tensorflow

最后一步了,它老说切片错误,查了很多都是这个错误,求指导,求指导

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-09 22:20
    关注

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

    在您提供的代码中,错误提示是 'TypeError: 'ellipsis' object is not subscriptable,这表明 predicts 变量不是一个可以进行切片操作的数组或矩阵对象,而是Python中的 Ellipsis 对象。在TensorFlow或者其他numpy-like库中,通常使用 ...Ellipsis 来表示选取所有可能的维度,但它不能直接与整数索引结合使用。

    从您的意图来看,您应该是想根据用户输入的编号,找到该用户对应的预测评分,并对电影进行排序。因此,我们需要确保 predicts 是一个二维数组,并且能够通过指定的用户ID进行切片访问。

    请检查以下几点:

    1. 确保 predicts 是一个2D张量或numpy数组,其第一维代表不同的用户,第二维代表不同的电影。
    2. 用户ID输入转换成整数后,它应该是一个有效的索引,即小于等于 predicts 第一维的大小。

    修正后的代码应为:

    # 假设 predicts 是一个 (n_users, n_movies) 形状的 numpy 数组或 TensorFlow 张量
    user_id = int(input(u'您要想哪位用户进行推荐?请输入用户编号:'))
    # 检查用户编号的有效性
    if 0 <= user_id < predicts.shape[0]:
        sortedResult = predicts[user_id, :].argsort()[::-1]
        print(u'为该用户推荐的评分最高的20部电影是: '.center(80, '='))
        idx = 0
        for i in sortedResult:
            print(u'评分: %.2f, 电影名: %s' % (predicts[user_id, i] - 2, movies_df.iloc[i]['title']))
            idx += 1
            if idx == 20:
                break
    else:
        print("输入的用户编号无效,请输入一个介于0和{}之间的整数".format(predicts.shape[0] - 1))
    

    这段代码首先会确认输入的用户ID是否有效,然后对相应用户的所有电影预测评分进行降序排序,并输出前20部评分最高的电影信息。如果 predicts 不是numpy数组,而是一个TensorFlow tensor,在使用时需要将其转换成numpy格式或者在TensorFlow环境下执行相应的计算操作。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 已采纳回答 3月18日
  • 创建了问题 3月9日

悬赏问题

  • ¥15 关于#.net#的问题:End Function
  • ¥50 用AT89C52单片机设计一个温度测量与控制电路
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义
  • ¥15 嵌入式--定时器使用
  • ¥20 51单片机学习中的问题
  • ¥30 Windows Server 2016利用兩張網卡處理兩個不同網絡
  • ¥15 Python中knn问题