0

有人能解释为什么我'raise TuneError("Improper 'run' - not string nor trainable.") ray.tune.error.TuneError: Improper 'run' - not string nor trainable.'从下面的代码中得到(理想情况下如何修复它,因为我有点迷茫,例如我看不到如何在我的配置文件中读取)?请注意,我必须使用 tune.with_parameters() ,因为没有它会耗尽资源。

import numpy as np
from tensorflow import keras
import tensorflow as tf
import pickle
import pandas as pd
from numpy import mean
from numpy import std
from numpy import array

from tensorflow.keras.models import load_model, Model
from tensorflow.keras.callbacks import Callback
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM, Bidirectional, MaxPool1D,Activation, Masking,SpatialDropout1D, Dropout, Average, GaussianNoise, Embedding, Flatten, Input, Concatenate, Bidirectional, LSTM, Conv1D, Conv2D, SpatialDropout1D, GRU, BatchNormalization
from tensorflow.keras.callbacks import ModelCheckpoint,ReduceLROnPlateau,EarlyStopping
from tensorflow.keras import optimizers
from tensorflow.keras.metrics import TruePositives
from tensorflow.keras.losses import BinaryCrossentropy
from tensorflow.keras.regularizers import l2
import keras_tuner as kt


from tensorflow.python.keras.callbacks import EarlyStopping
from sklearn.model_selection import KFold
import matplotlib.pyplot as plt

import ray
from ray import tune
from ray.tune.schedulers import ASHAScheduler
from ray.tune.suggest.bayesopt import BayesOptSearch
from ray.tune.suggest.hyperopt import HyperOptSearch
from ray.tune.suggest.hebo import HEBOSearch
from ray.tune.suggest.dragonfly import DragonflySearch
from ray.tune.suggest.skopt import SkOptSearch

X_train = np.load('train_aa.npy')
y_train = np.loadtxt('y_train.txt')

def network(config,data=None):
    model = Sequential()
    model.add(Input(shape=(30,1028)))
    model.add(Masking(mask_value=0.))
    model.add(Bidirectional(LSTM(20)))
    model.add(Dropout(0.2))
    model.add(Dense(64, activation='tanh'))
    model.add(Dropout(0.2))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy',
                      optimizer='adam',
                      metrics=['accuracy'])

    history = model.fit(X_train, y_train, 
        epochs=2,  
        verbose=1,
        validation_split=(0.2))
    
    _, acc = model.evaluate(X_train,y_train,verbose=1) #this is wrong
    #tune.report(mean_acc = acc) #fix this

    return


hyperopt_search = HyperOptSearch(metric="val_acc", mode="max")
analysis = tune.with_parameters(
    network,
)
    #max_concurrent_trials = 2,
    #search_algorithm=hyperopt_search,

    #config = {
        #"dropout": tune.grid_search([0.1, 0.5, 0.6]),
        #"dense": tune.grid_search([64, 128]),
    #    })

tune.run(analysis(network))
#print("Best config: ", analysis.get_best_config(
#    metric="mean_acc", mode="max"))

ray.shutdown()

请注意,我可以看到文档说要运行tune.run(tune.with_parameters(network,data=data),但是当我读取 X_train 数据时,出现错误TypeError: _inner() got an unexpected keyword argument 'data'

4

0 回答 0