weixin_43854220 2018-12-19 17:52 采纳率: 0%
浏览 4738

Keras, Tensorflow, ValueError

把csdn上一个颜值打分程序放到jupyter notebook上跑,程序如下:

from keras.applications import ResNet50
from keras import optimizers
from keras.layers import Dense, Dropout
from keras.callbacks import EarlyStopping, ReduceLROnPlateau, ModelCheckpoint
from keras.backend.tensorflow_backend import set_session


os.environ['CUDA_VISIBLE_DEVICES'] = '1'
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
set_session(tf.Session(config=config))


batch_size = 32
target_size = (224, 224)

resnet = ResNet50(include_top=False, pooling='avg')
resnet.trainable = False
# keras.backend.clear_session()
# tf.reset_default_graph() 
model = Sequential()
model.add(resnet)
model.add(Dropout(0.5))   
model.add(Dense(1, activation='sigmoid')) 
print(model.summary())
model.compile(optimizer=optimizers.SGD(lr=0.001), loss='mse')

callbacks = [EarlyStopping(monitor='val_loss',
                           patience=5,
                           verbose=1,
                           min_delta=1e-4),
             ReduceLROnPlateau(monitor='val_loss',
                               patience=3,
                               factor=0.1,
                               epsilon=1e-4),
             ModelCheckpoint(monitor='val_loss',
                             filepath='weights/resnet50_weights.hdf5',
                             save_best_only=True,
                             save_weights_only=True)]

train_file_list, test_file_list = read_data_list()
train_steps_per_epoch = math.ceil(len(train_file_list) / batch_size)
test_steps_per_epoch = math.ceil(len(test_file_list) / batch_size)

train_data = DataGenerator(train_file_list, target_size,batch_size)
test_data = DataGenerator(test_file_list, target_size, batch_size)

model.fit_generator(train_data,
                    steps_per_epoch=train_steps_per_epoch,
                    epochs=30,
                    verbose=1,
                    callbacks=callbacks,
                    validation_data=test_data,
                    validation_steps=test_steps_per_epoch,
                    use_multiprocessing=True)

结果引发如下错误:

ValueError Traceback (most recent call last)
in ()
20 # tf.reset_default_graph()
21 model = Sequential()
---> 22 model.add(resnet)
23 model.add(Dropout(0.5))
24 model.add(Dense(1, activation='sigmoid'))

...Ignoring many tracing lines...

ValueError: Variable bn_conv1/moving_mean/biased already exists, disallowed. Did you mean to set reuse=True in VarScope? Originally defined at:

File "xxxx\anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 1269, in init
self._traceback = _extract_stack()
File "xxxx\anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 2506, in create_op
original_op=self._default_original_op, op_def=op_def)
File "xxxx\anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 767, in apply_op
op_def=op_def)

    我按照网上说法在model语句前加了tf.reset_default_graph() ,结果又产生新的error:
    ValueError: Tensor("conv1_1/kernel:0", shape=(7, 7, 3, 64), dtype=float32_ref) must be from the same graph as Tensor("resnet50/conv1_pad/Pad:0", shape=(?, ?, ?, 3), dtype=float32).

    又按照网上说法加了keras.backend.clear_session(),总共加的两句前前后后在很多地方放了测试,结果都会有新的问题:
    ValueError: Tensor("conv1/kernel:0", shape=(7, 7, 3, 64), dtype=float32_ref) must be from the same graph as Tensor("resnet50/conv1_pad/Pad:0", shape=(?, ?, ?, 3), dtype=float32).


    请教大牛究竟该如何彻底解决问题。
  • 写回答

1条回答 默认 最新

  • 雲盧 2020-11-27 18:12
    关注

    请问楼主解决了吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)