Python 如何解决TypeError:'<';在';int';和';str';?

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

我尝试使用以下代码从以下链接训练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, 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))
。但是使用module
argparse
可能更安全。谢谢!当我使用
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