Python 如何解决TypeError:'<';在';int';和';str';?
我尝试使用以下代码从以下链接训练Keras-I3D模型: 。我稍微修改了代码,但我可以让它工作 导入的模块是Python 如何解决TypeError:'<';在';int';和';str';?,python,python-3.x,tensorflow,keras,sys,Python,Python 3.x,Tensorflow,Keras,Sys,我尝试使用以下代码从以下链接训练Keras-I3D模型: 。我稍微修改了代码,但我可以让它工作 导入的模块是 import os os.environ['KERAS_BACKEND'] = 'tensorflow' os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"]="3" from keras.layers import Dense, Flatten, Dropout, Re
import os
os.environ['KERAS_BACKEND'] = 'tensorflow'
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"]="3"
from keras.layers import Dense, Flatten, Dropout, Reshape
from keras import regularizers
from keras.preprocessing import image
from keras.models import Model, load_model
from keras.applications.vgg16 import preprocess_input
from keras.utils import to_categorical
from keras.optimizers import SGD
from i3d_inception import Inception_Inflated3d, conv3d_bn
from keras.callbacks import ReduceLROnPlateau, ModelCheckpoint, CSVLogger, Callback
from keras.utils import Sequence, multi_gpu_model
import random
import sys
from multiprocessing import cpu_count
import numpy as np
import glob
from skimage.io import imread
import cv2
一些定义
epochs = sys.argv[0]
#epochs = 17
model_name = sys.argv[0]
#model_name = model_name
version = sys.argv[0]
num_classes = 35
batch_size = 16
stack_size = 64
DataLoader_video_train = DataLoader_video_train
DataLoader_video_test = DataLoader_video_test
装配发电机
model.fit_generator(
generator = train_generator,
#validation_data=val_generator,
epochs = epochs,
steps_per_epoch = 17,
callbacks = [csvlogger, reduce_lr, model_checkpoint],
max_queue_size = 48,
workers = cpu_count() - 2,
use_multiprocessing = True,
)
print(model.evaluate_generator(generator = test_generator))
我得到以下错误
runfile('D:/Clones/i3d-master/i3d_train.py', wdir='D:/Clones/i3d-master')
Reloaded modules: i3d_inception
C:\Users\sancy\Anaconda3\lib\site-packages\keras\engine\training_generator.py:47: UserWarning: Using a generator with `use_multiprocessing=True` and multiple workers may duplicate your data. Please consider using the`keras.utils.Sequence class.
UserWarning('Using a generator with `use_multiprocessing=True`'
Traceback (most recent call last):
File "<ipython-input-8-8f7b9cc152d8>", line 1, in <module>
runfile('D:/Clones/i3d-master/i3d_train.py', wdir='D:/Clones/i3d-master')
File "C:\Users\sancy\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
execfile(filename, namespace)
File "C:\Users\sancy\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "D:/Clones/i3d-master/i3d_train.py", line 108, in <module>
use_multiprocessing = True,
File "C:\Users\sancy\Anaconda3\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "C:\Users\sancy\Anaconda3\lib\site-packages\keras\engine\training.py", line 1418, in fit_generator
initial_epoch=initial_epoch)
File "C:\Users\sancy\Anaconda3\lib\site-packages\keras\engine\training_generator.py", line 174, in fit_generator
while epoch < epochs:
TypeError: '<' not supported between instances of 'int' and 'str'
runfile('D:/Clones/i3d master/i3d\u train.py',wdir='D:/Clones/i3d master')
重新加载的模块:i3d_
C:\Users\sancy\Anaconda3\lib\site packages\keras\engine\training\u generator.py:47:UserWarning:使用带有“use\u multiprocessing=True”的生成器和多个worker可能会复制您的数据。请考虑使用“Kalas.UTILS.Stand类”。
UserWarning('使用带有'use\u multiprocessing=True'的生成器'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
运行文件('D:/Clones/i3d master/i3d_train.py',wdir='D:/Clones/i3d master')
文件“C:\Users\sancy\Anaconda3\lib\site packages\spyder\u kernels\customize\spyderrcustomize.py”,第827行,在runfile中
execfile(文件名、命名空间)
文件“C:\Users\sancy\Anaconda3\lib\site packages\spyder\u kernels\customize\spyderrcustomize.py”,第110行,在execfile中
exec(编译(f.read(),文件名,'exec'),命名空间)
文件“D:/Clones/i3d master/i3d_train.py”,第108行,在
使用_multiprocessing=True,
文件“C:\Users\sancy\Anaconda3\lib\site packages\keras\legacy\interfaces.py”,第91行,在包装器中
返回函数(*args,**kwargs)
文件“C:\Users\sancy\Anaconda3\lib\site packages\keras\engine\training.py”,第1418行,在fit\u generator中
初始_历元=初始_历元)
文件“C:\Users\sancy\Anaconda3\lib\site packages\keras\engine\training\u generator.py”,第174行,在fit\u generator中
而纪元<纪元:
TypeError:“如何运行代码?看看Github回购协议,它需要3个参数
在终端上,您应该这样运行它
python./i3d\u train.py
也许可以试试:epochs=int(sys.argv[0])
它可能被指定为str
类型,否则在以后的代码中不起作用。我这样做时出错了epochs=int(sys.argv[0])value错误:int()的文本无效,基数为10:'D:/Clones/i3d master/i3d\u train.py'
您应该使用sys.argv[1]
而不是sys.argv[0]
,因为在sys.argv[0]
中总是脚本名。如果您有更多的光电管,则需要[2]
,[3]
等。请参阅打印(sys.argv)
和打印(len(sys.argv))
。但是使用moduleargparse
可能更安全。谢谢!当我使用sys.argv[1]
时,我在epochs=sys.argv[1]索引器中的第27行得到了这个文件“D:/Clones/i3d master/i3d_train.py”。我将尝试使用argparse
这是否回答了您的问题?Python函数错误:“我的坏消息。”。非常感谢。
model.fit_generator(
generator = train_generator,
#validation_data=val_generator,
epochs = epochs,
steps_per_epoch = 17,
callbacks = [csvlogger, reduce_lr, model_checkpoint],
max_queue_size = 48,
workers = cpu_count() - 2,
use_multiprocessing = True,
)
print(model.evaluate_generator(generator = test_generator))
runfile('D:/Clones/i3d-master/i3d_train.py', wdir='D:/Clones/i3d-master')
Reloaded modules: i3d_inception
C:\Users\sancy\Anaconda3\lib\site-packages\keras\engine\training_generator.py:47: UserWarning: Using a generator with `use_multiprocessing=True` and multiple workers may duplicate your data. Please consider using the`keras.utils.Sequence class.
UserWarning('Using a generator with `use_multiprocessing=True`'
Traceback (most recent call last):
File "<ipython-input-8-8f7b9cc152d8>", line 1, in <module>
runfile('D:/Clones/i3d-master/i3d_train.py', wdir='D:/Clones/i3d-master')
File "C:\Users\sancy\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
execfile(filename, namespace)
File "C:\Users\sancy\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "D:/Clones/i3d-master/i3d_train.py", line 108, in <module>
use_multiprocessing = True,
File "C:\Users\sancy\Anaconda3\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "C:\Users\sancy\Anaconda3\lib\site-packages\keras\engine\training.py", line 1418, in fit_generator
initial_epoch=initial_epoch)
File "C:\Users\sancy\Anaconda3\lib\site-packages\keras\engine\training_generator.py", line 174, in fit_generator
while epoch < epochs:
TypeError: '<' not supported between instances of 'int' and 'str'
epochs = int(sys.argv[1])
model_name = sys.argv[2]
version = sys.argv[3]
export PATH=/home/sdas/anaconda2/bin:$PATH
module load cuda/8.0 cudnn/5.1-cuda-8.0 opencv/3.4.1
mkdir -p weights_$2
python ./i3d_train.py $1 $2 $3