使用Alexnet进行转移学习的错误

发布于 2025-01-26 15:39:13 字数 8931 浏览 4 评论 0原文

我正在尝试在Alexnet进行转移学习,从时尚MNIST到MNIST。 我收到的错误是

InvalidArgumentError

Trackback(最近的电话最后一次)
在()
2#alex1.compile(优化器='adam',损失= tf.keras.losses.sparsecategoricalCrossentropy(from_logits = true),量表= ['cercucy'])

) 3 tic = time.time()
----> 4历史= alex1.fit(x_train,y_train,batch_size = 128,epochs = 20,验证_data =(x_val2,y_val2))
5 toc = time.time()
6 elapsed_time = toc-tic

1帧
/USR/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py in
Quick_execute(op_name,num_outputs,inputs,intups,attrs,attrs,ctx,name)

53 ctx.ensure_initialized()
54张量= pywrap_tfe.tfe_py_execute(ctx._handle,device_name,op_name,
---> 55个输入,attrs,num_outputs)
56除了core._notokStatusexception为e:
57如果名称不是没有:

invalidargumentError:图形执行错误:

在Node上检测到的“等价”(最新呼叫上次):
文件“/usr/lib/python3.7/runpy.py”,第193行,在_run_module_as_main中 “ main ”,mod_spec)
文件“/usr/lib/python3.7/runpy.py”,第85行,在_run_code中 exec(代码,run_globals)
文件“/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py”,第16行,in app.launch_new_instance()
文件“/usr/local/lib/python3.7/dist-packages/traitlets/config/application.py”,第846行,in lunage_instance
app.start()
文件“/usr/local/lib/python3.7/dist-packages/ipykernel/kernelapp.py”,第499行,开始 self.io_loop.start()
文件“/usr/local/lib/python3.7/dist-packages/tornado/platform/asyncio.py”,第132行 self.asyncio_loop.run_forever()
文件“/usr/lib/python3.7/asyncio/base_events.py”,第541行,在run_forever中 self._run_once()
文件“/usr/lib/python3.7/asyncio/base_events.py”,第1786行,in _run_once hander._run()
文件“/usr/lib/python3.7/asyncio/events.py”,第88行,in _run self._context.run(self._callback, *self._args)
文件“/usr/local/lib/python3.7/dist-packages/tornado/platform/asyncio.py”,第122行,in _handle_events handler_func(fileObj,events)
文件“/usr/local/lib/python3.7/dist-packages/tornado/stack_context.py”,第300行,在null_wrapper中 返回fn(*args,** kwargs)
文件“/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py”,第452行,in _handle_events self._handle_recv()
文件“/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py”,第481行,in _Handle_Recv self._run_callback(回调,msg)
文件“/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py”,第431行,在_run_callback中 回调(*args,** kwargs)
文件“/usr/local/lib/python3.7/dist-packages/tornado/stack_context.py”,第300行,在null_wrapper中 返回fn(*args,** kwargs)
文件“/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py”,第283行,在调度员中 返回self.dispatch_shell(流,msg)
文件“/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py”,第233行,在dispatch_shell中 处理程序(流,男子,味精)
文件“/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py”,第399行,在execute_request中 user_expressions,laster_stdin)
文件“/usr/local/lib/python3.7/dist-packages/ipykernel/ipkernel.py”,第208行,在do_execute中 res = shell.run_cell(代码,store_history = store_history,silent = silent = silent)
文件“/usr/local/lib/python3.7/dist-packages/ipykernel/zmqshell.py”,第537行,在run_cell中 返回super(zmqinteractiveshell,self).run_cell(*args,** kwargs)
文件“/usr/local/lib/python3.7/dist-packages/ipython/core/interactiveshell.py”,第2718行,在run_cell中 互动=互动性,编译器=编译器,结果=结果)
文件“/usr/local/lib/python3.7/dist-packages/ipython/core/interactiveshell.py”,第2822行,在run_ast_nodes中 如果self.run_code(代码,结果):
文件“/usr/local/lib/python3.7/dist-packages/ipython/core/interactiveshell.py”,第2882行,在run_code中 exec(code_obj,self.user_global_ns,self.user_ns)
文件“”,第4行,在 历史= alex1.fit(x_train,y_train,batch_size = 128,epochs = 20,validation_data =(x_val2,y_val2))
文件“/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py”,第64行,在error_handler中 返回fn(*args,** kwargs)
文件“/usr/local/lib/python3.7/dist-packages/keras/engine/training.py”,第1384行, tmp_logs = self.train_function(iterator)
文件“/usr/local/lib/python3.7/dist-packages/keras/engine/training.py”,第1021行,in train_function 返回step_function(self,Iterator)
文件“/usr/local/lib/python3.7/dist-packages/keras/engine/training.py”,第1010行,在step_function中 outputs = model.distribute_strategy.run(run_step,args =(data,))
文件“/usr/local/lib/python3.7/dist-packages/keras/engine/training.py”,第1000行,在run_step中 outputs = model.train_step(data)
文件“/usr/local/lib/python3.7/dist-packages/keras/engine/training.py”,第864行,在train_step中 返回self.compute_metrics(x,y,y_pred,sample_weight)
文件“/usr/local/lib/python3.7/dist-packages/keras/engine/training.py”,第957行,compute_metrics self.compiled_metrics.update_state(y,y_pred,sample_weight)
文件“/usr/local/lib/python3.7/dist-packages/keras/engine/compile_utils.py”,第459行,在Update_state中 metric_obj.update_state(y__t,y_p,sample_weight = mask)
文件“/usr/local/lib/python3.7/dist-packages/keras/utils/metrics_utils.py”,第70行,在装饰中 update_op = update_state_fn(*args,** kwargs)
文件“/usr/local/lib/python3.7/dist-packages/keras/metrics.py”,第178行,在update_state_fn中 返回ag_update_state(*args,** kwargs)
文件“/usr/local/lib/python3.7/dist-packages/keras/metrics.py”,第729行,在update_state中 匹配= ag_fn(y_true,y_pred,** self._fn_kwargs)
文件“/usr/local/lib/python3.7/dist-packages/keras/metrics.py”,第4086行,在Sparse_categorical_accuracy中 返回tf.cast(tf.equal(y_true,y_pred),backend.floatx())
节点:“等于” 需要广播形状
[[{{node等于}}]] [op:__ inperion_train_function_7770]

   # Download Fashion MNIST
   import torch
   import torch.nn as nn
   import torch.nn.functional as F
   import torch.optim as optim
   from torch.optim.lr_scheduler import _LRScheduler
   import torch.utils.data as data

   import torchvision.transforms as transforms
   import torchvision.datasets as datasets
   from torchvision import models

   objects = tf.keras.datasets.fashion_mnist
   (x_train, y_train), (x_test, y_test) = objects.load_data()
   x_train = tf.pad(x_train, [[0, 0], [2,2], [2,2]])/255
   x_test = tf.pad(x_test, [[0, 0], [2,2], [2,2]])/255
   x_train = tf.expand_dims(x_train, axis=3, name=None)
   x_test = tf.expand_dims(x_test, axis=3, name=None)
   x_train = tf.repeat(x_train, 3, axis=3)
   x_test = tf.repeat(x_test, 3, axis=3)
   x_val = x_train[-2000:,:,:,:]
   y_val = y_train[-2000:]
   x_train = x_train[:-2000,:,:,:]
   y_train = y_train[:-2000] 

   # Load MNIST
   import tensorflow as tf

   objects = tf.keras.datasets.mnist
   (x_train2, y_train2), (x_test2, y_test2) = objects.load_data()
   
   # Create AlexNet
   import keras
   from numpy import mean
   from numpy import std
   from matplotlib import pyplot
   from tensorflow.keras.utils import to_categorical
   from keras.models import Sequential
   from keras.layers import Conv2D
   from keras.layers import MaxPooling2D
   from keras.layers import Dense
   from keras.layers import Flatten
   from tensorflow.keras.optimizers import SGD
   import torch
   import tensorflow.keras
   from tensorflow.keras import datasets, layers, models, losses

   model = models.Sequential()
   model.add(layers.experimental.preprocessing.Resizing(224, 224, interpolation="bilinear", 
   input_shape=x_train.shape[1:]))
   model.add(layers.Conv2D(96, 11, strides=4, padding='same'))
   model.add(layers.Lambda(tf.nn.local_response_normalization))
   model.add(layers.Activation('relu'))
   model.add(layers.MaxPooling2D(3, strides=2))
   model.add(layers.Conv2D(256, 5, strides=4, padding='same'))
   model.add(layers.Lambda(tf.nn.local_response_normalization))
   model.add(layers.Activation('relu'))
   model.add(layers.MaxPooling2D(3, strides=2))
   model.add(layers.Conv2D(384, 3, strides=4, padding='same'))
   model.add(layers.Activation('relu'))
   model.add(layers.Conv2D(384, 3, strides=4, padding='same'))
   model.add(layers.Activation('relu'))
   model.add(layers.Conv2D(256, 3, strides=4, padding='same'))
   model.add(layers.Activation('relu'))
   model.add(layers.Flatten())
   model.add(layers.Dense(4096, activation='relu'))
   model.add(layers.Dropout(0.5))
   model.add(layers.Dense(4096, activation='relu'))
   model.add(layers.Dropout(0.5))
   model.add(layers.Dense(10, activation='softmax'))

   alex = model
   alex.summary()

   print(alex)

   # Transfer Learning
   from tensorflow import keras
   from keras.layers import Dropout
   from keras.models import Model

   for layer in alex.layers[:-1]:
      layer.trainable = False
   #x = alex.layers[2].output
   #x = Dropout(0.5)(x)
   #x = Dense(32,activation='relu')(x)
   #x = Dense(16,activation='relu')(x)
   predictions = Dense(10,activation='softmax')(x)

   alex1 = Model(alex.input,predictions)
   alex1.summary()

   # Compile
   alex1.compile(optimizer='adam', loss=losses.sparse_categorical_crossentropy, metrics= 
     ['accuracy'])
   
   tic = time.time()
   history = alex1.fit(x_train, y_train, batch_size=128, epochs=20, validation_data=(x_val2, 
     y_val2))
   toc = time.time()
   elapsed_time = toc-tic
   print(elapsed_time)

我已经看到这通常是因为标签的数量,但是这里两个数据集都有10个类。有什么想法或建议吗?提前致谢。

I'm trying to do Transfer Learning in AlexNet, from Fashion MNIST to MNIST.
The error I'm receiving is

InvalidArgumentError

Traceback (most recent call last)
in ()
2 #alex1.compile(optimizer='adam',loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])
3 tic = time.time()
----> 4 history = alex1.fit(x_train, y_train, batch_size=128, epochs=20, validation_data=(x_val2, y_val2))
5 toc = time.time()
6 elapsed_time = toc-tic

1 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py in
quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
53 ctx.ensure_initialized()
54 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 55 inputs, attrs, num_outputs)
56 except core._NotOkStatusException as e:
57 if name is not None:

InvalidArgumentError: Graph execution error:

Detected at node 'Equal' defined at (most recent call last):
File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py", line 16, in
app.launch_new_instance()
File "/usr/local/lib/python3.7/dist-packages/traitlets/config/application.py", line 846, in launch_instance
app.start()
File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelapp.py", line 499, in start
self.io_loop.start()
File "/usr/local/lib/python3.7/dist-packages/tornado/platform/asyncio.py", line 132, in start
self.asyncio_loop.run_forever()
File "/usr/lib/python3.7/asyncio/base_events.py", line 541, in run_forever
self._run_once()
File "/usr/lib/python3.7/asyncio/base_events.py", line 1786, in _run_once
handle._run()
File "/usr/lib/python3.7/asyncio/events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.7/dist-packages/tornado/platform/asyncio.py", line 122, in _handle_events
handler_func(fileobj, events)
File "/usr/local/lib/python3.7/dist-packages/tornado/stack_context.py", line 300, in null_wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py", line 452, in _handle_events
self._handle_recv()
File "/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py", line 481, in _handle_recv
self._run_callback(callback, msg)
File "/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py", line 431, in _run_callback
callback(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/tornado/stack_context.py", line 300, in null_wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py", line 283, in dispatcher
return self.dispatch_shell(stream, msg)
File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py", line 233, in dispatch_shell
handler(stream, idents, msg)
File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py", line 399, in execute_request
user_expressions, allow_stdin)
File "/usr/local/lib/python3.7/dist-packages/ipykernel/ipkernel.py", line 208, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "/usr/local/lib/python3.7/dist-packages/ipykernel/zmqshell.py", line 537, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py", line 2718, in run_cell
interactivity=interactivity, compiler=compiler, result=result)
File "/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py", line 2822, in run_ast_nodes
if self.run_code(code, result):
File "/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py", line 2882, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 4, in
history = alex1.fit(x_train, y_train, batch_size=128, epochs=20, validation_data=(x_val2, y_val2))
File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 64, in error_handler
return fn(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1384, in fit
tmp_logs = self.train_function(iterator)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1021, in train_function
return step_function(self, iterator)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1010, in step_function
outputs = model.distribute_strategy.run(run_step, args=(data,))
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1000, in run_step
outputs = model.train_step(data)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 864, in train_step
return self.compute_metrics(x, y, y_pred, sample_weight)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 957, in compute_metrics
self.compiled_metrics.update_state(y, y_pred, sample_weight)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/compile_utils.py", line 459, in update_state
metric_obj.update_state(y_t, y_p, sample_weight=mask)
File "/usr/local/lib/python3.7/dist-packages/keras/utils/metrics_utils.py", line 70, in decorated
update_op = update_state_fn(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/keras/metrics.py", line 178, in update_state_fn
return ag_update_state(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/keras/metrics.py", line 729, in update_state
matches = ag_fn(y_true, y_pred, **self._fn_kwargs)
File "/usr/local/lib/python3.7/dist-packages/keras/metrics.py", line 4086, in sparse_categorical_accuracy
return tf.cast(tf.equal(y_true, y_pred), backend.floatx())
Node: 'Equal'
required broadcastable shapes
[[{{node Equal}}]] [Op:__inference_train_function_7770]

   # Download Fashion MNIST
   import torch
   import torch.nn as nn
   import torch.nn.functional as F
   import torch.optim as optim
   from torch.optim.lr_scheduler import _LRScheduler
   import torch.utils.data as data

   import torchvision.transforms as transforms
   import torchvision.datasets as datasets
   from torchvision import models

   objects = tf.keras.datasets.fashion_mnist
   (x_train, y_train), (x_test, y_test) = objects.load_data()
   x_train = tf.pad(x_train, [[0, 0], [2,2], [2,2]])/255
   x_test = tf.pad(x_test, [[0, 0], [2,2], [2,2]])/255
   x_train = tf.expand_dims(x_train, axis=3, name=None)
   x_test = tf.expand_dims(x_test, axis=3, name=None)
   x_train = tf.repeat(x_train, 3, axis=3)
   x_test = tf.repeat(x_test, 3, axis=3)
   x_val = x_train[-2000:,:,:,:]
   y_val = y_train[-2000:]
   x_train = x_train[:-2000,:,:,:]
   y_train = y_train[:-2000] 

   # Load MNIST
   import tensorflow as tf

   objects = tf.keras.datasets.mnist
   (x_train2, y_train2), (x_test2, y_test2) = objects.load_data()
   
   # Create AlexNet
   import keras
   from numpy import mean
   from numpy import std
   from matplotlib import pyplot
   from tensorflow.keras.utils import to_categorical
   from keras.models import Sequential
   from keras.layers import Conv2D
   from keras.layers import MaxPooling2D
   from keras.layers import Dense
   from keras.layers import Flatten
   from tensorflow.keras.optimizers import SGD
   import torch
   import tensorflow.keras
   from tensorflow.keras import datasets, layers, models, losses

   model = models.Sequential()
   model.add(layers.experimental.preprocessing.Resizing(224, 224, interpolation="bilinear", 
   input_shape=x_train.shape[1:]))
   model.add(layers.Conv2D(96, 11, strides=4, padding='same'))
   model.add(layers.Lambda(tf.nn.local_response_normalization))
   model.add(layers.Activation('relu'))
   model.add(layers.MaxPooling2D(3, strides=2))
   model.add(layers.Conv2D(256, 5, strides=4, padding='same'))
   model.add(layers.Lambda(tf.nn.local_response_normalization))
   model.add(layers.Activation('relu'))
   model.add(layers.MaxPooling2D(3, strides=2))
   model.add(layers.Conv2D(384, 3, strides=4, padding='same'))
   model.add(layers.Activation('relu'))
   model.add(layers.Conv2D(384, 3, strides=4, padding='same'))
   model.add(layers.Activation('relu'))
   model.add(layers.Conv2D(256, 3, strides=4, padding='same'))
   model.add(layers.Activation('relu'))
   model.add(layers.Flatten())
   model.add(layers.Dense(4096, activation='relu'))
   model.add(layers.Dropout(0.5))
   model.add(layers.Dense(4096, activation='relu'))
   model.add(layers.Dropout(0.5))
   model.add(layers.Dense(10, activation='softmax'))

   alex = model
   alex.summary()

   print(alex)

   # Transfer Learning
   from tensorflow import keras
   from keras.layers import Dropout
   from keras.models import Model

   for layer in alex.layers[:-1]:
      layer.trainable = False
   #x = alex.layers[2].output
   #x = Dropout(0.5)(x)
   #x = Dense(32,activation='relu')(x)
   #x = Dense(16,activation='relu')(x)
   predictions = Dense(10,activation='softmax')(x)

   alex1 = Model(alex.input,predictions)
   alex1.summary()

   # Compile
   alex1.compile(optimizer='adam', loss=losses.sparse_categorical_crossentropy, metrics= 
     ['accuracy'])
   
   tic = time.time()
   history = alex1.fit(x_train, y_train, batch_size=128, epochs=20, validation_data=(x_val2, 
     y_val2))
   toc = time.time()
   elapsed_time = toc-tic
   print(elapsed_time)

I've seen that this is usually because the number of labels, but here both datasets have 10 classes. Any idea or suggestion? Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文