鱼C论坛

 找回密码
 立即注册
楼主: 不二如是

[其他工具] 纳尼!「FishC」AI小助手来啦!!学习/娱乐/排忧解难 必备佳品~~

  [复制链接]
发表于 2024-4-11 17:30:17 | 显示全部楼层
FishC 发表于 2024-4-11 17:05
你好!根据你的描述,你在终端中执行了一个名为"train.py"的Python脚本,并传入了一些参数。同时,你也 ...

我在运行训练的代码之后出现这些东西,这是有什么问题吗还是说已经训练好了
AttributeError: module 'numpy' has no attribute 'int'.
`np.int` was a deprecated alias for the builtin `int`. To avoid this error in existing code, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
    https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations


@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 17:30:39 | 显示全部楼层
ShuviDoura 发表于 2024-04-11 17:30
我在运行训练的代码之后出现这些东西,这是有什么问题 ...


这个错误提示是因为你的代码中使用了已经废弃的`np.int`,而最新的NumPy版本中已经不再支持这个别名。

为了解决这个问题,你可以将代码中所有的`np.int`替换为`int`,这样就可以避免出现错误。例如,如果你之前的代码是这样写的:
import numpy as np
x = np.array([1, 2, 3])
y = np.int(5)

你只需要修改为:
import numpy as np
x = np.array([1, 2, 3])
y = int(5)

如果你在其他地方使用了`np.int`的精度指定(例如`np.int64`或`np.int32`),你可以根据实际需要进行相应的替换。

这样修改后,你的代码就不会再出现该错误了。请记住,修改代码后记得重新运行,以测试修改后的代码是否正常运行。祝你编程顺利!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 17:32:44 | 显示全部楼层
FishC 发表于 2024-4-11 17:30
这个错误提示是因为你的代码中使用了已经废弃的`np.int`,而最新的NumPy版本中已经不再支持这个别名。
...

我有很多的.py的文件,我是要替换哪些文件?


@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 17:32:58 | 显示全部楼层
ShuviDoura 发表于 2024-04-11 17:32
我有很多的.py的文件,我是要替换哪些文件?


@Fi ...


如果您想要替换所有的.py文件,您可以将这些文件所在的目录传递给一个函数,然后在这个函数中使用递归遍历文件夹,并对每个.py文件进行相应的操作。以下是一个示例代码:
import os

def replace_files(directory):
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith('.py'):  # 只处理以.py结尾的文件
                file_path = os.path.join(root, file)
                # 在这里编写对文件的替换操作
                # 例如,您可以使用open函数打开文件并进行替换操作
                # 注意,替换操作可能会覆盖原始文件,请谨慎操作

# 调用函数并传递文件夹路径
replace_files('/path/to/your/directory')

请将`/path/to/your/directory`替换为包含您.py文件的实际文件夹路径。在`replace_files`函数的注释部分,您可以编写实际的替换操作,例如使用`open`函数打开文件并进行替换操作。请注意,替换操作可能会覆盖原始文件,请谨慎操作并备份重要文件。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 17:39:45 | 显示全部楼层
FishC 发表于 2024-4-11 17:30
这个错误提示是因为你的代码中使用了已经废弃的`np.int`,而最新的NumPy版本中已经不再支持这个别名。
...

里面有一部分是这样的,包含了np.int:
    if len(stats) and stats[0].any():
        p, r, ap, f1, ap_class = ap_per_class(*stats, plot=plots, save_dir=save_dir, names=names)
        ap50, ap = ap[:, 0], ap.mean(1)  # AP@0.5, AP@0.5:0.95
        mp, mr, map50, map = p.mean(), r.mean(), ap50.mean(), ap.mean()
        nt = np.bincount(stats[3].astype(np.int64), minlength=nc)  # number of targets per class
但是改为int之后就会报错

@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 17:39:59 | 显示全部楼层
ShuviDoura 发表于 2024-04-11 17:39
里面有一部分是这样的,包含了np.int:
    if len(s ...


报错信息可能是因为在使用`np.bincount`函数时,传入的参数类型不一致。`np.bincount`函数要求传入的参数是整型数组,而`stats[3]`可能是其他类型的数组。

你可以尝试将`stats[3]`转换为整型数组,然后再调用`np.bincount`函数。示例如下:
nt = np.bincount(stats[3].astype(np.int64), minlength=nc)

这里使用了`astype`函数将`stats[3]`的数据类型转换为`np.int64`,然后再传入`np.bincount`函数中。

如果报错仍然存在,请提供完整的报错信息,以便进一步解答。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 18:38:40 | 显示全部楼层
FishC 发表于 2024-4-11 17:39
报错信息可能是因为在使用`np.bincount`函数时,传入的参数类型不一致。`np.bincount`函数要求传入的参 ...

这个怎么解决

File "C:\Users\shiro\Desktop\01\yolov5-mask-42-master\utils\loss.py", line 120, in __call__
    tcls, tbox, indices, anchors = self.build_targets(p, targets)  # targets
  File "C:\Users\shiro\Desktop\01\yolov5-mask-42-master\utils\loss.py", line 217, in build_targets
    indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1)))  # image, anchor, grid indices
RuntimeError: result type Float can't be cast to the desired output type __int64

@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 18:38:57 | 显示全部楼层
ShuviDoura 发表于 2024-04-11 18:38
这个怎么解决

File "C:\Users\shiro\Desktop\01\y ...


这个错误是因为在代码中进行了类型转换时出错。具体来说,目标检测模型的损失函数中,计算了一些索引的值,并尝试将浮点数转换为整数类型。但是,由于转换后的值超出了整数类型能表示的范围,导致了这个错误。

为了解决这个问题,你可以尝试以下几种方法:

1. 检查输入数据:首先确保输入的数据类型正确,并且没有出现异常值或者超出范围的值。如果数据有问题,可以尝试做一些数据预处理,例如将小数部分截断或者缩放数据到合适的范围内。

2. 修改代码逻辑:如果确保输入数据没有问题,那么可能是代码中的某些逻辑需要修改。可以检查一下相关代码段,看是否存在类型转换的问题。你可以尝试使用不同的转换方式,例如使用取整函数(如`int()`)来进行类型转换,或者使用相应的类型转换函数(如`float()`)来显式地转换数据类型。

3. 检查库和版本:有时候,这个错误可能与使用的库或者库的版本有关。你可以检查一下使用的库是否最新,或者尝试使用其他版本的库来解决这个问题。

希望以上建议对你有帮助!如果你可以提供更多的代码和上下文信息,我可以给出更具体的解决方案。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 18:44:20 | 显示全部楼层
FishC 发表于 2024-4-11 18:38
这个错误是因为在代码中进行了类型转换时出错。具体来说,目标检测模型的损失函数中,计算了一些索引的 ...

这部分具体要怎么做:
检查输入数据:首先确保输入的数据类型正确,并且没有出现异常值或者超出范围的值。如果数据有问题,可以尝试做一些数据预处理,例如将小数部分截断或者缩放数据到合适的范围内。

@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 18:44:34 | 显示全部楼层
ShuviDoura 发表于 2024-04-11 18:44
这部分具体要怎么做:
检查输入数据:首先确保输入的 ...


在编程中,检查输入数据的类型和有效性是非常重要的。以下是一些常见的方法来检查和处理输入数据:

1. 检查数据类型:
   使用条件语句(如`if`语句)或断言(`assert`语句)来验证数据类型是否正确。例如,可以使用`isinstance()`函数来检查数据是否属于特定类型。
def process_input(data):
    if isinstance(data, int):
        # 处理整数类型的数据
        ...
    elif isinstance(data, float):
        # 处理浮点数类型的数据
        ...
    else:
        # 处理其他数据类型
        ...

2. 处理异常值:
   在处理输入数据之前,可以使用`try-except`语句来捕获和处理可能出现的异常。例如,当用户输入一个无效的字符时,可以提示用户重新输入合法的数据。
def get_input():
    while True:
        try:
            data = input("请输入一个整数:")
            data = int(data)
            break
        except ValueError:
            print("输入无效,请重新输入。")

    return data

3. 数据预处理:
   如果输入数据超出了你程序所能处理的范围,可以尝试对数据进行预处理。例如,可以使用函数`round()`来截断小数部分,或者使用条件语句来限制数据的取值范围。
def preprocess_data(data):
    # 截断小数部分
    data = int(data)

    # 限制数据取值在0到100之间
    if data < 0:
        data = 0
    elif data > 100:
        data = 100

    return data

记住,在编写代码时要考虑到所有可能的情况,并根据实际需求来处理输入数据的类型和有效性。希望这些示例代码对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-14 00:51:07 | 显示全部楼层
#include <stdio.h>

int count = 0;

int notDanger(int row, int j, int (*chess)[8])
{
        int i, k;
        int flag1 = 0;
        int flag2 = 0;
        int flag3 = 0;
        int flag4 = 0;
        int flag5 = 0;

        //判断列方向
        for (i = 0; i < 8; i++)
        {
                if ( *(*(chess + i) + j) != 0 )
                {
                        flag1 = 1;
                        break;
                }
        }
       
        //判断左上方
        for (i = row, k = j; i >= 0 && k >= 0; i--, k--)
        {
                if ( *(*(chess + i) + k) != 0 )
                {
                        flag2 = 1;
                        break;
                }
        }
       
        //判断右下方
        for (i = row, k = j; i < 8 && k < 8; i++, k++)
        {
                if ( *(*(chess + i) + k) != 0 )
                {
                        flag3 = 1;
                        break;
                }
        }
       
        //判断右上方
        //!!!此处判断条件写错了,导致出了问题
        for (i = row, k = j; i >= 0 && k < 8; i--, k++)
        {
                if ( *(*(chess + i) + k) != 0 )
                {
                        flag4 = 1;
                        break;
                }
        }
       
        //判断左下方
        for (i = row, k = j; i < 8 && k >= 0; i++, k--)
        {
                if (*(*(chess + i) + k) != 0)
                {
                        flag5 = 1;
                        break;
                }
        }
       
        if (flag1 || flag2 || flag3 || flag4 || flag5)
        {
                return 0;
        }
        else
        {
                return 1;
        }
       
}

//参数row:表示起始行
//参数n:表示列数
//参数(*chess)[8]:表示指向棋盘每一行的指针
void EightQueen(int row, int n, int (*chess)[8])
{
        int chess2[8][8];
        int i, j;
       
        for (i = 0; i < 8; i++)
        {
                for (j = 0; j < 8; j++)
                {
                        chess2[i][j] = chess[i][j];
                }
        }
       
        if (8 == row)
        {
                printf("第%d 种\n", count + 1);
                for (i = 0; i < 8; i++)
                {
                        for (j = 0; j < 8; j++)
                        {
                                printf("%d ", *((*chess2 + i) + j));
                        }
                        printf("\n");
                }
                printf("\n");
                count++;
        }
        else
        {
                // 判断这个位置是否有危险
                //如果没有危险,继续往下
               
                for (j = 0; j < n; j++)
                {
                        if (notDanger(row, j, chess))//判断是否危险
                        {
                                for (i = 0; i < 8; i++)
                                {
                                        *(*(chess2 + row) + i) = 0;
                                }
                                *(*(chess2 + row) + j) = 1;
                               
                                EightQueen(row + 1, n, chess2);
                        }
                }
        }
}

int main()
{
        int chess[8][8];
       
        int i, j;
       
        for (i = 0; i < 8; i++)
        {
                for (j = 0; j < 8; j++)
                {
                        chess[i][j] = 0;
                }               
        }
        EightQueen(0, 8, chess);
        printf("总共有 %d 种解决问题\n", count);
       
        return 0;
}

@FishC,这个程序为什么错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-14 00:51:44 | 显示全部楼层
道化師 发表于 2024-4-14 00:51
#include

int count = 0;



@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-14 00:51:53 | 显示全部楼层


哈喽!我是FishC的计算机教育专家,很高兴能回答你的问题。无论是编程中的困惑还是疑问,我都会尽力用通俗易懂且幽默的方式为你解答。那么,你有什么问题呢?不管是关于语法、逻辑还是一些小技巧,我会尽力帮助你。赶快告诉我吧!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-19 17:39:07 | 显示全部楼层
@FishC
你会QT吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-19 17:41:00 | 显示全部楼层
你会使用qt吗
@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-19 17:43:18 | 显示全部楼层


哈喽!是的,我会一点儿Qt编程。Qt是一个跨平台的C++应用程序框架,非常适合用于开发图形用户界面(GUI)应用程序。

如果你对Qt感兴趣,我可以给你一些入门的建议。首先,你需要安装Qt开发环境。你可以去Qt官网下载安装包,并根据指引进行安装。

安装完成后,你就可以开始编写你的第一个Qt程序了。下面是一个简单的例子,创建一个窗口并显示一个按钮:
#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QPushButton button("点击我!", nullptr);
    button.resize(200, 100);
    button.show();

    return app.exec();
}

在这个例子中,我们首先包含了两个头文件,`<QApplication>`和`<QPushButton>`。然后,我们创建了一个`QApplication`对象来管理应用程序的生命周期。接着,我们创建了一个`QPushButton`对象,并设置了按钮的文本和大小,并将其显示出来。最后,我们调用`app.exec()`方法来进入Qt的事件循环,使程序保持运行。

这只是Qt编程的一个小小入门,还有很多其他的功能和组件可以探索。希望这个例子对你有帮助!如果你有任何更具体的问题,欢迎随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-19 17:43:30 | 显示全部楼层
小坛砸 发表于 2024-04-19 17:41
你会使用qt吗
@FishC


当然会啦!Qt是一个非常强大的跨平台应用程序开发框架,它提供了丰富的库和工具,可以帮助我们更轻松地编写图形用户界面(GUI)程序。

首先,你需要安装Qt框架,然后就可以开始使用了。让我们来看一个简单的例子,创建一个窗口并显示一个按钮。
#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QPushButton button("Hello Qt!");
    button.show();

    return app.exec();
}

在这个例子中,我们包含了两个Qt的头文件:`<QApplication>` 和 `<QPushButton>`。`QApplication` 是创建Qt应用程序的主要类,`QPushButton` 是用于创建按钮的类。

在 `main()` 函数中,我们首先创建了一个 `QApplication` 对象 `app`,它管理了整个应用程序的生命周期。然后,我们创建了一个 `QPushButton` 对象 `button` 并设置了它的文本为 "Hello Qt!"。最后,我们调用了 `show()` 函数来显示按钮,然后通过 `app.exec()` 进入事件循环,等待用户的交互。

这只是一个简单的示例,Qt还有许多其他功能和模块,例如绘图、网络通信、数据库访问等等。如果你想深入学习Qt,可以研究更多的官方文档和示例代码。希望你会喜欢Qt编程的乐趣!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-25 21:11:40 | 显示全部楼层
假设阶码取3位,尾数取6位(均不包括符号位),计算下列各题。 ( 1 ) [ 2∧ 5 × ( 11 / 16 ) ] + [ 2∧ 4 × ( &#8722; 9 / 16 ) ] ( 2 ) [ 2∧ &#8722; 3 × ( 13 / 16 ) ] &#8722; [ 2∧ &#8722; 4 × ( &#8722; 5 / 8 ) ] ( 3 ) [ 2∧3 × ( 13 / 16 ) ] × [ 2∧4 × ( &#8722; 9 / 16 ) ] ( 4 ) [ 2∧6 × ( &#8722; 11 / 16 ) ] ÷ [ 2∧3 × ( &#8722; 15 / 16 ) ] ( 5 ) [ 2∧3 × ( &#8722; 1 ) ] × [ 2∧&#8722; 2 × 57 / 64 ] ( 6 ) [ 2∧&#8722; 6 × ( &#8722; 1 ) ] ÷ [ 2∧7 × ( &#8722; 1 / 2 ) ] ( 7 ) 3.3125 + 6.125 ( 8 ) 14.75 &#8722; 2.4375
@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-25 21:15:35 | 显示全部楼层
假设阶码取3位,尾数取6位(均不包括符号位),计算下列各题。
( 1 ) [ 2∧ 5 × ( 11 / 16 ) ] + [ 2∧ 4 × (  -9 / 16 ) ]
( 2 ) [ 2∧ -3 × ( 13 / 16 ) ] - [ 2∧ -4 × ( -5 / 8 ) ]
( 3 ) [ 2∧3 × ( 13 / 16 ) ] × [ 2∧4 × ( -9 / 16 ) ]
( 4 ) [ 2∧6 × ( -11 / 16 ) ] ÷ [ 2∧3 × ( -15 / 16 ) ]
( 5 ) [ 2∧3 × ( -1 ) ] × [ 2∧-2 × 57 / 64 ]
( 6 ) [ 2∧-6 × ( -1 ) ] ÷ [ 2∧7 × ( -1 / 2 ) ]
( 7 ) 3.3125 + 6.125
( 8 ) 14.75 - 2.4375
@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-25 21:15:57 | 显示全部楼层
fish.kai 发表于 2024-04-25 21:15
假设阶码取3位,尾数取6位(均不包括符号位),计算下列 ...


首先,我们需要了解一些关于浮点数的基础知识。

浮点数表示法由阶码和尾数两部分组成。阶码确定了浮点数的大小,尾数则决定了浮点数的精度。通常情况下,浮点数的表示形式为:(-1)^s × M × 2^E,其中s表示符号位,M表示尾数,E表示阶码。

根据题目中给出的阶码取3位,尾数取6位,则浮点数的取值范围为:

阶码:-2^2 ~ 2^2 - 1 = -4 ~ 3
尾数:-0.5 ~ 0.499999

现在我们来计算每个问题的结果。

( 1 ) [ 2^5 × ( 11 / 16 ) ] + [ 2^4 × ( -9 / 16 ) ]
首先计算指数部分,得到2^5 = 32,2^4 = 16
然后计算尾数部分,得到32 × (11 / 16) = 22 和 16 × (-9 / 16) = -9
最后将两个结果相加得到结果,22 + (-9) = 13

( 2 ) [ 2^-3 × ( 13 / 16 ) ] - [ 2^-4 × ( -5 / 8 ) ]
首先计算指数部分,得到2^-3 = 1/8,2^-4 = 1/16
然后计算尾数部分,得到1/8 × (13 / 16) = 1.625 和 1/16 × (-5 / 8) = -0.3125
最后将两个结果相减得到结果,1.625 - (-0.3125) = 1.9375

( 3 ) [ 2^3 × ( 13 / 16 ) ] × [ 2^4 × ( -9 / 16 ) ]
首先计算指数部分,得到2^3 = 8,2^4 = 16
然后计算尾数部分,得到8 × (13 / 16) = 6.5 和 16 × (-9 / 16) = -9
最后将两个结果相乘得到结果,6.5 × (-9) = -58.5

( 4 ) [ 2^6 × ( -11 / 16 ) ] ÷ [ 2^3 × ( -15 / 16 ) ]
首先计算指数部分,得到2^6 = 64,2^3 = 8
然后计算尾数部分,得到64 × (-11 / 16) = -44 和 8 × (-15 / 16) = -7.5
最后将两个结果相除得到结果,-44 ÷ (-7.5) = 5.86667

( 5 ) [ 2^3 × ( -1 ) ] × [ 2^-2 × 57 / 64 ]
首先计算指数部分,得到2^3 = 8,2^-2 = 1/4
然后计算尾数部分,得到8 × (-1) = -8 和 1/4 × (57 / 64) = 0.4453125
最后将两个结果相乘得到结果,-8 × 0.4453125 = -3.5625

( 6 ) [ 2^-6 × ( -1 ) ] ÷ [ 2^7 × ( -1 / 2 ) ]
首先计算指数部分,得到2^-6 = 1/64,2^7 = 128
然后计算尾数部分,得到1/64 × (-1) = -0.015625 和 128 × (-1 / 2) = -64
最后将两个结果相除得到结果,-0.015625 ÷ (-64) = 0.000244141

( 7 ) 3.3125 + 6.125
直接相加得到结果,3.3125 + 6.125 = 9.4375

( 8 ) 14.75 - 2.4375
直接相减得到结果,14.75 - 2.4375 = 12.3125

希望这些计算过程对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 10:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表