You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移学习实践遇Python报错:无法将序列与float类型非整数相乘

解决"can't multiply sequence by non-int of type 'float'"报错问题

这个报错的根源很清晰——你在生成标签列表时用了普通除法/,得到的结果是浮点数类型,而Python里列表只能和整数相乘,哪怕数值上是整数但类型是float也不行。比如如果nb_train_samples是100,100/2得到的是50.0(float),用它去乘[0]就会触发这个错误。

两种快速解决方法:

  • 方法一:使用整数除法//
    Python的//运算符会直接返回整数结果(向下取整),刚好符合你这里把样本均匀分成两类的需求:

    train_data = np.load(open('bottleneck_features_train.npy', 'rb'))
    train_labels = np.array( [0] * (nb_train_samples // 2) + [1] * (nb_train_samples // 2))
    validation_data = np.load(open('bottleneck_features_validation.npy'))
    validation_labels = np.array( [0] * (nb_validation_samples // 2) + [1] * (nb_validation_samples // 2))
    
  • 方法二:用int()强制转换为整数
    如果你更习惯用/,可以把除法结果包裹在int()里,将浮点数转为整数:

    train_data = np.load(open('bottleneck_features_train.npy', 'rb'))
    train_labels = np.array( [0] * int(nb_train_samples / 2) + [1] * int(nb_train_samples / 2))
    validation_data = np.load(open('bottleneck_features_validation.npy'))
    validation_labels = np.array( [0] * int(nb_validation_samples / 2) + [1] * int(nb_validation_samples / 2))
    

额外提醒:

从你的代码逻辑来看,是要把样本均匀分成两类,所以最好确保nb_train_samples和nb_validation_samples都是偶数,这样标签数量和样本数能完全匹配,避免后续出现数据不对应的问题。

内容的提问来源于stack exchange,提问作者Oussama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:37:45