Methadone maintenance treatment nj program

Wastewater Treatment Systems

2016.07.02 11:32 Popup67 Wastewater Treatment Systems

If your home or business is not attached to the municipal sewer system, a septic tank provides the waste management you need. Although underground septic tanks are designed, built, and installed to be very durable and resilient, every tank has an expiration date. The good news is that you can extend the lifespan of your septic tank to save money on tank repairs and new tank installation in the future.
[link]


2024.06.01 14:44 Admirable_Gas_4621 Let open an LLC in Delaware. chat GPT help

Opening a Limited Liability Company (LLC) in Delaware offers several benefits that make it a popular choice for businesses. Here are some of the key advantages:

  1. **Business-Friendly Legal Environment**:
    - **Well-Established Legal Precedents**: Delaware has a well-developed body of business law and an experienced judiciary that specializes in corporate matters, providing clarity and predictability for businesses.
    - **Court of Chancery**: This specialized court handles corporate disputes and is known for its speed and expertise in resolving business issues.

  1. **Flexibility in Structuring**:
    - **Flexible Operating Agreements**: Delaware allows significant flexibility in structuring the management and operations of an LLC, accommodating various business needs and arrangements.
    - **Member and Manager Roles**: Delaware LLCs can be managed by members or appointed managers, providing options for internal organization.

  1. **Tax Benefits**:
    - **No State Income Tax for Out-of-State Income**: If your LLC does not conduct business in Delaware, it will not be subject to state income tax on income derived from other states.
    - **No Sales Tax**: Delaware does not impose a sales tax, which can reduce the overall tax burden on the business.

  1. **Privacy**:
    - **Anonymity**: Delaware allows the formation of LLCs without disclosing the names of the members or managers in the public records, providing a level of privacy that is attractive to many business owners.

  1. **Ease of Formation and Maintenance**:
    - **Streamlined Formation Process**: Delaware offers a straightforward and efficient process for forming an LLC, often with same-day processing available.
    - **Simple Annual Requirements**: The ongoing compliance requirements, such as filing an annual report and paying a franchise tax, are relatively simple and cost-effective.

  1. **Credibility and Prestige**:
    - **Reputation**: Delaware's reputation as a business-friendly state can lend credibility to your company, which may be beneficial when seeking investors or partners.

  1. **Protection of Personal Assets**:
    - **Limited Liability**: Like all LLCs, a Delaware LLC provides limited liability protection to its members, safeguarding personal assets from business liabilities and debts.

  1. **Series LLC Option**:
    - **Series LLCs**: Delaware allows the formation of Series LLCs, which enable a single LLC to establish multiple series or cells, each with its own assets, liabilities, and members. This can be useful for businesses with multiple ventures or investments.

These benefits make Delaware an attractive state for forming an LLC, especially for businesses seeking legal predictability, operational flexibility, and favorable tax treatment. However, it's important to consider the specific needs and circumstances of your business, and consulting with a legal or financial advisor is often a good idea when making this decision.
submitted by Admirable_Gas_4621 to GWAV [link] [comments]


2024.06.01 14:37 idkguessilljustgirl Final Update: my boyfriend killed my cat and i just can't do this anymore

Hi again everyone it's me, if you remember. I got a couple people in my dms asking how I'm doing and I'm allowed to write another update so... well. Here I am. Almost exactly 6 weeks since the worst 48 hours of my life.
I guess I'll just get into it since I'm using this as a diary at this point but I did also start journaling but journaling feels kind of lonely sometimes. And a lot has happened that I would appreciate everyone's thoughts on because you have all been really helpful. Thank you so much.
TL;DR: I'm back at work and getting on my feet and going to group art therapy. I met one of my boyfriend's old friends who's taking care of him and putting him through rehab. My old friends are coming back around and I'm trying to figure out how to be accountable and better for them. I'm ok, I'm safe, I'm almost happy.
I went back to work on May 1st because I promosed myself I would. I work at a smoothie shop, and we are a small team of 4 who usually work in pairs with my boss (the owner) there during rush hours and the baker who works before any of us come in.
When I came to open the shop that morning, the baker talked with me and asked how I was doing. I don't want people to know a lot but she has always been nice to me so I vented a little to her. I wasn't expecting how good it felt to talk to someone about everything that happened even not super detailed. Especially when she gave me such a big hug which made me cry tbh and told me to be strong and she was so happy I came back and didn't hide. 🥺
After talking to her and the coworker I usually work with, I felt better about therapy and stuff because talking does help. So when I got the call from that group therapy thing I wasn't as scared and didn't chicken out like I thought I would. I went and met people in my group, and it was a good experience. I am still going today.
A few days after the 1st I got a call from an unknown number. I don't normally answer those but with the situation and numbers I've been calling lately I didn't want to miss something important so I answered. A man introduced himself to me (I will call him "Tom") and told me he was a friend of my boyfriend "Luke".
I had never heard of this person before and I was just completely shocked and kind of just said "oh" and he started talking. He said he paid the rent for May for the suite and said he gave notice of ending the rental agreement, and asked if I wanted anything of mine from the place and if so he told me I had until the 11th before he dumped/sold stuff and start cleaning.
I came back to myself after that and was just like "hang on who are you and did you find Luke or what???" Because as far as I knew Luke was still missing and also I didn't know who he was.
So basically, a little background on Luke's life: He's originally from very very rural Quebec. He was taken into custody by the ministry when he was 8 after his mom passed away via sui and tried to take him with her because of his dad's extreme physical and sexual abuse towards both Luke and his mom. There were no foster resources in his town so he was taken to a bigger city and put with a family there.
He got into a lot of trouble with the ministry and police and kept having to get moved around due to threatening behavior towards his foster family (parents and siblings). Eventually he got into drinking and drugs and very badly beat up his younger foster brother and foster mother when he was 11 or 12. He got diagnosed with a conduct disorder and got put into juvie prison.
There was a project starting at that time in BC that was rehabilitation for juvie kids in MCFD custody. Basically they set up group homes that were staffed by social workers and counselors, like a foster home but run by a non-profit group not one family. This is actually something similar to where I grew up, but mine was for kids who "failed to thrive" in single-family care while Luke's was for kids who were criminals or addicts.
Because of his childhood situation and how they got him into custody, the MCFD wanted to see Luke go through one of those programs and hopefully be better. So they told him either the group home or juvie and he picked the group home, and a social worker from BC came to get him and flew him to the city. But in this new city even though he got to go back to public school and do stuff like gymnastics which he missed, he didn't know english as much and didn't have friends. So he started acting out again and got arrested more times.
Back to now. Tom told me that when he was in grade 10 and Luke was in grade 8, Tom joined a leadership club at his high school. Because of Luke's history he was forced into leadership club's "big brother" program with threat of being expelled if he didn't. Tom got assigned Luke in his "big brother" project, and they became friends, and then they became family all through high school and through Tom's first 3 years at uni. When he was telling me this I was blown away because Luke literally never even mentioned him so I finally just asked "well then why don't I know you? what happened?"
Tom said "Well, you know Luke." And I guess I do. Soooo yeah.
Luke showed up at Tom's childhood home a week after the stuff with Peanut, and Tom's parents called 911 because he was erratic and very high. The ambulance came and took him, and Tom went to the hospital to see him after his parents told him what happened.
At this point I had to go catch the bus but I told him we could text and meet and I wanted to help him clean the place too because I felt responsibility. He insisted it would be fine but I insisted I wanted to help so I texted him my schedule and we arranged a time to meet.
When I told my boss about all of this she and especially her husband asked if I could take a friend or if one of them could go. I told them I would ask my coworker since we have the same days off so I wouldn't trouble his busy schedule and definitely my boss should NOT go because she is getting so pregnant it's crazy and she needed to rest and still does need rest.
So my coworker I will call Nerd bc inside joke (who is male and big so that is helpful) agreed and we bussed to Luke's place. There was a car in front I didn't know so I assumed it was Tom's and sure enough he was there when I went in and was dealing with the fridge.
We shook hands and I introduced Nerd who kind of puffed up and made a stupid joke about beating Tom's ass over funny business but tbh the second I met Tom I got pretty OK vibes. But I guess well maybe I shouldn't trust it but really he was ok.
We went separately through the place and I spent most of my time in my "room" which was just a corner of the living room with a curtain tbh but my stuff was there so I packed it into garbage bags I brought. Kinda got flashbacks of packing as a kid which felt... weird tbh. 🙃
It also didn't help that Tom was kind of weird. Like not in a bad way but he would curse and mutter to himself when he found something gross or messed up like bad food, Luke's collection of drug stuff, that kind of thing. But then he would also tell me and Nerd what to do and where to put trash vs other stuff, but ALSO like... acted like he didn't want to touch anything himself? Like super cautious.
He also asked me stuff about my life here and how things were and what me and Luke did together, and I answered what I was comfortable with but he still kept apologizing and telling me he didn't want to know my personal stuff. Like it wasn't bad weird like I said but I think he was rly uncomfortable. He did pull me aside in the bathroom and asked if Luke ever hurt me and I was able to answer honestly and say no, he never even treated me that bad. But when I said that he kind of scoffed and muttered "that bad" like sarcastically and seemed mad so seriously it was. Weird. But idk if I were Tom I'd probably be pretty messed up about all of this so.
I insisted to help clean and Tom went to take the trash out. Nerd said he had to go soon bc he had an exam he had to study for and I said he could go and promised I'd be ok because I didn't get a bad vibe from Tom and Nerd admitted Tom seemed ok too. So he left but told me to call if I needed him bc he wouldn't be SUPER busy.
After saying goodbye I kind of asked Tom after a while what was going on with Luke. I just needed to know I guess? I don't know, I felt a lot of emotion being back there. Like I felt the love for him again and wished he was ok but Tom didn't tell me anything yet about where he was or how he was just that he was alive and reported found to police.
So... Luke's in rehab on the island. Tom talked to him in the hospital after he detoxed and said he explained the situation that happened. Apparently Luke broke down sobbing when he told him how he killed Peanut, and said the words: "I killed Peanut. I killed Peatie." Tom started crying while telling me this and tbh I cried too. I thanked Tom for being there bc Tom said he held him and comforted him and after all the hugs I got after Peanut and how that helped I'm just glad Luke got that too.
But yeah, so Tom told Luke it was time to get it together and Luke agreed. Tom seems hopeful it'll stick "this time," which he explained their original falling out was bc Luke lied to Tom about being sober after Tom put him through rehab once before. I really hope it will too and I am glad he has Tom to help him and pay for rehab bc it's not cheap especially those private places on the island but apparently the first time it failed it was in one of those cheap places in the DTES and Tom told me since he's been running programs there he's seen firsthand how those places are run and says the private is worth the money. Which I think is sad bc so many people are poor and need help too but it's complicated ig.
Tom offered me a ride home and I accepted. He told me before we got into the car that it would be ok if I wanted to text a picture of his license plate and car and ID to a safe person and I didn't even consider that so I felt kind of stupid but I did do that stuff and texted my boss and told her we were leaving. But tbh I wasn't worried. Tom seemed so nice and he gave me so much closure on what happened with Luke and knowing he's in good hands with someone that seems really sweet and put together makes me feel better about all the choices I made and also makes me feel like Peanut's loss has more meaning.
When I got home Tom introduced himself to my boss briefly and then we went in. She asked how everything went and I told her everything I wrote out here except I started crying hard and she cuddled me and told me to take it slow. But unlike other times I've cried since Peanut passed, that cry felt different. Like I was weak and emptied out, but not emptied out of all the good things, more like emptied out of the heavy things to make room for even more. And I haven't cried since. Not over Luke, and not over Peanut.
So I'm doing ok. Me and Tom met up twice more to clean the suite and I joined him for the inspection yesterday with the landlord. It felt good to leave that on a good note too, because the landlord let me move in back in fall which he didn't have to do especially with Peanut, and always treated us well. He told me that even though I wasn't an official tenant I could use him as a reference.
After the inspection yesterday Tom took me, my boss, boss' husband, and their daughter for dinner at a REALLY nice place which we all said was unnecessary but he insisted. He said really nice things to me about how he's grateful I tried so hard to take care of Luke and knows personally how difficult it is to love him. He promised me that nothing was my fault and that I can let it go now because he's going to take care of him and I should focus on moving forward into adulthood without any burdens. Idk maybe you had to be there but the way he said it was like... maybe I'm reading too much into it but it was like he was really specifically saying this stuff for Luke's sake or bc Luke hurt me and he felt like he had to make up to me? But it was nice either way.
Oh and I reconnected with a few of my old friends from high school!! The ones who I had a bad falling out with over Luke and my bad choices. My one friend Taylor reached out to me after I made my story on May 22nd a selfie of me reading that 'why does he do that' book and saying "1 month single 🙏" I guess a mutual mentioned it to Taylor and she added my number on sc again.
It's only kinda been small talk and stuff so far, but I've been trying to be really nice and I'm waiting for it to come up to take accountability for my bad treatment of the friend group but I'm thinking maybe I should say something first bc no one is bringing it up? Idk, if anyonr has advice I would appreciate it a lot bc I really want to be so much better than I am and I was and everything. For Peanut, but also for me.
This is the last update I'll post bc honestly it feels like things are mostly sorted out and I can't help but feel like I'm wasting people's time. 💀 But thanks again everyone and for those who wanted an update I hope you enjoy this freaking novel...
submitted by idkguessilljustgirl to TrueOffMyChest [link] [comments]


2024.06.01 14:27 karatespacetiger June Recovery Challenge Day 1 Check In

Hello and welcome to Day 1 of the June Recovery Challenge, how are you?
Wishing you peace and all the success today and all month long, good luck everyone! :)

Today's check in:

Think of a scale from zero to 100 of how important it is for you to be in recovery. You can use the following chart as a guide:
https://preview.redd.it/zele7eyydy3d1.png?width=829&format=png&auto=webp&s=a1cf0a82c438ac9bca45d3b2254e41ecb1b3815e
Where are you on this scale?
What led you to choose the number you did, as opposed to a higher or lower number?


If you're just joining us today for the first time, here is some info about what we do here! :)

What the Recovery Challenge posts are:
What they are not:
If you're new to recovery or it's been a while, here are some "getting ready" posts, in case they might be helpful for you to set yourself up for success this month!
I have about 3 months' worth of daily material that I am rotating through for these posts so whenever someone joins, if they stick around for three months or so they will see pretty much everything I have to offer :)
**I believe in respecting individuals' autonomy over their body and recovery path, and I do not believe in nor am I qualified to be telling people what they should or shouldn't do regarding body size! That said, I try to keep the recovery challenges as a weight-neutral space because while some may be on a weight-loss journey (and it's everyone's individual choice to make), many (if not most) people in ED recovery either need or want to accept their bodies as they are regardless of current size, and so I try to keep the space as free of "thinner is better" messaging as possible.

WHAT IF I HAVE A SLIP DURING THE CHALLENGE?
if you have a slip and want to turn it into a recovery learning opportunity, here are some questions: https://docs.google.com/document/d/1ZhdjmzEVA6UTCNAEU53xn9LuN8TOfLbl/edit
(you don't have to post your answers if you don't want to, but I do recommend writing or typing them out somewhere)
HOW CAN I GET A REMINDER TO CHECK IN TOMORROW?
Copy/paste the following text into your comment to get a reminder from Reddit:
RemindMe!
When you get your reminder, look here for a link to the next day's post :)
submitted by karatespacetiger to BingeEatingDisorder [link] [comments]


2024.06.01 14:25 Jonasbru3m TensorFlow Model Only Predicts 2 Classes out of 475

Hello Reddit Community,
For my Bachelor Thesis im currently trying to train my first ever model with tensorflow, but I'm encountering a strange issue where my model only predicts 2 classes out of the 475 possible classes. The model was trained on a HPC with 304 Nvidia A100 and 352 Nvidia A40 GPGPUs in 82 nodes.
Thats my training script:
 import os import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.applications import EfficientNetB7 from tensorflow.keras import layers, models from tensorflow.keras.callbacks import ModelCheckpoint, TensorBoard import tensorflow_addons as tfa import logging import json # Setup logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') # Check if GPUs are available gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: try: for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True) tf.config.set_visible_devices(gpus, 'GPU') logging.info(f"Using {len(gpus)} GPUs.") except RuntimeError as e: logging.error(e) else: logging.error("No GPUs found. Check your device configuration.") # Data directory data_dir = "/app/FOOD475/" # Image dimensions and batch size img_height, img_width = 600, 600 batch_size = 64 # Data preprocessing and augmentation train_datagen = ImageDataGenerator( rescale=1./255, rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest', validation_split=0.25 ) # Load and preprocess images train_generator = train_datagen.flow_from_directory( data_dir, target_size=(img_height, img_width), batch_size=batch_size, class_mode='categorical', subset='training' ) validation_generator = train_datagen.flow_from_directory( data_dir, target_size=(img_height, img_width), batch_size=batch_size, class_mode='categorical', subset='validation' ) # Model creation function def create_model(input_shape, num_classes): base_model = EfficientNetB7(include_top=False, input_shape=input_shape, weights='imagenet') base_model.trainable = True inputs = layers.Input(shape=input_shape) x = base_model(inputs, training=True) x = layers.GlobalAveragePooling2D()(x) outputs = layers.Dense(num_classes, activation='softmax')(x) model = models.Model(inputs, outputs) return model def find_latest_saved_model(checkpoint_dir): logging.info(f"Looking in checkpoint directory: {checkpoint_dir}") if not os.path.exists(checkpoint_dir): logging.error(f"Checkpoint directory does not exist: {checkpoint_dir}") return None, 0 subdirs = [os.path.join(checkpoint_dir, d) for d in os.listdir(checkpoint_dir) if os.path.isdir(os.path.join(checkpoint_dir, d))] if not subdirs: logging.info("No subdirectories found for checkpoints.") return None, 0 latest_subdir = max(subdirs, key=lambda x: int(os.path.basename(x))) latest_epoch = int(os.path.basename(latest_subdir)) logging.info(f"Latest model directory: {latest_subdir}, Epoch: {latest_epoch}") if os.path.exists(os.path.join(latest_subdir, 'saved_model.pb')): return latest_subdir, latest_epoch else: logging.info("No saved_model.pb found in the latest directory.") return None, 0 # Mirrored strategy for multi-GPU training strategy = tf.distribute.MirroredStrategy() with strategy.scope(): saved_model_dir = 'model_training' checkpoint_dir = os.path.join(saved_model_dir, 'checkpoints') latest_saved_model, latest_epoch = find_latest_saved_model(checkpoint_dir) if latest_saved_model: logging.info(f"Loading model from {latest_saved_model}") model = tf.keras.models.load_model(latest_saved_model) else: logging.info("No saved model found. Creating a new model.") model = create_model((img_height, img_width, 3), len(train_generator.class_indices)) if not os.path.exists(saved_model_dir): os.makedirs(saved_model_dir) summary_path = os.path.join(saved_model_dir, 'model_summary.txt') with open(summary_path, 'w') as f: model.summary(print_fn=lambda x: f.write(x + '\n')) logging.info(f"Model summary saved to {summary_path}") optimizer = tf.keras.optimizers.Adam(learning_rate=0.0002) model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy', tf.keras.metrics.TopKCategoricalAccuracy(k=5), tfa.metrics.F1Score(num_classes=len(train_generator.class_indices), average='macro')]) # Custom Callback for Saving the Best Model in SavedModel format class SaveBestModelTF(tf.keras.callbacks.Callback): def __init__(self, monitor='val_accuracy', saved_model_dir='model_training'): super(SaveBestModelTF, self).__init__() self.monitor = monitor self.saved_model_dir = saved_model_dir def on_epoch_end(self, epoch, logs=None): current = logs.get(self.monitor) if current is None: logging.warning(f"Monitor '{self.monitor}' for saving the model is not available in logs.") return logging.info(f"Epoch {epoch + 1}: saving model to {self.saved_model_dir}/checkpoints/{epoch + 1}") epoch_path = os.path.join(self.saved_model_dir, 'checkpoints', str(epoch + 1)) if not os.path.exists(epoch_path): os.makedirs(epoch_path) self.model.save(epoch_path, save_format='tf') # Callbacks for monitoring progress tensorboard_cb = TensorBoard(log_dir='./logs') # Save class indices to a JSON file class_indices_path = 'model_training/class_indices.json' if not os.path.exists(os.path.dirname(class_indices_path)): os.makedirs(os.path.dirname(class_indices_path), exist_ok=True) logging.info(f"Directory {os.path.dirname(class_indices_path)} created.") with open(class_indices_path, 'w') as file: json.dump(train_generator.class_indices, file) logging.info(f"Class indices saved to {class_indices_path}") # Model training total_epochs = 7 model.fit( train_generator, initial_epoch=latest_epoch, # Start from the next epoch epochs=total_epochs, validation_data=validation_generator, callbacks=[SaveBestModelTF(saved_model_dir=saved_model_dir), tensorboard_cb] ) # Evaluate the model eval_result = model.evaluate(validation_generator) logging.info(f'Validation Loss: {eval_result[0]}, Validation Accuracy: {eval_result[1]}') # Save the final model as a SavedModel format (including .pb files) model.save('model_training/finished_model') logging.info("Finished model saved in SavedModel format at 'model_training/finished_model'") # Convert to TensorFlow Lite converter = tf.lite.TFLiteConverter.from_saved_model('model_training/finished_model') tflite_model = converter.convert() tflite_path = 'model_training/lite_model/trained_model_lite.tflite' if not os.path.exists(os.path.dirname(tflite_path)): os.makedirs(os.path.dirname(tflite_path), exist_ok=True) logging.info(f"Directory {os.path.dirname(tflite_path)} created.") with open(tflite_path, 'wb') as f: f.write(tflite_model) logging.info(f"Model converted and saved as {tflite_path}") 
During training i got following output:
Found 182235 images belonging to 475 classes. Found 60544 images belonging to 475 classes. Epoch 1/7 2848/2848 [==============================] - 11914s 4s/step - loss: 1.7624 - accuracy: 0.5931 - top_k_categorical_accuracy: 0.8152 - f1_score: 0.4739 - val_loss: 1.1666 - val_accuracy: 0.7043 - val_top_k_categorical_accuracy: 0.9013 - val_f1_score: 0.6053 Epoch 2/7 2848/2848 [==============================] - 11096s 4s/step - loss: 0.8293 - accuracy: 0.7788 - top_k_categorical_accuracy: 0.9435 - f1_score: 0.7094 - val_loss: 0.9409 - val_accuracy: 0.7533 - val_top_k_categorical_accuracy: 0.9277 - val_f1_score: 0.6818 Epoch 3/7 2848/2848 [==============================] - 11123s 4s/step - loss: 0.6247 - accuracy: 0.8274 - top_k_categorical_accuracy: 0.9632 - f1_score: 0.7760 - val_loss: 0.8422 - val_accuracy: 0.7761 - val_top_k_categorical_accuracy: 0.9386 - val_f1_score: 0.7080 Epoch 4/7 2848/2848 [==============================] - 11101s 4s/step - loss: 0.5070 - accuracy: 0.8562 - top_k_categorical_accuracy: 0.9743 - f1_score: 0.8165 - val_loss: 0.8002 - val_accuracy: 0.7885 - val_top_k_categorical_accuracy: 0.9428 - val_f1_score: 0.7249 Epoch 5/7 2848/2848 [==============================] - 11079s 4s/step - loss: 0.4261 - accuracy: 0.8766 - top_k_categorical_accuracy: 0.9814 - f1_score: 0.8445 - val_loss: 0.7757 - val_accuracy: 0.7940 - val_top_k_categorical_accuracy: 0.9458 - val_f1_score: 0.7404 Epoch 6/7 2848/2848 [==============================] - 11100s 4s/step - loss: 0.3641 - accuracy: 0.8932 - top_k_categorical_accuracy: 0.9856 - f1_score: 0.8657 - val_loss: 0.7639 - val_accuracy: 0.8003 - val_top_k_categorical_accuracy: 0.9472 - val_f1_score: 0.7432 Epoch 7/7 2848/2848 [==============================] - 11129s 4s/step - loss: 0.3142 - accuracy: 0.9068 - top_k_categorical_accuracy: 0.9889 - f1_score: 0.8838 - val_loss: 0.7701 - val_accuracy: 0.8014 - val_top_k_categorical_accuracy: 0.9470 - val_f1_score: 0.7474 946/946 [==============================] - 2671s 3s/step - loss: 0.7682 - accuracy: 0.8008 - top_k_categorical_accuracy: 0.9470 - f1_score: 0.7456 
And when I try to load the model and make a prediction with this code:
class own: def __init__(self): if not os.path.exists("models/own"): raise FileNotFoundError(f"Model path models/own does not exist") try: self.model = tf.keras.models.load_model("models/own", custom_objects={'F1Score': F1Score}) except Exception as e: print(f"Error loading model: {e}") raise if not os.path.exists("models/own/class_indices.json"): raise FileNotFoundError(f"Class indices path models/own/class_indices.json does not exist") with open("models/own/class_indices.json", 'r') as file: self.class_indices = json.load(file) self.index_to_class = {v: k for k, v in self.class_indices.items()} def classify(self, img_path): if not os.path.exists(img_path): raise FileNotFoundError(f"Image path {img_path} does not exist") # Load and preprocess the image img = tf.keras.preprocessing.image.load_img(img_path, target_size=(600, 600)) img_array = tf.keras.preprocessing.image.img_to_array(img) img_array = np.expand_dims(img_array, axis=0) img_array /= 255.0 # Make prediction predictions = self.model.predict(img_array) print("Raw predictions:", predictions) top_index = np.argmax(predictions[0]) top_class = self.index_to_class[top_index] print(f"Top class: {top_class}, Probability: {predictions[0][top_index]}") top_n = 5 top_indices = np.argsort(predictions[0])[-top_n:][::-1] for idx in top_indices: print(f"Class: {self.index_to_class[idx]}, Probability: {predictions[0][idx]}") return top_class 
it always either predicts Steak or Omelette:
2024-06-01 14:17:27.571776: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead. C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\tensorflow_addons\utils\tfa_eol_msg.py:23: UserWarning: TensorFlow Addons (TFA) has ended development and introduction of new features. TFA has entered a minimal maintenance and release mode until a planned end of life in May 2024. Please modify downstream libraries to take dependencies from other repositories in our TensorFlow community (e.g. Keras, Keras-CV, and Keras-NLP). For more information see: warnings.warn( C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\tensorflow_addons\utils\ensure_tf_install.py:53: UserWarning: Tensorflow Addons supports using Python ops for all Tensorflow versions above or equal to 2.12.0 and strictly below 2.15.0 (nightly versions are not supported). The versions of TensorFlow you are currently using is 2.15.0 and is not supported. Some things might work, some things might not. If you were to encounter a bug, do not file an issue. If you want to make sure you're using a tested and supported configuration, either change the TensorFlow version or the TensorFlow Addons's version. You can find the compatibility matrix in TensorFlow Addon's readme: warnings.warn( WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\saving\legacy\saved_model\load.py:107: The name tf.gfile.Exists is deprecated. Please use tf.io.gfile.exists instead. 2024-06-01 14:17:31.363666: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: SSE SSE2 SSE3 SSE4.1 SSE4.2 AVX2 AVX512F AVX512_VNNI AVX512_BF16 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\engine\functional.py:156: The name tf.executing_eagerly_outside_functions is deprecated. Please use tf.compat.v1.executing_eagerly_outside_functions instead. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\layers\normalization\batch_normalization.py:979: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead. 1/1 [==============================] - 4s 4s/step Raw predictions: [[4.23421043e-05 1.45377373e-06 1.09034730e-02 1.19525917e-04 4.45407240e-05 5.72818244e-05 5.68609731e-03 5.15926695e-05 1.89958355e-05 1.39491487e-04 3.20717366e-03 9.63417915e-06 1.22947793e-03 4.01171012e-04 3.64649204e-05 1.75396308e-05 3.09416023e-03 7.56465085e-03 2.89075997e-05 3.90331191e-03 2.16231216e-03 4.18351328e-06 5.89632022e-04 9.40740295e-03 6.80321036e-03 2.32697069e-03 4.23964392e-03 1.56047070e-04 2.14435873e-04 6.95710623e-05 1.38103365e-04 1.78470847e-03 3.75193194e-03 5.94434096e-03 5.69255608e-05 7.57165905e-03 1.52613886e-03 9.48755944e-04 8.21925176e-04 3.18029453e-03 3.89393512e-03 8.41296278e-05 8.34997976e-04 3.14124190e-04 6.81638776e-04 1.10320523e-02 1.10815199e-04 6.18589204e-03 2.17406079e-02 3.72037102e-05 1.65579877e-05 1.30886221e-02 1.01435784e-04 2.13157946e-05 1.25499619e-05 8.94762017e-03 4.36880719e-03 4.78018774e-03 8.53170827e-03 1.45823974e-02 1.05571962e-05 1.12631078e-05 5.09415939e-03 8.12840741e-03 1.48212257e-05 1.52864438e-02 9.66716034e-05 2.25000476e-04 3.60531732e-04 9.28066402e-06 8.15156789e-04 1.09069003e-02 3.43796797e-04 2.53324561e-05 7.89516326e-03 1.44943051e-05 4.06841224e-04 1.67445414e-05 3.78527766e-05 1.80476491e-04 3.33699776e-04 4.13847056e-06 3.32273915e-03 6.51864940e-03 7.48403618e-05 2.68448726e-04 1.54245936e-03 2.95383972e-03 2.26996126e-05 3.64100002e-03 2.81597768e-05 3.11967051e-05 1.48438021e-05 8.46863433e-04 4.05767525e-04 1.75380992e-04 4.76581818e-06 5.42160356e-04 2.19287374e-03 1.18714366e-02 1.41884899e-04 8.76697595e-06 3.85931274e-03 4.37544841e-05 4.01919424e-05 3.87528981e-03 3.88057524e-05 2.69062322e-04 4.46968805e-03 1.17368818e-05 3.70194939e-05 1.55831876e-04 1.63894765e-05 2.38729117e-04 1.19046052e-03 2.12675819e-04 1.08185853e-03 3.01667496e-05 6.18575094e-03 3.91955400e-05 1.40065713e-05 3.02084809e-04 6.46927813e-03 3.37069832e-05 5.15250103e-05 2.31142567e-05 2.20274273e-03 3.17445702e-05 1.04452763e-02 6.80019803e-05 7.81101780e-03 1.23853814e-02 1.04819983e-02 3.20679283e-05 6.71340758e-03 6.94293885e-06 1.98310101e-03 5.29599565e-05 9.02036484e-03 4.57535089e-06 1.93145883e-03 4.06190008e-03 8.42716638e-03 1.50314684e-03 8.58115556e-04 1.22383237e-03 8.49474862e-04 5.48258470e-03 6.09953167e-05 1.57669128e-03 5.43692382e-03 4.88058169e-04 6.75312986e-05 3.43937165e-04 1.93276245e-03 4.06867871e-03 5.20323374e-05 7.78318281e-05 1.93508764e-04 1.14409677e-05 2.21324177e-03 1.90052821e-03 8.52691382e-03 2.43102224e-03 2.88419239e-03 2.53974522e-05 9.51182563e-04 2.32981285e-03 9.86064842e-05 4.14316915e-03 1.66544644e-03 1.02754391e-04 3.95776224e-05 3.02393187e-06 1.32082617e-02 4.14707232e-04 3.40229672e-05 4.81802830e-03 1.90598912e-05 4.08358377e-04 5.95443300e-04 1.22634810e-04 5.74091624e-04 8.57623760e-03 2.60962266e-03 2.95263715e-03 1.58088005e-05 1.64122172e-02 2.09987498e-04 2.36775051e-03 3.00696083e-05 3.46693669e-05 1.16249910e-04 6.94001559e-03 1.58400853e-05 1.95188422e-05 2.19169408e-04 3.09433235e-04 5.44128183e-04 6.35302160e-04 7.07127433e-03 1.19772732e-04 5.37439200e-06 1.91133395e-02 1.27979312e-02 3.89739592e-03 1.97048103e-05 2.29625002e-05 2.21050854e-04 1.92064399e-04 1.20139657e-05 3.20516920e-05 4.26828819e-06 3.64828011e-05 7.55213068e-06 2.67963973e-03 3.17923805e-05 6.19895945e-05 3.99544797e-06 2.68664648e-04 1.83274597e-02 8.71072552e-05 1.38439747e-04 4.96710254e-06 3.56023484e-05 1.34899991e-03 2.05766381e-04 3.96062108e-03 5.61600551e-03 5.31910664e-05 6.77773132e-05 1.36139952e-02 7.41477634e-05 1.63904135e-03 4.74587978e-06 1.45082246e-04 2.09337009e-06 8.13181920e-04 3.63194500e-04 6.46722084e-03 5.02364383e-05 6.90550078e-05 6.36972545e-05 2.09673337e-04 1.79036579e-05 2.36021675e-04 6.37291942e-06 5.70875318e-06 2.56235455e-03 2.72009202e-04 3.77103061e-05 5.63449021e-06 2.25979857e-05 2.61697169e-05 3.42375762e-03 1.04161156e-02 2.22223607e-05 6.27681802e-05 1.88465419e-04 2.82149922e-05 4.01149562e-04 1.31122259e-04 5.97863036e-05 2.41098423e-05 7.71318519e-05 3.57087993e-04 3.41462255e-05 1.01930054e-04 5.23206063e-06 2.95026781e-04 7.02897159e-05 3.99115682e-02 1.89455808e-03 1.74146010e-06 1.14775894e-05 7.84916210e-06 1.93041191e-03 2.37918808e-03 3.49449110e-03 6.98623667e-03 7.64393993e-03 4.12582303e-05 1.24030013e-03 1.72785169e-03 7.18316660e-05 5.17749111e-04 7.84919783e-03 1.04525541e-04 9.83856899e-06 8.77521088e-05 1.68125369e-02 4.09213862e-05 1.09552668e-04 2.54421811e-05 4.65482954e-05 6.95294410e-04 6.72869501e-05 2.40904570e-04 2.15112406e-04 3.85226776e-05 2.51369456e-05 4.68338234e-03 1.26862462e-04 9.00995801e-04 4.16984549e-05 7.36891707e-06 1.51534463e-04 1.48332631e-03 4.95935837e-03 1.91499032e-02 3.01804044e-04 6.28613270e-05 4.78365598e-03 8.38827982e-05 1.70516931e-02 1.52653758e-03 5.85798814e-04 3.11521399e-05 2.11968741e-04 7.41351105e-05 1.40834545e-05 8.93215940e-04 1.45371505e-05 4.96711982e-05 4.11317131e-04 8.89070239e-03 5.06997202e-03 3.08362325e-03 2.77415646e-04 3.75299685e-04 1.19906381e-05 1.50029315e-03 1.14443043e-04 2.52026439e-05 9.22407198e-04 3.51146841e-03 1.11564566e-06 1.36691102e-04 3.53032886e-03 2.15746608e-04 8.79282816e-05 4.36248304e-03 1.77966576e-04 1.47887832e-03 6.94399816e-04 8.03673174e-04 5.23004041e-04 3.90421192e-04 1.06344873e-03 3.55399796e-04 6.01265463e-04 1.55850008e-04 1.33491016e-03 1.09734829e-04 4.38019342e-04 2.42487862e-04 6.84730615e-03 1.02040754e-03 1.07652310e-03 3.51822848e-04 9.20735547e-05 7.50967592e-04 1.44127226e-02 3.58455327e-05 5.16555374e-05 1.31370616e-03 9.02966480e-04 1.24254671e-03 5.20300702e-04 8.57163919e-04 3.66344648e-05 2.01024144e-04 6.52487564e-04 5.93215809e-04 5.76604251e-03 6.19325438e-04 1.16480421e-03 2.37531040e-05 2.50119111e-03 7.08868974e-05 5.99786472e-05 2.55976247e-05 4.62695534e-05 4.24469297e-04 6.20667648e-04 4.15926515e-05 7.03983005e-06 8.77018738e-06 5.21141301e-05 2.11411956e-04 7.74205779e-04 5.31276630e-04 6.44316664e-04 4.07212786e-03 2.68336060e-03 1.74210854e-05 3.76385942e-05 6.74255705e-03 4.46323538e-05 2.76757801e-05 2.56290223e-04 1.22213329e-04 1.22734054e-03 7.73016480e-04 1.11903930e-02 3.16570923e-02 2.75775470e-04 5.73344238e-04 2.86890985e-03 1.10085262e-03 1.35615155e-05 2.66479654e-03 1.99418981e-03 4.31017601e-04 9.68350447e-04 3.51598108e-04 8.54862970e-04 3.52715979e-05 1.46333405e-04 5.10955288e-05 1.48639630e-03 1.80458324e-03 7.51840998e-05 1.13529910e-04 3.89828119e-06 8.74532212e-04 1.12358983e-04 3.93593837e-05 6.01037289e-04 2.06997487e-04 3.94766452e-03 1.09549124e-04 2.11403880e-04 6.95336203e-04 5.99777419e-03 5.45272342e-05 2.56420486e-03 2.20299728e-04 4.23851707e-05 6.69996080e-04 2.66609713e-04 1.55276459e-04 2.75739990e-02 3.43240798e-03 2.68303775e-05 1.52821158e-04 9.82575657e-05 4.00313947e-05 6.07266993e-05 5.28094570e-05 1.02948405e-04 6.20577412e-05 2.12161940e-05 2.99842539e-03 1.17558768e-04 1.58015324e-03 3.30074807e-04 1.19093776e-04 2.52985101e-05 1.59350988e-02 4.89539379e-05 1.05491054e-05 1.09012712e-04 2.97089737e-05 7.28885690e-03 1.87386977e-05 1.85028894e-05 5.79945299e-05 1.54079917e-05 9.85169099e-05 1.05076749e-03 7.55816349e-04 2.62255053e-05 1.18091421e-05 2.95209320e-05]] Top class: omelette, Probability: 0.03991156816482544 Class: omelette, Probability: 0.03991156816482544 Class: steak, Probability: 0.03165709227323532 Class: tacos, Probability: 0.027573999017477036 Class: breakfast_burrito, Probability: 0.021740607917308807 Class: pulled_pork_sandwich, Probability: 0.01914990320801735 (own): omelette - 3.66shttps://github.com/tensorflow/addons/issues/2807https://github.com/tensorflow/addons 
Help would be appreciated because im slowly losing my mind :(,
Jonas
submitted by Jonasbru3m to computervision [link] [comments]


2024.06.01 14:24 Jonasbru3m TensorFlow Model Only Predicts 2 Classes out of 475

Hello Reddit Community,
For my Bachelor Thesis im currently trying to train my first ever model with tensorflow, but I'm encountering a strange issue where my model only predicts 2 classes out of the 475 possible classes. The model was trained on a HPC with 304 Nvidia A100 and 352 Nvidia A40 GPGPUs in 82 nodes.
Thats my training script:
 import os import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.applications import EfficientNetB7 from tensorflow.keras import layers, models from tensorflow.keras.callbacks import ModelCheckpoint, TensorBoard import tensorflow_addons as tfa import logging import json # Setup logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') # Check if GPUs are available gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: try: for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True) tf.config.set_visible_devices(gpus, 'GPU') logging.info(f"Using {len(gpus)} GPUs.") except RuntimeError as e: logging.error(e) else: logging.error("No GPUs found. Check your device configuration.") # Data directory data_dir = "/app/FOOD475/" # Image dimensions and batch size img_height, img_width = 600, 600 batch_size = 64 # Data preprocessing and augmentation train_datagen = ImageDataGenerator( rescale=1./255, rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest', validation_split=0.25 ) # Load and preprocess images train_generator = train_datagen.flow_from_directory( data_dir, target_size=(img_height, img_width), batch_size=batch_size, class_mode='categorical', subset='training' ) validation_generator = train_datagen.flow_from_directory( data_dir, target_size=(img_height, img_width), batch_size=batch_size, class_mode='categorical', subset='validation' ) # Model creation function def create_model(input_shape, num_classes): base_model = EfficientNetB7(include_top=False, input_shape=input_shape, weights='imagenet') base_model.trainable = True inputs = layers.Input(shape=input_shape) x = base_model(inputs, training=True) x = layers.GlobalAveragePooling2D()(x) outputs = layers.Dense(num_classes, activation='softmax')(x) model = models.Model(inputs, outputs) return model def find_latest_saved_model(checkpoint_dir): logging.info(f"Looking in checkpoint directory: {checkpoint_dir}") if not os.path.exists(checkpoint_dir): logging.error(f"Checkpoint directory does not exist: {checkpoint_dir}") return None, 0 subdirs = [os.path.join(checkpoint_dir, d) for d in os.listdir(checkpoint_dir) if os.path.isdir(os.path.join(checkpoint_dir, d))] if not subdirs: logging.info("No subdirectories found for checkpoints.") return None, 0 latest_subdir = max(subdirs, key=lambda x: int(os.path.basename(x))) latest_epoch = int(os.path.basename(latest_subdir)) logging.info(f"Latest model directory: {latest_subdir}, Epoch: {latest_epoch}") if os.path.exists(os.path.join(latest_subdir, 'saved_model.pb')): return latest_subdir, latest_epoch else: logging.info("No saved_model.pb found in the latest directory.") return None, 0 # Mirrored strategy for multi-GPU training strategy = tf.distribute.MirroredStrategy() with strategy.scope(): saved_model_dir = 'model_training' checkpoint_dir = os.path.join(saved_model_dir, 'checkpoints') latest_saved_model, latest_epoch = find_latest_saved_model(checkpoint_dir) if latest_saved_model: logging.info(f"Loading model from {latest_saved_model}") model = tf.keras.models.load_model(latest_saved_model) else: logging.info("No saved model found. Creating a new model.") model = create_model((img_height, img_width, 3), len(train_generator.class_indices)) if not os.path.exists(saved_model_dir): os.makedirs(saved_model_dir) summary_path = os.path.join(saved_model_dir, 'model_summary.txt') with open(summary_path, 'w') as f: model.summary(print_fn=lambda x: f.write(x + '\n')) logging.info(f"Model summary saved to {summary_path}") optimizer = tf.keras.optimizers.Adam(learning_rate=0.0002) model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy', tf.keras.metrics.TopKCategoricalAccuracy(k=5), tfa.metrics.F1Score(num_classes=len(train_generator.class_indices), average='macro')]) # Custom Callback for Saving the Best Model in SavedModel format class SaveBestModelTF(tf.keras.callbacks.Callback): def __init__(self, monitor='val_accuracy', saved_model_dir='model_training'): super(SaveBestModelTF, self).__init__() self.monitor = monitor self.saved_model_dir = saved_model_dir def on_epoch_end(self, epoch, logs=None): current = logs.get(self.monitor) if current is None: logging.warning(f"Monitor '{self.monitor}' for saving the model is not available in logs.") return logging.info(f"Epoch {epoch + 1}: saving model to {self.saved_model_dir}/checkpoints/{epoch + 1}") epoch_path = os.path.join(self.saved_model_dir, 'checkpoints', str(epoch + 1)) if not os.path.exists(epoch_path): os.makedirs(epoch_path) self.model.save(epoch_path, save_format='tf') # Callbacks for monitoring progress tensorboard_cb = TensorBoard(log_dir='./logs') # Save class indices to a JSON file class_indices_path = 'model_training/class_indices.json' if not os.path.exists(os.path.dirname(class_indices_path)): os.makedirs(os.path.dirname(class_indices_path), exist_ok=True) logging.info(f"Directory {os.path.dirname(class_indices_path)} created.") with open(class_indices_path, 'w') as file: json.dump(train_generator.class_indices, file) logging.info(f"Class indices saved to {class_indices_path}") # Model training total_epochs = 7 model.fit( train_generator, initial_epoch=latest_epoch, # Start from the next epoch epochs=total_epochs, validation_data=validation_generator, callbacks=[SaveBestModelTF(saved_model_dir=saved_model_dir), tensorboard_cb] ) # Evaluate the model eval_result = model.evaluate(validation_generator) logging.info(f'Validation Loss: {eval_result[0]}, Validation Accuracy: {eval_result[1]}') # Save the final model as a SavedModel format (including .pb files) model.save('model_training/finished_model') logging.info("Finished model saved in SavedModel format at 'model_training/finished_model'") # Convert to TensorFlow Lite converter = tf.lite.TFLiteConverter.from_saved_model('model_training/finished_model') tflite_model = converter.convert() tflite_path = 'model_training/lite_model/trained_model_lite.tflite' if not os.path.exists(os.path.dirname(tflite_path)): os.makedirs(os.path.dirname(tflite_path), exist_ok=True) logging.info(f"Directory {os.path.dirname(tflite_path)} created.") with open(tflite_path, 'wb') as f: f.write(tflite_model) logging.info(f"Model converted and saved as {tflite_path}") 
During training i got following output:
Found 182235 images belonging to 475 classes. Found 60544 images belonging to 475 classes. Epoch 1/7 2848/2848 [==============================] - 11914s 4s/step - loss: 1.7624 - accuracy: 0.5931 - top_k_categorical_accuracy: 0.8152 - f1_score: 0.4739 - val_loss: 1.1666 - val_accuracy: 0.7043 - val_top_k_categorical_accuracy: 0.9013 - val_f1_score: 0.6053 Epoch 2/7 2848/2848 [==============================] - 11096s 4s/step - loss: 0.8293 - accuracy: 0.7788 - top_k_categorical_accuracy: 0.9435 - f1_score: 0.7094 - val_loss: 0.9409 - val_accuracy: 0.7533 - val_top_k_categorical_accuracy: 0.9277 - val_f1_score: 0.6818 Epoch 3/7 2848/2848 [==============================] - 11123s 4s/step - loss: 0.6247 - accuracy: 0.8274 - top_k_categorical_accuracy: 0.9632 - f1_score: 0.7760 - val_loss: 0.8422 - val_accuracy: 0.7761 - val_top_k_categorical_accuracy: 0.9386 - val_f1_score: 0.7080 Epoch 4/7 2848/2848 [==============================] - 11101s 4s/step - loss: 0.5070 - accuracy: 0.8562 - top_k_categorical_accuracy: 0.9743 - f1_score: 0.8165 - val_loss: 0.8002 - val_accuracy: 0.7885 - val_top_k_categorical_accuracy: 0.9428 - val_f1_score: 0.7249 Epoch 5/7 2848/2848 [==============================] - 11079s 4s/step - loss: 0.4261 - accuracy: 0.8766 - top_k_categorical_accuracy: 0.9814 - f1_score: 0.8445 - val_loss: 0.7757 - val_accuracy: 0.7940 - val_top_k_categorical_accuracy: 0.9458 - val_f1_score: 0.7404 Epoch 6/7 2848/2848 [==============================] - 11100s 4s/step - loss: 0.3641 - accuracy: 0.8932 - top_k_categorical_accuracy: 0.9856 - f1_score: 0.8657 - val_loss: 0.7639 - val_accuracy: 0.8003 - val_top_k_categorical_accuracy: 0.9472 - val_f1_score: 0.7432 Epoch 7/7 2848/2848 [==============================] - 11129s 4s/step - loss: 0.3142 - accuracy: 0.9068 - top_k_categorical_accuracy: 0.9889 - f1_score: 0.8838 - val_loss: 0.7701 - val_accuracy: 0.8014 - val_top_k_categorical_accuracy: 0.9470 - val_f1_score: 0.7474 946/946 [==============================] - 2671s 3s/step - loss: 0.7682 - accuracy: 0.8008 - top_k_categorical_accuracy: 0.9470 - f1_score: 0.7456 
And when I try to load the model and make a prediction with this code:
class own: def __init__(self): if not os.path.exists("models/own"): raise FileNotFoundError(f"Model path models/own does not exist") try: self.model = tf.keras.models.load_model("models/own", custom_objects={'F1Score': F1Score}) except Exception as e: print(f"Error loading model: {e}") raise if not os.path.exists("models/own/class_indices.json"): raise FileNotFoundError(f"Class indices path models/own/class_indices.json does not exist") with open("models/own/class_indices.json", 'r') as file: self.class_indices = json.load(file) self.index_to_class = {v: k for k, v in self.class_indices.items()} def classify(self, img_path): if not os.path.exists(img_path): raise FileNotFoundError(f"Image path {img_path} does not exist") # Load and preprocess the image img = tf.keras.preprocessing.image.load_img(img_path, target_size=(600, 600)) img_array = tf.keras.preprocessing.image.img_to_array(img) img_array = np.expand_dims(img_array, axis=0) img_array /= 255.0 # Make prediction predictions = self.model.predict(img_array) print("Raw predictions:", predictions) top_index = np.argmax(predictions[0]) top_class = self.index_to_class[top_index] print(f"Top class: {top_class}, Probability: {predictions[0][top_index]}") top_n = 5 top_indices = np.argsort(predictions[0])[-top_n:][::-1] for idx in top_indices: print(f"Class: {self.index_to_class[idx]}, Probability: {predictions[0][idx]}") return top_class 
it always either predicts Steak or Omelette:
2024-06-01 14:17:27.571776: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead. C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\tensorflow_addons\utils\tfa_eol_msg.py:23: UserWarning: TensorFlow Addons (TFA) has ended development and introduction of new features. TFA has entered a minimal maintenance and release mode until a planned end of life in May 2024. Please modify downstream libraries to take dependencies from other repositories in our TensorFlow community (e.g. Keras, Keras-CV, and Keras-NLP). For more information see: warnings.warn( C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\tensorflow_addons\utils\ensure_tf_install.py:53: UserWarning: Tensorflow Addons supports using Python ops for all Tensorflow versions above or equal to 2.12.0 and strictly below 2.15.0 (nightly versions are not supported). The versions of TensorFlow you are currently using is 2.15.0 and is not supported. Some things might work, some things might not. If you were to encounter a bug, do not file an issue. If you want to make sure you're using a tested and supported configuration, either change the TensorFlow version or the TensorFlow Addons's version. You can find the compatibility matrix in TensorFlow Addon's readme: warnings.warn( WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\saving\legacy\saved_model\load.py:107: The name tf.gfile.Exists is deprecated. Please use tf.io.gfile.exists instead. 2024-06-01 14:17:31.363666: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: SSE SSE2 SSE3 SSE4.1 SSE4.2 AVX2 AVX512F AVX512_VNNI AVX512_BF16 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\engine\functional.py:156: The name tf.executing_eagerly_outside_functions is deprecated. Please use tf.compat.v1.executing_eagerly_outside_functions instead. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\layers\normalization\batch_normalization.py:979: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead. 1/1 [==============================] - 4s 4s/step Raw predictions: [[4.23421043e-05 1.45377373e-06 1.09034730e-02 1.19525917e-04 4.45407240e-05 5.72818244e-05 5.68609731e-03 5.15926695e-05 1.89958355e-05 1.39491487e-04 3.20717366e-03 9.63417915e-06 1.22947793e-03 4.01171012e-04 3.64649204e-05 1.75396308e-05 3.09416023e-03 7.56465085e-03 2.89075997e-05 3.90331191e-03 2.16231216e-03 4.18351328e-06 5.89632022e-04 9.40740295e-03 6.80321036e-03 2.32697069e-03 4.23964392e-03 1.56047070e-04 2.14435873e-04 6.95710623e-05 1.38103365e-04 1.78470847e-03 3.75193194e-03 5.94434096e-03 5.69255608e-05 7.57165905e-03 1.52613886e-03 9.48755944e-04 8.21925176e-04 3.18029453e-03 3.89393512e-03 8.41296278e-05 8.34997976e-04 3.14124190e-04 6.81638776e-04 1.10320523e-02 1.10815199e-04 6.18589204e-03 2.17406079e-02 3.72037102e-05 1.65579877e-05 1.30886221e-02 1.01435784e-04 2.13157946e-05 1.25499619e-05 8.94762017e-03 4.36880719e-03 4.78018774e-03 8.53170827e-03 1.45823974e-02 1.05571962e-05 1.12631078e-05 5.09415939e-03 8.12840741e-03 1.48212257e-05 1.52864438e-02 9.66716034e-05 2.25000476e-04 3.60531732e-04 9.28066402e-06 8.15156789e-04 1.09069003e-02 3.43796797e-04 2.53324561e-05 7.89516326e-03 1.44943051e-05 4.06841224e-04 1.67445414e-05 3.78527766e-05 1.80476491e-04 3.33699776e-04 4.13847056e-06 3.32273915e-03 6.51864940e-03 7.48403618e-05 2.68448726e-04 1.54245936e-03 2.95383972e-03 2.26996126e-05 3.64100002e-03 2.81597768e-05 3.11967051e-05 1.48438021e-05 8.46863433e-04 4.05767525e-04 1.75380992e-04 4.76581818e-06 5.42160356e-04 2.19287374e-03 1.18714366e-02 1.41884899e-04 8.76697595e-06 3.85931274e-03 4.37544841e-05 4.01919424e-05 3.87528981e-03 3.88057524e-05 2.69062322e-04 4.46968805e-03 1.17368818e-05 3.70194939e-05 1.55831876e-04 1.63894765e-05 2.38729117e-04 1.19046052e-03 2.12675819e-04 1.08185853e-03 3.01667496e-05 6.18575094e-03 3.91955400e-05 1.40065713e-05 3.02084809e-04 6.46927813e-03 3.37069832e-05 5.15250103e-05 2.31142567e-05 2.20274273e-03 3.17445702e-05 1.04452763e-02 6.80019803e-05 7.81101780e-03 1.23853814e-02 1.04819983e-02 3.20679283e-05 6.71340758e-03 6.94293885e-06 1.98310101e-03 5.29599565e-05 9.02036484e-03 4.57535089e-06 1.93145883e-03 4.06190008e-03 8.42716638e-03 1.50314684e-03 8.58115556e-04 1.22383237e-03 8.49474862e-04 5.48258470e-03 6.09953167e-05 1.57669128e-03 5.43692382e-03 4.88058169e-04 6.75312986e-05 3.43937165e-04 1.93276245e-03 4.06867871e-03 5.20323374e-05 7.78318281e-05 1.93508764e-04 1.14409677e-05 2.21324177e-03 1.90052821e-03 8.52691382e-03 2.43102224e-03 2.88419239e-03 2.53974522e-05 9.51182563e-04 2.32981285e-03 9.86064842e-05 4.14316915e-03 1.66544644e-03 1.02754391e-04 3.95776224e-05 3.02393187e-06 1.32082617e-02 4.14707232e-04 3.40229672e-05 4.81802830e-03 1.90598912e-05 4.08358377e-04 5.95443300e-04 1.22634810e-04 5.74091624e-04 8.57623760e-03 2.60962266e-03 2.95263715e-03 1.58088005e-05 1.64122172e-02 2.09987498e-04 2.36775051e-03 3.00696083e-05 3.46693669e-05 1.16249910e-04 6.94001559e-03 1.58400853e-05 1.95188422e-05 2.19169408e-04 3.09433235e-04 5.44128183e-04 6.35302160e-04 7.07127433e-03 1.19772732e-04 5.37439200e-06 1.91133395e-02 1.27979312e-02 3.89739592e-03 1.97048103e-05 2.29625002e-05 2.21050854e-04 1.92064399e-04 1.20139657e-05 3.20516920e-05 4.26828819e-06 3.64828011e-05 7.55213068e-06 2.67963973e-03 3.17923805e-05 6.19895945e-05 3.99544797e-06 2.68664648e-04 1.83274597e-02 8.71072552e-05 1.38439747e-04 4.96710254e-06 3.56023484e-05 1.34899991e-03 2.05766381e-04 3.96062108e-03 5.61600551e-03 5.31910664e-05 6.77773132e-05 1.36139952e-02 7.41477634e-05 1.63904135e-03 4.74587978e-06 1.45082246e-04 2.09337009e-06 8.13181920e-04 3.63194500e-04 6.46722084e-03 5.02364383e-05 6.90550078e-05 6.36972545e-05 2.09673337e-04 1.79036579e-05 2.36021675e-04 6.37291942e-06 5.70875318e-06 2.56235455e-03 2.72009202e-04 3.77103061e-05 5.63449021e-06 2.25979857e-05 2.61697169e-05 3.42375762e-03 1.04161156e-02 2.22223607e-05 6.27681802e-05 1.88465419e-04 2.82149922e-05 4.01149562e-04 1.31122259e-04 5.97863036e-05 2.41098423e-05 7.71318519e-05 3.57087993e-04 3.41462255e-05 1.01930054e-04 5.23206063e-06 2.95026781e-04 7.02897159e-05 3.99115682e-02 1.89455808e-03 1.74146010e-06 1.14775894e-05 7.84916210e-06 1.93041191e-03 2.37918808e-03 3.49449110e-03 6.98623667e-03 7.64393993e-03 4.12582303e-05 1.24030013e-03 1.72785169e-03 7.18316660e-05 5.17749111e-04 7.84919783e-03 1.04525541e-04 9.83856899e-06 8.77521088e-05 1.68125369e-02 4.09213862e-05 1.09552668e-04 2.54421811e-05 4.65482954e-05 6.95294410e-04 6.72869501e-05 2.40904570e-04 2.15112406e-04 3.85226776e-05 2.51369456e-05 4.68338234e-03 1.26862462e-04 9.00995801e-04 4.16984549e-05 7.36891707e-06 1.51534463e-04 1.48332631e-03 4.95935837e-03 1.91499032e-02 3.01804044e-04 6.28613270e-05 4.78365598e-03 8.38827982e-05 1.70516931e-02 1.52653758e-03 5.85798814e-04 3.11521399e-05 2.11968741e-04 7.41351105e-05 1.40834545e-05 8.93215940e-04 1.45371505e-05 4.96711982e-05 4.11317131e-04 8.89070239e-03 5.06997202e-03 3.08362325e-03 2.77415646e-04 3.75299685e-04 1.19906381e-05 1.50029315e-03 1.14443043e-04 2.52026439e-05 9.22407198e-04 3.51146841e-03 1.11564566e-06 1.36691102e-04 3.53032886e-03 2.15746608e-04 8.79282816e-05 4.36248304e-03 1.77966576e-04 1.47887832e-03 6.94399816e-04 8.03673174e-04 5.23004041e-04 3.90421192e-04 1.06344873e-03 3.55399796e-04 6.01265463e-04 1.55850008e-04 1.33491016e-03 1.09734829e-04 4.38019342e-04 2.42487862e-04 6.84730615e-03 1.02040754e-03 1.07652310e-03 3.51822848e-04 9.20735547e-05 7.50967592e-04 1.44127226e-02 3.58455327e-05 5.16555374e-05 1.31370616e-03 9.02966480e-04 1.24254671e-03 5.20300702e-04 8.57163919e-04 3.66344648e-05 2.01024144e-04 6.52487564e-04 5.93215809e-04 5.76604251e-03 6.19325438e-04 1.16480421e-03 2.37531040e-05 2.50119111e-03 7.08868974e-05 5.99786472e-05 2.55976247e-05 4.62695534e-05 4.24469297e-04 6.20667648e-04 4.15926515e-05 7.03983005e-06 8.77018738e-06 5.21141301e-05 2.11411956e-04 7.74205779e-04 5.31276630e-04 6.44316664e-04 4.07212786e-03 2.68336060e-03 1.74210854e-05 3.76385942e-05 6.74255705e-03 4.46323538e-05 2.76757801e-05 2.56290223e-04 1.22213329e-04 1.22734054e-03 7.73016480e-04 1.11903930e-02 3.16570923e-02 2.75775470e-04 5.73344238e-04 2.86890985e-03 1.10085262e-03 1.35615155e-05 2.66479654e-03 1.99418981e-03 4.31017601e-04 9.68350447e-04 3.51598108e-04 8.54862970e-04 3.52715979e-05 1.46333405e-04 5.10955288e-05 1.48639630e-03 1.80458324e-03 7.51840998e-05 1.13529910e-04 3.89828119e-06 8.74532212e-04 1.12358983e-04 3.93593837e-05 6.01037289e-04 2.06997487e-04 3.94766452e-03 1.09549124e-04 2.11403880e-04 6.95336203e-04 5.99777419e-03 5.45272342e-05 2.56420486e-03 2.20299728e-04 4.23851707e-05 6.69996080e-04 2.66609713e-04 1.55276459e-04 2.75739990e-02 3.43240798e-03 2.68303775e-05 1.52821158e-04 9.82575657e-05 4.00313947e-05 6.07266993e-05 5.28094570e-05 1.02948405e-04 6.20577412e-05 2.12161940e-05 2.99842539e-03 1.17558768e-04 1.58015324e-03 3.30074807e-04 1.19093776e-04 2.52985101e-05 1.59350988e-02 4.89539379e-05 1.05491054e-05 1.09012712e-04 2.97089737e-05 7.28885690e-03 1.87386977e-05 1.85028894e-05 5.79945299e-05 1.54079917e-05 9.85169099e-05 1.05076749e-03 7.55816349e-04 2.62255053e-05 1.18091421e-05 2.95209320e-05]] Top class: omelette, Probability: 0.03991156816482544 Class: omelette, Probability: 0.03991156816482544 Class: steak, Probability: 0.03165709227323532 Class: tacos, Probability: 0.027573999017477036 Class: breakfast_burrito, Probability: 0.021740607917308807 Class: pulled_pork_sandwich, Probability: 0.01914990320801735 (own): omelette - 3.66shttps://github.com/tensorflow/addons/issues/2807https://github.com/tensorflow/addons 
Help would be appreciated because im slowly losing my mind :(,
Jonas
submitted by Jonasbru3m to learnmachinelearning [link] [comments]


2024.06.01 14:23 Jonasbru3m TensorFlow Model Only Predicts 2 Classes out of 475

Hello Reddit Community,
For my Bachelor Thesis im currently trying to train my first ever model with tensorflow, but I'm encountering a strange issue where my model only predicts 2 classes out of the 475 possible classes. The model was trained on a HPC with 304 Nvidia A100 and 352 Nvidia A40 GPGPUs in 82 nodes.
Thats my training script:
 import os import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.applications import EfficientNetB7 from tensorflow.keras import layers, models from tensorflow.keras.callbacks import ModelCheckpoint, TensorBoard import tensorflow_addons as tfa import logging import json # Setup logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') # Check if GPUs are available gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: try: for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True) tf.config.set_visible_devices(gpus, 'GPU') logging.info(f"Using {len(gpus)} GPUs.") except RuntimeError as e: logging.error(e) else: logging.error("No GPUs found. Check your device configuration.") # Data directory data_dir = "/app/FOOD475/" # Image dimensions and batch size img_height, img_width = 600, 600 batch_size = 64 # Data preprocessing and augmentation train_datagen = ImageDataGenerator( rescale=1./255, rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest', validation_split=0.25 ) # Load and preprocess images train_generator = train_datagen.flow_from_directory( data_dir, target_size=(img_height, img_width), batch_size=batch_size, class_mode='categorical', subset='training' ) validation_generator = train_datagen.flow_from_directory( data_dir, target_size=(img_height, img_width), batch_size=batch_size, class_mode='categorical', subset='validation' ) # Model creation function def create_model(input_shape, num_classes): base_model = EfficientNetB7(include_top=False, input_shape=input_shape, weights='imagenet') base_model.trainable = True inputs = layers.Input(shape=input_shape) x = base_model(inputs, training=True) x = layers.GlobalAveragePooling2D()(x) outputs = layers.Dense(num_classes, activation='softmax')(x) model = models.Model(inputs, outputs) return model def find_latest_saved_model(checkpoint_dir): logging.info(f"Looking in checkpoint directory: {checkpoint_dir}") if not os.path.exists(checkpoint_dir): logging.error(f"Checkpoint directory does not exist: {checkpoint_dir}") return None, 0 subdirs = [os.path.join(checkpoint_dir, d) for d in os.listdir(checkpoint_dir) if os.path.isdir(os.path.join(checkpoint_dir, d))] if not subdirs: logging.info("No subdirectories found for checkpoints.") return None, 0 latest_subdir = max(subdirs, key=lambda x: int(os.path.basename(x))) latest_epoch = int(os.path.basename(latest_subdir)) logging.info(f"Latest model directory: {latest_subdir}, Epoch: {latest_epoch}") if os.path.exists(os.path.join(latest_subdir, 'saved_model.pb')): return latest_subdir, latest_epoch else: logging.info("No saved_model.pb found in the latest directory.") return None, 0 # Mirrored strategy for multi-GPU training strategy = tf.distribute.MirroredStrategy() with strategy.scope(): saved_model_dir = 'model_training' checkpoint_dir = os.path.join(saved_model_dir, 'checkpoints') latest_saved_model, latest_epoch = find_latest_saved_model(checkpoint_dir) if latest_saved_model: logging.info(f"Loading model from {latest_saved_model}") model = tf.keras.models.load_model(latest_saved_model) else: logging.info("No saved model found. Creating a new model.") model = create_model((img_height, img_width, 3), len(train_generator.class_indices)) if not os.path.exists(saved_model_dir): os.makedirs(saved_model_dir) summary_path = os.path.join(saved_model_dir, 'model_summary.txt') with open(summary_path, 'w') as f: model.summary(print_fn=lambda x: f.write(x + '\n')) logging.info(f"Model summary saved to {summary_path}") optimizer = tf.keras.optimizers.Adam(learning_rate=0.0002) model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy', tf.keras.metrics.TopKCategoricalAccuracy(k=5), tfa.metrics.F1Score(num_classes=len(train_generator.class_indices), average='macro')]) # Custom Callback for Saving the Best Model in SavedModel format class SaveBestModelTF(tf.keras.callbacks.Callback): def __init__(self, monitor='val_accuracy', saved_model_dir='model_training'): super(SaveBestModelTF, self).__init__() self.monitor = monitor self.saved_model_dir = saved_model_dir def on_epoch_end(self, epoch, logs=None): current = logs.get(self.monitor) if current is None: logging.warning(f"Monitor '{self.monitor}' for saving the model is not available in logs.") return logging.info(f"Epoch {epoch + 1}: saving model to {self.saved_model_dir}/checkpoints/{epoch + 1}") epoch_path = os.path.join(self.saved_model_dir, 'checkpoints', str(epoch + 1)) if not os.path.exists(epoch_path): os.makedirs(epoch_path) self.model.save(epoch_path, save_format='tf') # Callbacks for monitoring progress tensorboard_cb = TensorBoard(log_dir='./logs') # Save class indices to a JSON file class_indices_path = 'model_training/class_indices.json' if not os.path.exists(os.path.dirname(class_indices_path)): os.makedirs(os.path.dirname(class_indices_path), exist_ok=True) logging.info(f"Directory {os.path.dirname(class_indices_path)} created.") with open(class_indices_path, 'w') as file: json.dump(train_generator.class_indices, file) logging.info(f"Class indices saved to {class_indices_path}") # Model training total_epochs = 7 model.fit( train_generator, initial_epoch=latest_epoch, # Start from the next epoch epochs=total_epochs, validation_data=validation_generator, callbacks=[SaveBestModelTF(saved_model_dir=saved_model_dir), tensorboard_cb] ) # Evaluate the model eval_result = model.evaluate(validation_generator) logging.info(f'Validation Loss: {eval_result[0]}, Validation Accuracy: {eval_result[1]}') # Save the final model as a SavedModel format (including .pb files) model.save('model_training/finished_model') logging.info("Finished model saved in SavedModel format at 'model_training/finished_model'") # Convert to TensorFlow Lite converter = tf.lite.TFLiteConverter.from_saved_model('model_training/finished_model') tflite_model = converter.convert() tflite_path = 'model_training/lite_model/trained_model_lite.tflite' if not os.path.exists(os.path.dirname(tflite_path)): os.makedirs(os.path.dirname(tflite_path), exist_ok=True) logging.info(f"Directory {os.path.dirname(tflite_path)} created.") with open(tflite_path, 'wb') as f: f.write(tflite_model) logging.info(f"Model converted and saved as {tflite_path}") 
During training i got following output:
Found 182235 images belonging to 475 classes. Found 60544 images belonging to 475 classes. Epoch 1/7 2848/2848 [==============================] - 11914s 4s/step - loss: 1.7624 - accuracy: 0.5931 - top_k_categorical_accuracy: 0.8152 - f1_score: 0.4739 - val_loss: 1.1666 - val_accuracy: 0.7043 - val_top_k_categorical_accuracy: 0.9013 - val_f1_score: 0.6053 Epoch 2/7 2848/2848 [==============================] - 11096s 4s/step - loss: 0.8293 - accuracy: 0.7788 - top_k_categorical_accuracy: 0.9435 - f1_score: 0.7094 - val_loss: 0.9409 - val_accuracy: 0.7533 - val_top_k_categorical_accuracy: 0.9277 - val_f1_score: 0.6818 Epoch 3/7 2848/2848 [==============================] - 11123s 4s/step - loss: 0.6247 - accuracy: 0.8274 - top_k_categorical_accuracy: 0.9632 - f1_score: 0.7760 - val_loss: 0.8422 - val_accuracy: 0.7761 - val_top_k_categorical_accuracy: 0.9386 - val_f1_score: 0.7080 Epoch 4/7 2848/2848 [==============================] - 11101s 4s/step - loss: 0.5070 - accuracy: 0.8562 - top_k_categorical_accuracy: 0.9743 - f1_score: 0.8165 - val_loss: 0.8002 - val_accuracy: 0.7885 - val_top_k_categorical_accuracy: 0.9428 - val_f1_score: 0.7249 Epoch 5/7 2848/2848 [==============================] - 11079s 4s/step - loss: 0.4261 - accuracy: 0.8766 - top_k_categorical_accuracy: 0.9814 - f1_score: 0.8445 - val_loss: 0.7757 - val_accuracy: 0.7940 - val_top_k_categorical_accuracy: 0.9458 - val_f1_score: 0.7404 Epoch 6/7 2848/2848 [==============================] - 11100s 4s/step - loss: 0.3641 - accuracy: 0.8932 - top_k_categorical_accuracy: 0.9856 - f1_score: 0.8657 - val_loss: 0.7639 - val_accuracy: 0.8003 - val_top_k_categorical_accuracy: 0.9472 - val_f1_score: 0.7432 Epoch 7/7 2848/2848 [==============================] - 11129s 4s/step - loss: 0.3142 - accuracy: 0.9068 - top_k_categorical_accuracy: 0.9889 - f1_score: 0.8838 - val_loss: 0.7701 - val_accuracy: 0.8014 - val_top_k_categorical_accuracy: 0.9470 - val_f1_score: 0.7474 946/946 [==============================] - 2671s 3s/step - loss: 0.7682 - accuracy: 0.8008 - top_k_categorical_accuracy: 0.9470 - f1_score: 0.7456 
And when I try to load the model and make a prediction with this code:
class own: def __init__(self): if not os.path.exists("models/own"): raise FileNotFoundError(f"Model path models/own does not exist") try: self.model = tf.keras.models.load_model("models/own", custom_objects={'F1Score': F1Score}) except Exception as e: print(f"Error loading model: {e}") raise if not os.path.exists("models/own/class_indices.json"): raise FileNotFoundError(f"Class indices path models/own/class_indices.json does not exist") with open("models/own/class_indices.json", 'r') as file: self.class_indices = json.load(file) self.index_to_class = {v: k for k, v in self.class_indices.items()} def classify(self, img_path): if not os.path.exists(img_path): raise FileNotFoundError(f"Image path {img_path} does not exist") # Load and preprocess the image img = tf.keras.preprocessing.image.load_img(img_path, target_size=(600, 600)) img_array = tf.keras.preprocessing.image.img_to_array(img) img_array = np.expand_dims(img_array, axis=0) img_array /= 255.0 # Make prediction predictions = self.model.predict(img_array) print("Raw predictions:", predictions) top_index = np.argmax(predictions[0]) top_class = self.index_to_class[top_index] print(f"Top class: {top_class}, Probability: {predictions[0][top_index]}") top_n = 5 top_indices = np.argsort(predictions[0])[-top_n:][::-1] for idx in top_indices: print(f"Class: {self.index_to_class[idx]}, Probability: {predictions[0][idx]}") return top_class 
it always either predicts Steak or Omelette:
2024-06-01 14:17:27.571776: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead. C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\tensorflow_addons\utils\tfa_eol_msg.py:23: UserWarning: TensorFlow Addons (TFA) has ended development and introduction of new features. TFA has entered a minimal maintenance and release mode until a planned end of life in May 2024. Please modify downstream libraries to take dependencies from other repositories in our TensorFlow community (e.g. Keras, Keras-CV, and Keras-NLP). For more information see: warnings.warn( C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\tensorflow_addons\utils\ensure_tf_install.py:53: UserWarning: Tensorflow Addons supports using Python ops for all Tensorflow versions above or equal to 2.12.0 and strictly below 2.15.0 (nightly versions are not supported). The versions of TensorFlow you are currently using is 2.15.0 and is not supported. Some things might work, some things might not. If you were to encounter a bug, do not file an issue. If you want to make sure you're using a tested and supported configuration, either change the TensorFlow version or the TensorFlow Addons's version. You can find the compatibility matrix in TensorFlow Addon's readme: warnings.warn( WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\saving\legacy\saved_model\load.py:107: The name tf.gfile.Exists is deprecated. Please use tf.io.gfile.exists instead. 2024-06-01 14:17:31.363666: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: SSE SSE2 SSE3 SSE4.1 SSE4.2 AVX2 AVX512F AVX512_VNNI AVX512_BF16 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\engine\functional.py:156: The name tf.executing_eagerly_outside_functions is deprecated. Please use tf.compat.v1.executing_eagerly_outside_functions instead. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\layers\normalization\batch_normalization.py:979: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead. 1/1 [==============================] - 4s 4s/step Raw predictions: [[4.23421043e-05 1.45377373e-06 1.09034730e-02 1.19525917e-04 4.45407240e-05 5.72818244e-05 5.68609731e-03 5.15926695e-05 1.89958355e-05 1.39491487e-04 3.20717366e-03 9.63417915e-06 1.22947793e-03 4.01171012e-04 3.64649204e-05 1.75396308e-05 3.09416023e-03 7.56465085e-03 2.89075997e-05 3.90331191e-03 2.16231216e-03 4.18351328e-06 5.89632022e-04 9.40740295e-03 6.80321036e-03 2.32697069e-03 4.23964392e-03 1.56047070e-04 2.14435873e-04 6.95710623e-05 1.38103365e-04 1.78470847e-03 3.75193194e-03 5.94434096e-03 5.69255608e-05 7.57165905e-03 1.52613886e-03 9.48755944e-04 8.21925176e-04 3.18029453e-03 3.89393512e-03 8.41296278e-05 8.34997976e-04 3.14124190e-04 6.81638776e-04 1.10320523e-02 1.10815199e-04 6.18589204e-03 2.17406079e-02 3.72037102e-05 1.65579877e-05 1.30886221e-02 1.01435784e-04 2.13157946e-05 1.25499619e-05 8.94762017e-03 4.36880719e-03 4.78018774e-03 8.53170827e-03 1.45823974e-02 1.05571962e-05 1.12631078e-05 5.09415939e-03 8.12840741e-03 1.48212257e-05 1.52864438e-02 9.66716034e-05 2.25000476e-04 3.60531732e-04 9.28066402e-06 8.15156789e-04 1.09069003e-02 3.43796797e-04 2.53324561e-05 7.89516326e-03 1.44943051e-05 4.06841224e-04 1.67445414e-05 3.78527766e-05 1.80476491e-04 3.33699776e-04 4.13847056e-06 3.32273915e-03 6.51864940e-03 7.48403618e-05 2.68448726e-04 1.54245936e-03 2.95383972e-03 2.26996126e-05 3.64100002e-03 2.81597768e-05 3.11967051e-05 1.48438021e-05 8.46863433e-04 4.05767525e-04 1.75380992e-04 4.76581818e-06 5.42160356e-04 2.19287374e-03 1.18714366e-02 1.41884899e-04 8.76697595e-06 3.85931274e-03 4.37544841e-05 4.01919424e-05 3.87528981e-03 3.88057524e-05 2.69062322e-04 4.46968805e-03 1.17368818e-05 3.70194939e-05 1.55831876e-04 1.63894765e-05 2.38729117e-04 1.19046052e-03 2.12675819e-04 1.08185853e-03 3.01667496e-05 6.18575094e-03 3.91955400e-05 1.40065713e-05 3.02084809e-04 6.46927813e-03 3.37069832e-05 5.15250103e-05 2.31142567e-05 2.20274273e-03 3.17445702e-05 1.04452763e-02 6.80019803e-05 7.81101780e-03 1.23853814e-02 1.04819983e-02 3.20679283e-05 6.71340758e-03 6.94293885e-06 1.98310101e-03 5.29599565e-05 9.02036484e-03 4.57535089e-06 1.93145883e-03 4.06190008e-03 8.42716638e-03 1.50314684e-03 8.58115556e-04 1.22383237e-03 8.49474862e-04 5.48258470e-03 6.09953167e-05 1.57669128e-03 5.43692382e-03 4.88058169e-04 6.75312986e-05 3.43937165e-04 1.93276245e-03 4.06867871e-03 5.20323374e-05 7.78318281e-05 1.93508764e-04 1.14409677e-05 2.21324177e-03 1.90052821e-03 8.52691382e-03 2.43102224e-03 2.88419239e-03 2.53974522e-05 9.51182563e-04 2.32981285e-03 9.86064842e-05 4.14316915e-03 1.66544644e-03 1.02754391e-04 3.95776224e-05 3.02393187e-06 1.32082617e-02 4.14707232e-04 3.40229672e-05 4.81802830e-03 1.90598912e-05 4.08358377e-04 5.95443300e-04 1.22634810e-04 5.74091624e-04 8.57623760e-03 2.60962266e-03 2.95263715e-03 1.58088005e-05 1.64122172e-02 2.09987498e-04 2.36775051e-03 3.00696083e-05 3.46693669e-05 1.16249910e-04 6.94001559e-03 1.58400853e-05 1.95188422e-05 2.19169408e-04 3.09433235e-04 5.44128183e-04 6.35302160e-04 7.07127433e-03 1.19772732e-04 5.37439200e-06 1.91133395e-02 1.27979312e-02 3.89739592e-03 1.97048103e-05 2.29625002e-05 2.21050854e-04 1.92064399e-04 1.20139657e-05 3.20516920e-05 4.26828819e-06 3.64828011e-05 7.55213068e-06 2.67963973e-03 3.17923805e-05 6.19895945e-05 3.99544797e-06 2.68664648e-04 1.83274597e-02 8.71072552e-05 1.38439747e-04 4.96710254e-06 3.56023484e-05 1.34899991e-03 2.05766381e-04 3.96062108e-03 5.61600551e-03 5.31910664e-05 6.77773132e-05 1.36139952e-02 7.41477634e-05 1.63904135e-03 4.74587978e-06 1.45082246e-04 2.09337009e-06 8.13181920e-04 3.63194500e-04 6.46722084e-03 5.02364383e-05 6.90550078e-05 6.36972545e-05 2.09673337e-04 1.79036579e-05 2.36021675e-04 6.37291942e-06 5.70875318e-06 2.56235455e-03 2.72009202e-04 3.77103061e-05 5.63449021e-06 2.25979857e-05 2.61697169e-05 3.42375762e-03 1.04161156e-02 2.22223607e-05 6.27681802e-05 1.88465419e-04 2.82149922e-05 4.01149562e-04 1.31122259e-04 5.97863036e-05 2.41098423e-05 7.71318519e-05 3.57087993e-04 3.41462255e-05 1.01930054e-04 5.23206063e-06 2.95026781e-04 7.02897159e-05 3.99115682e-02 1.89455808e-03 1.74146010e-06 1.14775894e-05 7.84916210e-06 1.93041191e-03 2.37918808e-03 3.49449110e-03 6.98623667e-03 7.64393993e-03 4.12582303e-05 1.24030013e-03 1.72785169e-03 7.18316660e-05 5.17749111e-04 7.84919783e-03 1.04525541e-04 9.83856899e-06 8.77521088e-05 1.68125369e-02 4.09213862e-05 1.09552668e-04 2.54421811e-05 4.65482954e-05 6.95294410e-04 6.72869501e-05 2.40904570e-04 2.15112406e-04 3.85226776e-05 2.51369456e-05 4.68338234e-03 1.26862462e-04 9.00995801e-04 4.16984549e-05 7.36891707e-06 1.51534463e-04 1.48332631e-03 4.95935837e-03 1.91499032e-02 3.01804044e-04 6.28613270e-05 4.78365598e-03 8.38827982e-05 1.70516931e-02 1.52653758e-03 5.85798814e-04 3.11521399e-05 2.11968741e-04 7.41351105e-05 1.40834545e-05 8.93215940e-04 1.45371505e-05 4.96711982e-05 4.11317131e-04 8.89070239e-03 5.06997202e-03 3.08362325e-03 2.77415646e-04 3.75299685e-04 1.19906381e-05 1.50029315e-03 1.14443043e-04 2.52026439e-05 9.22407198e-04 3.51146841e-03 1.11564566e-06 1.36691102e-04 3.53032886e-03 2.15746608e-04 8.79282816e-05 4.36248304e-03 1.77966576e-04 1.47887832e-03 6.94399816e-04 8.03673174e-04 5.23004041e-04 3.90421192e-04 1.06344873e-03 3.55399796e-04 6.01265463e-04 1.55850008e-04 1.33491016e-03 1.09734829e-04 4.38019342e-04 2.42487862e-04 6.84730615e-03 1.02040754e-03 1.07652310e-03 3.51822848e-04 9.20735547e-05 7.50967592e-04 1.44127226e-02 3.58455327e-05 5.16555374e-05 1.31370616e-03 9.02966480e-04 1.24254671e-03 5.20300702e-04 8.57163919e-04 3.66344648e-05 2.01024144e-04 6.52487564e-04 5.93215809e-04 5.76604251e-03 6.19325438e-04 1.16480421e-03 2.37531040e-05 2.50119111e-03 7.08868974e-05 5.99786472e-05 2.55976247e-05 4.62695534e-05 4.24469297e-04 6.20667648e-04 4.15926515e-05 7.03983005e-06 8.77018738e-06 5.21141301e-05 2.11411956e-04 7.74205779e-04 5.31276630e-04 6.44316664e-04 4.07212786e-03 2.68336060e-03 1.74210854e-05 3.76385942e-05 6.74255705e-03 4.46323538e-05 2.76757801e-05 2.56290223e-04 1.22213329e-04 1.22734054e-03 7.73016480e-04 1.11903930e-02 3.16570923e-02 2.75775470e-04 5.73344238e-04 2.86890985e-03 1.10085262e-03 1.35615155e-05 2.66479654e-03 1.99418981e-03 4.31017601e-04 9.68350447e-04 3.51598108e-04 8.54862970e-04 3.52715979e-05 1.46333405e-04 5.10955288e-05 1.48639630e-03 1.80458324e-03 7.51840998e-05 1.13529910e-04 3.89828119e-06 8.74532212e-04 1.12358983e-04 3.93593837e-05 6.01037289e-04 2.06997487e-04 3.94766452e-03 1.09549124e-04 2.11403880e-04 6.95336203e-04 5.99777419e-03 5.45272342e-05 2.56420486e-03 2.20299728e-04 4.23851707e-05 6.69996080e-04 2.66609713e-04 1.55276459e-04 2.75739990e-02 3.43240798e-03 2.68303775e-05 1.52821158e-04 9.82575657e-05 4.00313947e-05 6.07266993e-05 5.28094570e-05 1.02948405e-04 6.20577412e-05 2.12161940e-05 2.99842539e-03 1.17558768e-04 1.58015324e-03 3.30074807e-04 1.19093776e-04 2.52985101e-05 1.59350988e-02 4.89539379e-05 1.05491054e-05 1.09012712e-04 2.97089737e-05 7.28885690e-03 1.87386977e-05 1.85028894e-05 5.79945299e-05 1.54079917e-05 9.85169099e-05 1.05076749e-03 7.55816349e-04 2.62255053e-05 1.18091421e-05 2.95209320e-05]] Top class: omelette, Probability: 0.03991156816482544 Class: omelette, Probability: 0.03991156816482544 Class: steak, Probability: 0.03165709227323532 Class: tacos, Probability: 0.027573999017477036 Class: breakfast_burrito, Probability: 0.021740607917308807 Class: pulled_pork_sandwich, Probability: 0.01914990320801735 (own): omelette - 3.66shttps://github.com/tensorflow/addons/issues/2807https://github.com/tensorflow/addons 
Help would be appreciated because im slowly losing my mind :(,
Jonas
submitted by Jonasbru3m to deeplearning [link] [comments]


2024.06.01 14:21 Jonasbru3m TensorFlow Model Only Predicts 2 Classes out of 475

Hello Reddit Community,
For my Bachelor Thesis im currently trying to train my first ever model with tensorflow, but I'm encountering a strange issue where my model only predicts 2 classes out of the 475 possible classes. The model was trained on a HPC with 304 Nvidia A100 and 352 Nvidia A40 GPGPUs in 82 nodes.
Thats my training script:
 import os import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.applications import EfficientNetB7 from tensorflow.keras import layers, models from tensorflow.keras.callbacks import ModelCheckpoint, TensorBoard import tensorflow_addons as tfa import logging import json # Setup logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') # Check if GPUs are available gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: try: for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True) tf.config.set_visible_devices(gpus, 'GPU') logging.info(f"Using {len(gpus)} GPUs.") except RuntimeError as e: logging.error(e) else: logging.error("No GPUs found. Check your device configuration.") # Data directory data_dir = "/app/FOOD475/" # Image dimensions and batch size img_height, img_width = 600, 600 batch_size = 64 # Data preprocessing and augmentation train_datagen = ImageDataGenerator( rescale=1./255, rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest', validation_split=0.25 ) # Load and preprocess images train_generator = train_datagen.flow_from_directory( data_dir, target_size=(img_height, img_width), batch_size=batch_size, class_mode='categorical', subset='training' ) validation_generator = train_datagen.flow_from_directory( data_dir, target_size=(img_height, img_width), batch_size=batch_size, class_mode='categorical', subset='validation' ) # Model creation function def create_model(input_shape, num_classes): base_model = EfficientNetB7(include_top=False, input_shape=input_shape, weights='imagenet') base_model.trainable = True inputs = layers.Input(shape=input_shape) x = base_model(inputs, training=True) x = layers.GlobalAveragePooling2D()(x) outputs = layers.Dense(num_classes, activation='softmax')(x) model = models.Model(inputs, outputs) return model def find_latest_saved_model(checkpoint_dir): logging.info(f"Looking in checkpoint directory: {checkpoint_dir}") if not os.path.exists(checkpoint_dir): logging.error(f"Checkpoint directory does not exist: {checkpoint_dir}") return None, 0 subdirs = [os.path.join(checkpoint_dir, d) for d in os.listdir(checkpoint_dir) if os.path.isdir(os.path.join(checkpoint_dir, d))] if not subdirs: logging.info("No subdirectories found for checkpoints.") return None, 0 latest_subdir = max(subdirs, key=lambda x: int(os.path.basename(x))) latest_epoch = int(os.path.basename(latest_subdir)) logging.info(f"Latest model directory: {latest_subdir}, Epoch: {latest_epoch}") if os.path.exists(os.path.join(latest_subdir, 'saved_model.pb')): return latest_subdir, latest_epoch else: logging.info("No saved_model.pb found in the latest directory.") return None, 0 # Mirrored strategy for multi-GPU training strategy = tf.distribute.MirroredStrategy() with strategy.scope(): saved_model_dir = 'model_training' checkpoint_dir = os.path.join(saved_model_dir, 'checkpoints') latest_saved_model, latest_epoch = find_latest_saved_model(checkpoint_dir) if latest_saved_model: logging.info(f"Loading model from {latest_saved_model}") model = tf.keras.models.load_model(latest_saved_model) else: logging.info("No saved model found. Creating a new model.") model = create_model((img_height, img_width, 3), len(train_generator.class_indices)) if not os.path.exists(saved_model_dir): os.makedirs(saved_model_dir) summary_path = os.path.join(saved_model_dir, 'model_summary.txt') with open(summary_path, 'w') as f: model.summary(print_fn=lambda x: f.write(x + '\n')) logging.info(f"Model summary saved to {summary_path}") optimizer = tf.keras.optimizers.Adam(learning_rate=0.0002) model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy', tf.keras.metrics.TopKCategoricalAccuracy(k=5), tfa.metrics.F1Score(num_classes=len(train_generator.class_indices), average='macro')]) # Custom Callback for Saving the Best Model in SavedModel format class SaveBestModelTF(tf.keras.callbacks.Callback): def __init__(self, monitor='val_accuracy', saved_model_dir='model_training'): super(SaveBestModelTF, self).__init__() self.monitor = monitor self.saved_model_dir = saved_model_dir def on_epoch_end(self, epoch, logs=None): current = logs.get(self.monitor) if current is None: logging.warning(f"Monitor '{self.monitor}' for saving the model is not available in logs.") return logging.info(f"Epoch {epoch + 1}: saving model to {self.saved_model_dir}/checkpoints/{epoch + 1}") epoch_path = os.path.join(self.saved_model_dir, 'checkpoints', str(epoch + 1)) if not os.path.exists(epoch_path): os.makedirs(epoch_path) self.model.save(epoch_path, save_format='tf') # Callbacks for monitoring progress tensorboard_cb = TensorBoard(log_dir='./logs') # Save class indices to a JSON file class_indices_path = 'model_training/class_indices.json' if not os.path.exists(os.path.dirname(class_indices_path)): os.makedirs(os.path.dirname(class_indices_path), exist_ok=True) logging.info(f"Directory {os.path.dirname(class_indices_path)} created.") with open(class_indices_path, 'w') as file: json.dump(train_generator.class_indices, file) logging.info(f"Class indices saved to {class_indices_path}") # Model training total_epochs = 7 model.fit( train_generator, initial_epoch=latest_epoch, # Start from the next epoch epochs=total_epochs, validation_data=validation_generator, callbacks=[SaveBestModelTF(saved_model_dir=saved_model_dir), tensorboard_cb] ) # Evaluate the model eval_result = model.evaluate(validation_generator) logging.info(f'Validation Loss: {eval_result[0]}, Validation Accuracy: {eval_result[1]}') # Save the final model as a SavedModel format (including .pb files) model.save('model_training/finished_model') logging.info("Finished model saved in SavedModel format at 'model_training/finished_model'") # Convert to TensorFlow Lite converter = tf.lite.TFLiteConverter.from_saved_model('model_training/finished_model') tflite_model = converter.convert() tflite_path = 'model_training/lite_model/trained_model_lite.tflite' if not os.path.exists(os.path.dirname(tflite_path)): os.makedirs(os.path.dirname(tflite_path), exist_ok=True) logging.info(f"Directory {os.path.dirname(tflite_path)} created.") with open(tflite_path, 'wb') as f: f.write(tflite_model) logging.info(f"Model converted and saved as {tflite_path}") 
During training i got following output:
Found 182235 images belonging to 475 classes. Found 60544 images belonging to 475 classes. Epoch 1/7 2848/2848 [==============================] - 11914s 4s/step - loss: 1.7624 - accuracy: 0.5931 - top_k_categorical_accuracy: 0.8152 - f1_score: 0.4739 - val_loss: 1.1666 - val_accuracy: 0.7043 - val_top_k_categorical_accuracy: 0.9013 - val_f1_score: 0.6053 Epoch 2/7 2848/2848 [==============================] - 11096s 4s/step - loss: 0.8293 - accuracy: 0.7788 - top_k_categorical_accuracy: 0.9435 - f1_score: 0.7094 - val_loss: 0.9409 - val_accuracy: 0.7533 - val_top_k_categorical_accuracy: 0.9277 - val_f1_score: 0.6818 Epoch 3/7 2848/2848 [==============================] - 11123s 4s/step - loss: 0.6247 - accuracy: 0.8274 - top_k_categorical_accuracy: 0.9632 - f1_score: 0.7760 - val_loss: 0.8422 - val_accuracy: 0.7761 - val_top_k_categorical_accuracy: 0.9386 - val_f1_score: 0.7080 Epoch 4/7 2848/2848 [==============================] - 11101s 4s/step - loss: 0.5070 - accuracy: 0.8562 - top_k_categorical_accuracy: 0.9743 - f1_score: 0.8165 - val_loss: 0.8002 - val_accuracy: 0.7885 - val_top_k_categorical_accuracy: 0.9428 - val_f1_score: 0.7249 Epoch 5/7 2848/2848 [==============================] - 11079s 4s/step - loss: 0.4261 - accuracy: 0.8766 - top_k_categorical_accuracy: 0.9814 - f1_score: 0.8445 - val_loss: 0.7757 - val_accuracy: 0.7940 - val_top_k_categorical_accuracy: 0.9458 - val_f1_score: 0.7404 Epoch 6/7 2848/2848 [==============================] - 11100s 4s/step - loss: 0.3641 - accuracy: 0.8932 - top_k_categorical_accuracy: 0.9856 - f1_score: 0.8657 - val_loss: 0.7639 - val_accuracy: 0.8003 - val_top_k_categorical_accuracy: 0.9472 - val_f1_score: 0.7432 Epoch 7/7 2848/2848 [==============================] - 11129s 4s/step - loss: 0.3142 - accuracy: 0.9068 - top_k_categorical_accuracy: 0.9889 - f1_score: 0.8838 - val_loss: 0.7701 - val_accuracy: 0.8014 - val_top_k_categorical_accuracy: 0.9470 - val_f1_score: 0.7474 946/946 [==============================] - 2671s 3s/step - loss: 0.7682 - accuracy: 0.8008 - top_k_categorical_accuracy: 0.9470 - f1_score: 0.7456 
And when I try to load the model and make a prediction with this code:
class own: def __init__(self): if not os.path.exists("models/own"): raise FileNotFoundError(f"Model path models/own does not exist") try: self.model = tf.keras.models.load_model("models/own", custom_objects={'F1Score': F1Score}) except Exception as e: print(f"Error loading model: {e}") raise if not os.path.exists("models/own/class_indices.json"): raise FileNotFoundError(f"Class indices path models/own/class_indices.json does not exist") with open("models/own/class_indices.json", 'r') as file: self.class_indices = json.load(file) self.index_to_class = {v: k for k, v in self.class_indices.items()} def classify(self, img_path): if not os.path.exists(img_path): raise FileNotFoundError(f"Image path {img_path} does not exist") # Load and preprocess the image img = tf.keras.preprocessing.image.load_img(img_path, target_size=(600, 600)) img_array = tf.keras.preprocessing.image.img_to_array(img) img_array = np.expand_dims(img_array, axis=0) img_array /= 255.0 # Make prediction predictions = self.model.predict(img_array) print("Raw predictions:", predictions) top_index = np.argmax(predictions[0]) top_class = self.index_to_class[top_index] print(f"Top class: {top_class}, Probability: {predictions[0][top_index]}") top_n = 5 top_indices = np.argsort(predictions[0])[-top_n:][::-1] for idx in top_indices: print(f"Class: {self.index_to_class[idx]}, Probability: {predictions[0][idx]}") return top_class 
it always either predicts Steak or Omelette:
2024-06-01 14:17:27.571776: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead. C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\tensorflow_addons\utils\tfa_eol_msg.py:23: UserWarning: TensorFlow Addons (TFA) has ended development and introduction of new features. TFA has entered a minimal maintenance and release mode until a planned end of life in May 2024. Please modify downstream libraries to take dependencies from other repositories in our TensorFlow community (e.g. Keras, Keras-CV, and Keras-NLP). For more information see: https://github.com/tensorflow/addons/issues/2807 warnings.warn( C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\tensorflow_addons\utils\ensure_tf_install.py:53: UserWarning: Tensorflow Addons supports using Python ops for all Tensorflow versions above or equal to 2.12.0 and strictly below 2.15.0 (nightly versions are not supported). The versions of TensorFlow you are currently using is 2.15.0 and is not supported. Some things might work, some things might not. If you were to encounter a bug, do not file an issue. If you want to make sure you're using a tested and supported configuration, either change the TensorFlow version or the TensorFlow Addons's version. You can find the compatibility matrix in TensorFlow Addon's readme: https://github.com/tensorflow/addons warnings.warn( WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\saving\legacy\saved_model\load.py:107: The name tf.gfile.Exists is deprecated. Please use tf.io.gfile.exists instead. 2024-06-01 14:17:31.363666: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: SSE SSE2 SSE3 SSE4.1 SSE4.2 AVX2 AVX512F AVX512_VNNI AVX512_BF16 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\engine\functional.py:156: The name tf.executing_eagerly_outside_functions is deprecated. Please use tf.compat.v1.executing_eagerly_outside_functions instead. WARNING:tensorflow:From C:\Users\[Name]\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\src\layers\normalization\batch_normalization.py:979: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead. 1/1 [==============================] - 4s 4s/step Raw predictions: [[4.23421043e-05 1.45377373e-06 1.09034730e-02 1.19525917e-04 4.45407240e-05 5.72818244e-05 5.68609731e-03 5.15926695e-05 1.89958355e-05 1.39491487e-04 3.20717366e-03 9.63417915e-06 1.22947793e-03 4.01171012e-04 3.64649204e-05 1.75396308e-05 3.09416023e-03 7.56465085e-03 2.89075997e-05 3.90331191e-03 2.16231216e-03 4.18351328e-06 5.89632022e-04 9.40740295e-03 6.80321036e-03 2.32697069e-03 4.23964392e-03 1.56047070e-04 2.14435873e-04 6.95710623e-05 1.38103365e-04 1.78470847e-03 3.75193194e-03 5.94434096e-03 5.69255608e-05 7.57165905e-03 1.52613886e-03 9.48755944e-04 8.21925176e-04 3.18029453e-03 3.89393512e-03 8.41296278e-05 8.34997976e-04 3.14124190e-04 6.81638776e-04 1.10320523e-02 1.10815199e-04 6.18589204e-03 2.17406079e-02 3.72037102e-05 1.65579877e-05 1.30886221e-02 1.01435784e-04 2.13157946e-05 1.25499619e-05 8.94762017e-03 4.36880719e-03 4.78018774e-03 8.53170827e-03 1.45823974e-02 1.05571962e-05 1.12631078e-05 5.09415939e-03 8.12840741e-03 1.48212257e-05 1.52864438e-02 9.66716034e-05 2.25000476e-04 3.60531732e-04 9.28066402e-06 8.15156789e-04 1.09069003e-02 3.43796797e-04 2.53324561e-05 7.89516326e-03 1.44943051e-05 4.06841224e-04 1.67445414e-05 3.78527766e-05 1.80476491e-04 3.33699776e-04 4.13847056e-06 3.32273915e-03 6.51864940e-03 7.48403618e-05 2.68448726e-04 1.54245936e-03 2.95383972e-03 2.26996126e-05 3.64100002e-03 2.81597768e-05 3.11967051e-05 1.48438021e-05 8.46863433e-04 4.05767525e-04 1.75380992e-04 4.76581818e-06 5.42160356e-04 2.19287374e-03 1.18714366e-02 1.41884899e-04 8.76697595e-06 3.85931274e-03 4.37544841e-05 4.01919424e-05 3.87528981e-03 3.88057524e-05 2.69062322e-04 4.46968805e-03 1.17368818e-05 3.70194939e-05 1.55831876e-04 1.63894765e-05 2.38729117e-04 1.19046052e-03 2.12675819e-04 1.08185853e-03 3.01667496e-05 6.18575094e-03 3.91955400e-05 1.40065713e-05 3.02084809e-04 6.46927813e-03 3.37069832e-05 5.15250103e-05 2.31142567e-05 2.20274273e-03 3.17445702e-05 1.04452763e-02 6.80019803e-05 7.81101780e-03 1.23853814e-02 1.04819983e-02 3.20679283e-05 6.71340758e-03 6.94293885e-06 1.98310101e-03 5.29599565e-05 9.02036484e-03 4.57535089e-06 1.93145883e-03 4.06190008e-03 8.42716638e-03 1.50314684e-03 8.58115556e-04 1.22383237e-03 8.49474862e-04 5.48258470e-03 6.09953167e-05 1.57669128e-03 5.43692382e-03 4.88058169e-04 6.75312986e-05 3.43937165e-04 1.93276245e-03 4.06867871e-03 5.20323374e-05 7.78318281e-05 1.93508764e-04 1.14409677e-05 2.21324177e-03 1.90052821e-03 8.52691382e-03 2.43102224e-03 2.88419239e-03 2.53974522e-05 9.51182563e-04 2.32981285e-03 9.86064842e-05 4.14316915e-03 1.66544644e-03 1.02754391e-04 3.95776224e-05 3.02393187e-06 1.32082617e-02 4.14707232e-04 3.40229672e-05 4.81802830e-03 1.90598912e-05 4.08358377e-04 5.95443300e-04 1.22634810e-04 5.74091624e-04 8.57623760e-03 2.60962266e-03 2.95263715e-03 1.58088005e-05 1.64122172e-02 2.09987498e-04 2.36775051e-03 3.00696083e-05 3.46693669e-05 1.16249910e-04 6.94001559e-03 1.58400853e-05 1.95188422e-05 2.19169408e-04 3.09433235e-04 5.44128183e-04 6.35302160e-04 7.07127433e-03 1.19772732e-04 5.37439200e-06 1.91133395e-02 1.27979312e-02 3.89739592e-03 1.97048103e-05 2.29625002e-05 2.21050854e-04 1.92064399e-04 1.20139657e-05 3.20516920e-05 4.26828819e-06 3.64828011e-05 7.55213068e-06 2.67963973e-03 3.17923805e-05 6.19895945e-05 3.99544797e-06 2.68664648e-04 1.83274597e-02 8.71072552e-05 1.38439747e-04 4.96710254e-06 3.56023484e-05 1.34899991e-03 2.05766381e-04 3.96062108e-03 5.61600551e-03 5.31910664e-05 6.77773132e-05 1.36139952e-02 7.41477634e-05 1.63904135e-03 4.74587978e-06 1.45082246e-04 2.09337009e-06 8.13181920e-04 3.63194500e-04 6.46722084e-03 5.02364383e-05 6.90550078e-05 6.36972545e-05 2.09673337e-04 1.79036579e-05 2.36021675e-04 6.37291942e-06 5.70875318e-06 2.56235455e-03 2.72009202e-04 3.77103061e-05 5.63449021e-06 2.25979857e-05 2.61697169e-05 3.42375762e-03 1.04161156e-02 2.22223607e-05 6.27681802e-05 1.88465419e-04 2.82149922e-05 4.01149562e-04 1.31122259e-04 5.97863036e-05 2.41098423e-05 7.71318519e-05 3.57087993e-04 3.41462255e-05 1.01930054e-04 5.23206063e-06 2.95026781e-04 7.02897159e-05 3.99115682e-02 1.89455808e-03 1.74146010e-06 1.14775894e-05 7.84916210e-06 1.93041191e-03 2.37918808e-03 3.49449110e-03 6.98623667e-03 7.64393993e-03 4.12582303e-05 1.24030013e-03 1.72785169e-03 7.18316660e-05 5.17749111e-04 7.84919783e-03 1.04525541e-04 9.83856899e-06 8.77521088e-05 1.68125369e-02 4.09213862e-05 1.09552668e-04 2.54421811e-05 4.65482954e-05 6.95294410e-04 6.72869501e-05 2.40904570e-04 2.15112406e-04 3.85226776e-05 2.51369456e-05 4.68338234e-03 1.26862462e-04 9.00995801e-04 4.16984549e-05 7.36891707e-06 1.51534463e-04 1.48332631e-03 4.95935837e-03 1.91499032e-02 3.01804044e-04 6.28613270e-05 4.78365598e-03 8.38827982e-05 1.70516931e-02 1.52653758e-03 5.85798814e-04 3.11521399e-05 2.11968741e-04 7.41351105e-05 1.40834545e-05 8.93215940e-04 1.45371505e-05 4.96711982e-05 4.11317131e-04 8.89070239e-03 5.06997202e-03 3.08362325e-03 2.77415646e-04 3.75299685e-04 1.19906381e-05 1.50029315e-03 1.14443043e-04 2.52026439e-05 9.22407198e-04 3.51146841e-03 1.11564566e-06 1.36691102e-04 3.53032886e-03 2.15746608e-04 8.79282816e-05 4.36248304e-03 1.77966576e-04 1.47887832e-03 6.94399816e-04 8.03673174e-04 5.23004041e-04 3.90421192e-04 1.06344873e-03 3.55399796e-04 6.01265463e-04 1.55850008e-04 1.33491016e-03 1.09734829e-04 4.38019342e-04 2.42487862e-04 6.84730615e-03 1.02040754e-03 1.07652310e-03 3.51822848e-04 9.20735547e-05 7.50967592e-04 1.44127226e-02 3.58455327e-05 5.16555374e-05 1.31370616e-03 9.02966480e-04 1.24254671e-03 5.20300702e-04 8.57163919e-04 3.66344648e-05 2.01024144e-04 6.52487564e-04 5.93215809e-04 5.76604251e-03 6.19325438e-04 1.16480421e-03 2.37531040e-05 2.50119111e-03 7.08868974e-05 5.99786472e-05 2.55976247e-05 4.62695534e-05 4.24469297e-04 6.20667648e-04 4.15926515e-05 7.03983005e-06 8.77018738e-06 5.21141301e-05 2.11411956e-04 7.74205779e-04 5.31276630e-04 6.44316664e-04 4.07212786e-03 2.68336060e-03 1.74210854e-05 3.76385942e-05 6.74255705e-03 4.46323538e-05 2.76757801e-05 2.56290223e-04 1.22213329e-04 1.22734054e-03 7.73016480e-04 1.11903930e-02 3.16570923e-02 2.75775470e-04 5.73344238e-04 2.86890985e-03 1.10085262e-03 1.35615155e-05 2.66479654e-03 1.99418981e-03 4.31017601e-04 9.68350447e-04 3.51598108e-04 8.54862970e-04 3.52715979e-05 1.46333405e-04 5.10955288e-05 1.48639630e-03 1.80458324e-03 7.51840998e-05 1.13529910e-04 3.89828119e-06 8.74532212e-04 1.12358983e-04 3.93593837e-05 6.01037289e-04 2.06997487e-04 3.94766452e-03 1.09549124e-04 2.11403880e-04 6.95336203e-04 5.99777419e-03 5.45272342e-05 2.56420486e-03 2.20299728e-04 4.23851707e-05 6.69996080e-04 2.66609713e-04 1.55276459e-04 2.75739990e-02 3.43240798e-03 2.68303775e-05 1.52821158e-04 9.82575657e-05 4.00313947e-05 6.07266993e-05 5.28094570e-05 1.02948405e-04 6.20577412e-05 2.12161940e-05 2.99842539e-03 1.17558768e-04 1.58015324e-03 3.30074807e-04 1.19093776e-04 2.52985101e-05 1.59350988e-02 4.89539379e-05 1.05491054e-05 1.09012712e-04 2.97089737e-05 7.28885690e-03 1.87386977e-05 1.85028894e-05 5.79945299e-05 1.54079917e-05 9.85169099e-05 1.05076749e-03 7.55816349e-04 2.62255053e-05 1.18091421e-05 2.95209320e-05]] Top class: omelette, Probability: 0.03991156816482544 Class: omelette, Probability: 0.03991156816482544 Class: steak, Probability: 0.03165709227323532 Class: tacos, Probability: 0.027573999017477036 Class: breakfast_burrito, Probability: 0.021740607917308807 Class: pulled_pork_sandwich, Probability: 0.01914990320801735 (own): omelette - 3.66s 
Help would be appreciated because im slowly losing my mind :(,
Jonas
submitted by Jonasbru3m to tensorflow [link] [comments]


2024.06.01 14:04 123Gurmeet Mike Tyson Fight cancelled What happened to and Training 2024

The former world champion suffered a medical emergency due to an ulcer growing on a flight this week.
Netflix, which was set to show the fight, released a statement announcing the cancellation.
It reads: “Unfortunately Jake Paul and Mike Tyson will not face each other on July 20 as planned. Tyson’s recent ulcer has limited his ability to train fully for the next few weeks.
“The fight will be rescheduled for a date later this year when Mike will be able to resume training without limitations and both fighters will have equal time to prepare for this once-in-a-lifetime showdown!”
Tyson required medical attention from paramedics on a flight from Miami to LA earlier this week.
He felt nauseous and dizzy, although his publicist said he was feeling “much better” after treatment.
Iron Mike claimed on social media that he feels 100 percent and is ready to face Paul.

What happened to

Mike Tyson’s highly anticipated match against YouTuber-turned-boxer Jake Paul has been postponed after Tyson suffered an ulcer earlier this week, Tyson’s publicist and Netflix announced Friday.
“I want to thank our fans around the world for their support and understanding during this time. “Unfortunately, due to the progression of my ulcer, my doctor has advised me to lighten up my training for a few weeks to rest and recover,” Tyson said in a statement.
“My body is in better shape than it was in the 1990s and I will be back to my full training program soon. Jake Paul, it may take you some time, but eventually you will still be out of boxing for good. I appreciate everyone’s patience and can’t wait to deliver an unforgettable performance later this year.

Training 2024

Mike Tyson might have a little more left in the tank than many expect.
submitted by 123Gurmeet to u/123Gurmeet [link] [comments]


2024.06.01 13:55 kkinvironment KK Environment Solutions

Established in 2012, Kamal Krishna Environment Solutions is your trusted partner for tackling environmental issues. Based in Lucknow, with facilities in Meerut and Kanpur, our dedicated team of experts is committed to providing top-notch solutions for a cleaner and safer environment.

Our Expertise

Pollution Control: We manufacture and supply a wide range of pollution control systems, including effluent treatment plants (ETP), sewage treatment plants (STP), activated carbon filters, and pressure sand filters. Our systems are designed to efficiently manage air pollution while being cost-effective and reliable.

Effluent Treatment:

Whether you’re in the leather, paint, dyeing, or dairy industry, we offer tailored ETP solutions to handle your specific needs. Our systems effectively reduce biological oxygen demand (BOD), chemical oxygen demand (COD), total dissolved solids (TDS), and heavy metal contaminants.

Sewage Treatment:

We provide advanced sewage treatment technologies like MBBR, MBR, SAF, and FAB. From large-scale operations to portable setups, we have solutions to fit every need.

Quality You Can Trust

We use only the highest quality materials sourced from trusted vendors and employ the latest technology in our manufacturing processes. Our products are known for their high performance, low maintenance, and long service life. Each product undergoes rigorous quality checks to ensure it operates smoothly and meets your expectations.

Our Facilities

Our state-of-the-art infrastructure includes the latest machines and technology. Our operations are divided into departments like manufacturing, quality control, R&D, and warehousing, ensuring everything runs smoothly and efficiently.

Our Team

Our team of skilled professionals brings a wealth of expertise to the table. We select our team members based on their skills and market knowledge, and we conduct regular training sessions to keep them up-to-date with the latest industry trends and technologies. Our professionals work together seamlessly to meet your needs promptly and effectively.

Custom Solutions

We know that every client is unique. That's why we offer customized solutions tailored to your specific requirements. Our commitment is to serve you with dedication and ensure your complete satisfaction with our services.
At KK Environment Solutions, we’re not just about providing products; we’re about creating partnerships for a sustainable future. Trust us to help you manage and overcome your environmental challenges with innovative and effective solutions.
submitted by kkinvironment to u/kkinvironment [link] [comments]


2024.06.01 13:49 Cleveracacia Resistance to Feedback/Supervision?

I'm currently supervising a Behavior Tech who refuses to accept Feedback. I have been supervising a newly hired Behavior Tech who seemed like a great candidate on paper, lots of training and is currently getting their Masters Degree in Psychology and wants all the hours they can get.
However, we started with one case and after 3 days in the family no longer wanted services. Without going in to all the specifics, the family decided not to continue. The family was somewhat reluctant based on past negative experiences so they knew from the beginning they just might not be ready. The BT was irate about no longer getting hours, saying that he felt he should have been a part if the discussion with the family because it's disrespectful to cut his hours- red flag number 1.
To make up some hours, I offered to do some 1:1 training with him so he could at least get paid for that while waiting for the next case. We did over 6 hours of training on Pairing, Data Collection and how to respond to challenging behaviors.
I went to their 2nd assigned case to observe them pairing. It did NOT go well. The BT basically just sat the client, not doing anything. I prompted them to interact, they just sat there on the couch until the mom introduced thr iPad trying to get some interaction going. The client then began shoving and pulling the Tech's arm which is a precursor to biting. Despite being prompted to follow the training protocol the Tech just sat there. I finally just took over the session and modeled programs while the tech watched.
I did a follow-up with the tech to review the session, trying to get him to reflect on some ways to improve. The tech was adamant that he handled the session "perfectly." I used several examples of where we could have tried something different, asked him to identify the precursor behaviors, techniques for pairing-nothing.
So after, I informed them they would remain pairing, not running treatment protocols and would just be assigned to one case for now with close supervision he became irate, demanding to talk to my supervisor (who's already aware and agrees with my assessment), is demanding more hours etc. I also need to note that he has poor boundaries (ie., sending repeated "non-emergency) text messages after hours, demanding a reply to texts even after I inform them that I have left for the day and will get back to them tomorrow etc.)
I don't know what else I can do in terms of training, supervision, modeling etc. He just isn't willing to accept Feedback. Every time something is identified as improving, he disagrees, tries to insist that he did it the way he was supposed to.
Is there anything you've experienced that has worked to get a supervisee to accept Feedback? Any suggestions welcome!!(PLEASE 🤔)
submitted by Cleveracacia to ABA [link] [comments]


2024.06.01 13:34 Humble_Barnacle_6330 Second Career after CAF

I was just wondering about a second career after the CAF.
Long story short:
I'm reaching out as I have found Reddit to be an invaluable source of info regarding VAC claims and medical information, which I was very ignorant about until it truly affected me a couple years ago. Some salty comments (lol), but that's to be expected and can be entertaining to read.
I will eventually attend a SCAN seminar and receive all info regarding benefits and programs if released. Which the Transition Centre has been great with providing.
I never truly expected to be released or compulsory OT until having a serious convo with my doctor. My CV3 category does limit me extremely, and anyone who is colour vision deficient can understand this...lol.
I was just hoping if anyone transitioned to a new career and was truly happy, with good benefits, a bit stimulating, but nothing crazy. I completed a lot of courses and advanced courses in the CAF and am ready to slow down if needed.
I was interested in Police and CBSA, but my CV cat will not qualify me. So maybe Corrections (federal).
I have three young kids, and I'm computer savvy, and academics come easily but not interested in going to university or anything.
If anyone has any advice or anything I should look for or prepare for, it would be greatly appreciated it.
I'm just trying to prepare for the the worst-case scenario.
Thanks
submitted by Humble_Barnacle_6330 to CanadianForces [link] [comments]


2024.06.01 13:01 AutoModerator "Daily Request Assistance Post - Daily Mental Health Check in - June 01, 2024"

If you need help or are thinking about ending your life, Please reach out to someone in your life or comment on this post. We are here to support you.
Call 988 National Suicide Hotline - Press 1 for VA Crisis Line
Suicide and Mental Health Resources A comprehensive list of resources can be found here.
Veteran's Crisis Information
You can call 1800 273 8255, Press 1 or text 838255
https://www.mentalhealth.va.gov/MENTALHEALTH/get-help/index.asp
1-877-927-8387 Open 24/7 VA Vet Centers offer counseling Vet Centers are local, community-based confidential counseling centers that support war Veterans, active-duty Servicemembers, and military family members with post-deployment readjustment services. The goal of every Vet Center is to provide a broad range of counseling, outreach, referral, and assessment services, collectively called readjustment counseling services, to facilitate high-quality post-war readjustment and reintegration. Readjustment counseling services at a Vet Center allow war Veterans a satisfying post-war readjustment to civilian life and provide active-duty Servicemembers a confidential resource for post-war assistance. Military families also receive no-cost marriage and family therapy and supportive services for military-related issues. Vet Centers provide bereavement counseling to surviving parents, spouses, partners, children, and siblings of Servicemembers, which include federally activated Reserve and National Guard personnel, who die of any cause while on military active-duty. Vet Centers provide confidential military sexual trauma counseling to all military Veterans and active-duty Servicemembers, to include federally activated Reserve and National Guard personnel, no matter their duty location, era of service, or whether the trauma incident was reported to authorities.
Veteran Wellness Allegiance can offer Peer Counseling and assistance
Military One Source - 1-800-342-9647
Please seek help if needed...There are behavioral health resources at your disposal both in the Military and out.
non VA treatment program for PTSD:
https://www.va.gov/opa/pressrel/pressrelease.cfm?id=5852
Vets4Warriors 1-855-838-8255
Veterans in acute suicidal crisis are able to go to any VA or non-VA health care facility for emergency health care at no cost – including inpatient or crisis residential care for up to 30 days and outpatient care for up to 90 days. Veterans do not need to be enrolled in the VA system to use this benefit. Literally any veteran can walk into ANY urgent care/ER for thoughts of suicide and they can get free care.
Any veteran experiencing food insecurity can call their primary care (PACT) team and have one of the PACT social workers conduct a food insecurity screen. These are websites veterans can use to find local food pantries, soup kitchens, and food banks. Food Pantries Soup Kitchens Food Banks
Veterans who are homeless or at imminent risk of becoming homeless can call or visit their local VA Medical Center where staff are ready to help.
VA Emergency Rooms/Services - VA Urgent Care
VA Health Chat
Free Legal Clinics
Free legal services for veterans
submitted by AutoModerator to Veterans [link] [comments]


2024.06.01 12:55 Vast_Hat_8269 Dental Care for Diabetics: Special Considerations and Tips

Dentist in Kalyani Nagar

Maintaining good dental hygiene is crucial for everyone, but for individuals with diabetes, it is even more vital. Diabetes not only affects your overall health but also has a significant impact on your oral health.
Poor blood sugar control can lead to various dental problems, making it essential for diabetics to take extra care of their teeth and gums. Dentist in kalyani nagar
In this blog, we will discuss the special considerations and tips for dental care that every diabetic should know.

The Connection Between Diabetes and Oral Health

Diabetes can disturb oral health in various ways:
  1. Gum Disease: High blood sugar levels can lead to an increased risk of gum disease (periodontitis). This condition causes inflammation and infection in the gums and bones that support the teeth, potentially leading to tooth loss if not managed properly. Dentist in kalyani nagar
  2. Dry Mouth: Diabetes can reduce saliva flow, leading to dry mouth (xerostomia). Saliva is crucial for neutralizing acids produced by bacteria and for washing away food particles, so a lack of it can increase the risk of cavities and infections.
  3. Thrush: Diabetics are more susceptible to fungal infections like thrush, which can cause white patches in the mouth and tongue, leading to discomfort and difficulty swallowing. Dentist in kalyani nagar
  4. Delayed Healing: High blood sugar levels can impair the body’s ability to heal itself. This means that cuts, sores, or infections in the mouth may take longer to heal, increasing the risk of complications.
Understanding these connections highlights the importance of diligent dental care for diabetics. Here are some special considerations and tips to help manage your oral health effectively. Dentist in kalyani nagar

Special Considerations for Diabetic Dental Care

  1. Monitor Blood Sugar Levels
Keeping your blood sugar levels under control is the first step in preventing oral health problems. Consistently high blood sugar can weaken the body’s ability to fight infections, including those in the mouth. Regularly monitor your blood sugar levels and follow your doctor’s advice to keep them within the target range.
  1. Regular Dental Check-ups
Frequent dental visits are essential for early detection and management of potential issues. Diabetics should see their dentist at least twice a year for specialized cleanings and checkups. Inform your dentist about your diabetes so they can provide the best care tailored to your needs. Dentist in kalyani nagar
  1. Comprehensive Oral Hygiene Routine
Adopting a thorough oral hygiene routine is crucial for preventing dental problems. Brush your teeth at least twice a day with fluoride toothpaste and floss daily to remove plaque and food particles from between the teeth and under the gums. Consider using an antibacterial mouthwash to reduce the risk of gum disease.
  1. Look Out for Symptoms
Be vigilant about any changes or symptoms in your mouth. Mutual symptoms of gum disease include red, swollen, or bleeding gums, persistent bad breath, and loose teeth. If you notice any of these symptoms, schedule an appointment with your dentist immediately. Dentist in kalyani nagar
  1. Manage Dry Mouth
If you experience dry mouth, there are several steps you can take to alleviate the discomfort and reduce the risk of dental problems:
  1. Quit Smoking
Smoking is harmful to everyone’s oral health, but it’s especially dangerous for diabetics. It increases the risk of gum disease, dry mouth, and oral cancer. Quitting smoking can meaningfully improve your oral and overall health.

Tips for Maintaining Optimal Oral Health

  1. Choose the Right Dental Products
Select dental care products that cater to your specific needs. For example, toothpaste designed for sensitive teeth can help if you experience discomfort. Electric toothbrushes can be more effective at eliminating plaque than manual toothbrushes. Fluoride rinses can strengthen your teeth and help prevent decay.
  1. Maintain a Balanced Diet
A healthy diet plays a crucial role in managing diabetes and maintaining oral health. Limit your intake of sugary and acidic foods, which can lead to tooth decay and gum disease. Instead, focus on a balanced diet with fruits, vegetables, lean proteins, and whole grains. Dentist in kalyani nagar
  1. Hydration
Staying hydrated is essential for overall health and helps combat dry mouth. Drink water regularly and avoid sugary drinks, which can increase the risk of cavities.
  1. Stress Management
Stress can negatively impact both diabetes and oral health. High-stress levels can lead to poor blood sugar control and unhealthy habits like neglecting oral hygiene. Practice stress management techniques such as regular exercise, meditation, and adequate sleep. Dentist in kalyani nagar
  1. Medication Management
Some medications for diabetes can have side effects that affect oral health. For example, certain drugs may cause dry mouth. Discuss with your doctor or dentist about managing these side effects effectively. They may recommend saliva substitutes or other treatments to help.
  1. Educate Yourself
Stay informed about the latest research and recommendations for diabetes management and oral health. Knowledge is a powerful tool in preventing and managing complications. Attend diabetes education programs and read reliable sources to keep yourself updated. Dentist in kalyani nagar

Conclusion

For diabetics, maintaining good oral health requires a combination of diligent self-care and professional guidance. By understanding the connection between diabetes and dental health and implementing these special considerations and tips, you can reduce the risk of complications and enjoy a healthy mouth and body.
Remember, managing your diabetes effectively and taking proactive steps toward oral hygiene can go a long way in ensuring your overall well-being. Dentist in Kalyani nagar
Regular dental visits at the best dentist in Pune, a comprehensive oral hygiene routine, and a healthy lifestyle are the pillars of excellent dental care for diabetics. Take charge of your oral health today and experience the benefits of a confident smile and a healthier life.
submitted by Vast_Hat_8269 to u/Vast_Hat_8269 [link] [comments]


2024.06.01 12:54 QueasyStorage637 Looking for novel

Hi I just came across a novel, chosen by the moon novel by izabella W. Its on pay by chapter websites, I've opened and read a few chapters but I can't seem to find any free version or chapter version anywhere. Please help. If anyone has read it I'm willing to take spoilers. Here's the advert I found below of it on Facebook.
Lycanthrope species is a disgusting race. And I, Delan Riley, am nothing more than a human scum in their eyes never expected those species would turn my world upside down. Since when the lycans managed to penetrate our town, like in the early 1900's we have a hierarchy, upper class = the lycans, middle class = mated humans, and lower class = the normal humans, who were basically considered scum. I endured their torment day after day, vowing to run away from them one day, until that day came and everything changed.
Dylan POV "Humans," I scowled at the principal's words from tannoy. "The Alpha twins will be celebrating their birthday tomorrow, as such, festivities are in order." Oh great, the Alphas twin children. Adrian and Arya are the worst lycans alive. I swear just because they are the alphas kids they literally get away with everything. If their birthday is tomorrow, then the wolves are going to be worse than ever. "All students will be present to greet them, two lines will be made, with humans on the left and the lycanthrope on the right. Any mated human will be at the front of the line for their year, you will all also be in order of your school year. That is all." Chat broke out the minute the tannoy was finished. "We haven't had a school gathering since the alpha king visited three years ago, before his sons coronation." Nick was right, the last time we all gathered like that was for the king and queens visit, when he decided to let the world know that he was to renounce his title to his only child, son Josh. "That sick bestard, he wants to make sure everyone is there so those idiot twins can find their mates." Yes I was mad, my fists connected with the table in front of me once more as I thought about how disgusting the situation was. You see the twins will be turning 17, so it's very possible someone in our school could be their mate, finding a mate is sacred to a wolf, the minute they say that one word your fate is sealed. They will turn your mind, morph you into being a lover of their kind, and then you'll give in.

That won't happen to me, I'm growing old to see the world as it once was, and I'm going to choose who I'll be with. No one will take that dream away from me.

Once dinner was finished, I just wanted to sleep. I'd had a very long tiring day, I quickly sat down on a small stool my mother kept in the storage closet and removed my shirt while my brother Freddy sat at the table to do his simple homework. It wasn't long before my mother came in with a large bowl of warm salt water and some cotton, this was going to sting I just knew it. She was here to help me with the wounds caused by wolves yesterday. She slowly began to unwrap the bandage from around my torso and slowed down drastically when it came to the final layer, I felt it peel off every wound and my fists clenched in pain. "Jesus!" I heard my mom exclaim once the dressing was completely removed. The air on my back was nice though and I sighed as my arm covered my once again exposed brests. "This is more than 15!" I began to hear sniffles coming from her and sighed turning round to look at her face, only to notice tears streaming down it. "Mom I'm fine, it's alright." She shook her head. "It's not alright, I'm your mother I shouldn't let these things happen. I'm so sorry. Your father would have..." here she goes again. Every single time something happened she'd always bring up dad, it really annoyed me because no matter how much we all wish he was here, he just isn't. My father was kiled by THEIR kind, almost 5 years ago when they actually managed to take over. When the lycans managed to penetrate our town my father rose up with some people from the neighborhood, to defend our livelihood, it was futile to say the least. We lost many people and I watched as my dad was ripped apart by two fully shifted wolves, I ended up shoting him to stop his suffering before they dragged me to the courtyard, i was the person to receive the first lashing of the town when I was 12! The wolves have been pretty strict with me since that day. "Stop being stvpid!" Was I harsh? Definitely! Did she need to hear it again, absolutely. "Dad is dead, we don't know what he'd do because he never knew this life. He never knew this world." I know what he'd have done, most likely attacked the guy who held the whip and got himself kiled in the process. "The best thing you can do for me, is stop crying and help me, next time don't insist on helping if you can't handle it." She began to wash my open wounds with the warm salt water causing loud winces to leave me, I knew it was necessary to prevent infection, but my god it hurt like a betch. "Some of these are really deep Dylan!" She sniffed again and my eyes rolled in my head. "I told you, I'm fine, just wrap me back up so I can get to bed." My mom was obviously more impacted by my injuries than I was, I suppose that always the case though. When it's happening to you, you've just got to get through it but when it's happening to someone you love, you just want to take their pain away. She quickly placed a fresh bandage around my waist and chest and wrapped it tightly for compression. The bowl of water that was used was now red in color, I guess from the blood my back was dripping with. "Can you keep your head down please? At least just this week. You can't take any more lashings." I simply nodded before standing up away from the stool, I walked over to Freddie and ruffled his hair in affection. "Good night squirt." He giggled and fixed his hair slightly. "Night Dilly." I smiled walking upstairs to my little bedroom, as soon as I was inside i shut the door and flopped down on to my bed on my stomach and I took a minute to cry to myself at the pain in my back, what my mom did was important but it hurt, not that I'd ever tell her. My hand covered my mouth quickly to muffle any noise I might be making. I couldn't tell anyone, I had to be strong because more and more people were crumpling these days, and my mom would break if she knew how much I was suffering. Sleep followed me shortly after, she was right though about me needing to keep my head down for the time being, I could not take another lashing! After a long night and an even longer morning, we were all finally stood in the hallway at school waiting for the twins to arrive. "Mine!" Everyone that was stood in the hallway tensed up, as we were seniors, me and Nick were stood towards the very back of the human line. All the mated people were situated directly opposite their wolf mates in their years. We stayed silent and still as Arya walked down the hall and stopped directly in front of Nick. His eyes widened in fear, unsure of wether to look up or keep his head lowered. "Look me in the eye, mate." He glanced at me slightly as if asking what he should do. "I said, look me in the eye." He slowly moved his eye line up to look at her face. I took a glance myself to see her eyes pitch black with lust. "I... can't... I mean... erm." Before he was able to mutter anything else, two wolves from opposite, grabbed him out of the line and dragged him behind Arya. "Hey!" My head shot up before I could stop myself. My mouth also forgot its place as I jumped out of line. Everyone's head shot to me as my eyes widened in realization at what I'd done. Adrian, the other twin, walked up to me before punching me right in the stomach, I doubled over instantly. Feeling the sting in my slightly healed back. "I know you... You were publicly flogged only two days ago." God I hate this guy. "I also have it on good authority, that you openly spoke out against our rules and regulations in yesterday's class." My head shot down the line slightly to see Erin, looking a little frightened, her mate, the beta to be was looking at her, nodding his head in reassurance. "You traitor, you grassed on your own kind?" I yelled at her before feeling a fist connect with my cheek. My head whipped to the side from the force, while my class members gasped. I'm so done with this treatment, right then, I wasn't in charge of my actions. My fists curled up and my stance became a lot more defensive. My head snapped up to the alpha to be, and I looked him in the eye. "You don't know the meaning of the word disrespect." I suddenly hurled my fist towards his head, which he easily dodged, but my foot came up and kicked him instead. He stumbled backwards from the force with wide eyes. "You... you Actually hit me!" He didn't even sound annoyed, more shocked. Everyone in the hallway was watching, waiting for the alpha to do something but instead he simply stood up straight, regaining his composure. "I think everyone should get back to class." He began to walk away, following his sister when I called him back. "What about Nick?!" "Simple, He's my sisters mate. He now belongs to her." Argh, he's not an object. "He's not her property." A chuckle left his mouth, before turning his back to me again. "All humans are property." A short while later everyone made it to science class, our teacher Mrs Mathews is mated to the lycans pack doctor, she also now has a four and two year old with him. She was one of the first humans to be cohered into a false relationship. "What were you thinking young lady?" I rolled my head at her before looking at the empty seat next to mine. Nick was with that stvpid wolf girl right now. Being changed, I'm so angry it's ridiculous. "I was thinking, this guy is being a prick. Did you hear him? 'All humans are property.' It's bull shet." I looked up and the whole class looked at me like I had three heads. Talking shet about wolves is one thing, but talking about an alpha is punishable by death, attacking an alpha is an even worse offense. There was then a knock at the door and in walked Erin and her band of mated bestards. "Sorry we're late Mrs." "Erin, how are things between you and bata Monroe?" She blushed, the traitor actually blushed at the mention of his name. "He spoke to me last night about trying for a baby. We need a good strong boy to take over as beta." I scoffed looking at her as she took her seat. "You guys are actually pathetic, why can't it be a girl? Those mutts are basically Neanderthals" I voiced my opinion and saw all the shocked faces around me. Calling the lycans mutts, is the same as them calling us scum. After lesson had ended the entire school was called into the hall for assembly. This is where any human who has been found to have broken the rules were punished, usually 10 lashings were goven out or something similar. "Welcome to the school assembly, congratulations to the alpha twins for finding both your mates. Now on to the business at hand, as the 5 year anniversary of the new world is coming up, we have been informed that the alpha king will be visiting our district next week, this is very exciting news. We want you all to look your absolute best, she wolves and mated females will wear exemplary dresses made by seamstress. Male wolves and mated men will wear tailored suits. Anyone who doesn't comply will be reprimanded." The Alpha King?! No one has met him yet, he took over the throne three years ago when he turned 18. He really didn't make any appearances though, great, this month is going to be a nightmare. "As for the humans, you will be given a new uniform to wear for the visit, these are to be neatly ironed and worn to the highest standard. As for the following humans, based on your attitude this past week, you will be coming to the front and facing punishment. Tony summerset?!" Tony's head shot up as he looked around, he was in the year below but he shared my views when it came to the lycans. He slowly walked up to the front of assembly, almost instantly his top was t0rn in two and he received 10 lashings. A girl named Kara was next and she too received 10 lashings. A few more people went up slowly accepting their fate then suddenly my name was called. "Dylan Riley." Inside I was terrified but I simply shrugged my shoulders, I guess I did kind of expect this. Although I'm not sure if my back can take any more damage. "You attacked an alpha, correct!" His eyes bored into mine as I bowed my head submitting to his authority. "Technically, no." Everyone in the school gym looked on in fear, as my head moved to the front row of the wolf side. Adrian sat, with a werewolf girl in the year below, her name was Jana, I guess he found his mate. Nick and Arya were no where to be seen though. Adrian gave me a shrug as if to say he didn't tell, before smirking at my comment. "He hasn't officially taken the alpha title yet, so he's just..." i looked at the principle and noticed his eyes black and his claws out, he was in what lycans call a half shift, triggered when the subject has become angered. He turned to two security wolves and gave them a nod, Almost immediately i was forced onto my knees, my arm was slammed on a table and held in place by one wolf, while my body was held in place by the other. "Ok, I don't think this is needed, I have alpha blood, a stvpid human girl can't hurt me." My head snapped to Adrian who had stood up in front of the school to stop what was happening. "Nevertheless, humans need to know their place." With that the pressure on my arm increased as our principals hand pulled my sleeve up before a long claw punctured my skin. The searing pain shoting from the fresh wound had my eyes scrunched and my fist clenched, I bit the inside of my cheek hard instantly tasting blood, however no sound left my mouth. He continued to write, using my skin as a canvas and his claws as a marker, it went on forever, my vision blurred slightly at one point as I turned my head away. After minutes of torture, he was done and the pressure on my arm eased, instantly I snatched my arm away, hissing through my teeth at the pain. I was about to scurry off stage, when I was roughly grabbed yet again, my arm being held in the air by the principal while my feet were inches off the floor, blood dripped from the wound and the pattern he had made was on show for everyone to see. Loads of people gasped, even the wolves looked slightly horrified at what had happened. "This is what happens when a human decides to speak out. I can promise, anyone who so much as says one word about our way of life, will have the same punishment." My arm was starting to seriously ache from being held in the air for so long, and the lack of blood flow to my suspended arm was causing me pins and needles, still I refused to make a sound. I held the tears back and I bit my cheek harder causing more blood to fill my mouth. "That's enough Bradley!" Adrian growled, he was still stood up and looking at the scene in front of him. His eyes hard as he stared at the principal a low warning growl erupted from his chest which had the head teacher gulping, he quickly let go of my arm causing me to crash to the floor. A small cry left my mouth as I hit the hard floor. Immediately I scrambled away, my foot just missed the high step leading to the stage and I fell, waiting for the impact of the ground, but it never came. Two strong arms wrapped around me catching my weak body causing me to look up, my eyes widened as I noticed Adrian had caught my falling form. "This isn't part of the human punishment program!" Adrian growled causing me to tense in his grip, I pushed him away from me before fixing my uniform top. The room was deadly silent, taking in the scene in front of them, while I stole a glance at my forearm. Carved into my skin by his devastating claws were two words, words that would most definitely scar my body for life. 'Human scum' "Lessons must be learned, she received lashing merely two days ago, and clearly it had no effect on her." Another growl left Adrian's chest as he stepped on to the stage, I wasn't bothered though, you would think I'd be ashamed but I simply smiled slightly. I fixed my sleeve a little so it wouldn't rub on the fresh wound before speaking. "It doesn't matter," the whole room looked at me shocked by my attitude. "I would rather be labeled human scum, than have any resemblance to your kind. I'm proud of what I am, how many of you can say that?" After my amazing little speech, I walked right down the middle between the humans and lycans and out the door. No more compliance, I'm going to get away with as much as I can without getting into too much bother. There will come a day when the lycans power will fizzle out. When it does I'll be ready, I'll be waiting for the day we take our world back. As for the best part about my plan...

No one can stop me.

"Ouch, not so hard." I seethed as the school nurse cleaned my new wound with antiseptic. "If you had of just kept your mouth shut, this wouldn't have happened." I turned to my right looking out the window at the few clouds that were floating in the blue sky. "Like I said, I'm proud to be human, and now everyone knows what I am." I clenched my fist together as the nurse began wrapping a bandage around my forearm. It had been a good few hours since the incident in the hall, and I had been forced to come to the nurces office after I had tried to clean my wound by splashing it with water from the tap, it also refused to stop bleeding. "You are impossible. Can you please just try and stay out of trouble? For one day, that's all I ask." Our school nurse is a wolf, she's one of them. However she hates the way they treat us mere humans, she thinks we should all just live in peace with equal rights. Like that would ever happen. "All I've done is stay out of trouble, but you are just going to humiliate me anyway, so what's the actual point?" "The pack were discussing a public execution, Dylan. You need to walk on egg shells from now on, not just for you but for your family as well." No ones been publicly executed in over 4 months, I'm flattered they're considering it. They only execute people who they believe are the biggest problems to society. "Well then... I'm flattered." I chuckled, before looking at the patch job. 'Huh, not too shabby.' I quickly stood up from the human nursing station and pulled the sleeve of my shirt down covering the evidence of ever being hurt. "This is serious!" I just gave her a blank look before leaving the room. On the way out I heard her call back to me. "Please just think about it." I gave a clipped nod as I walked away wondering how I'm going to tell my mom about this. Later in the evening... "Dilly why you say that?" Freddie looked up at me with a mouth full of bread. "Don't speak with your mouthful!" My mom scolded him as a bashful blush made its way to his cheeks. "Sowwy mommy." His reply was muffled as he swallowed the last chunk of food. "I said it Freddie, because it's the truth. The wolf race are a pathetic excuse for..." my mom cut me off with an extremely stern look. "Dylan! They have ears everywhere, one more word out of you and it's your room." I scowled, my hatred for the Lycan kind growing stronger as each day passes. "What more can they do to me, lash me? Beat me? Brand me? They've ran out of options." I stated slamming my hands down, then severely regretting it as sharp pain shot though my wound. "What was that?" My head shot to regard my mothers worried expression. Her eyebrows were raised and her eyes were dull and judging as she looked at me. "Nothing, it was nothing." I quickly took my plate in my hand and began to walk to the kitchen. "I'm not really hungry, and I have homework to do!" My mom caught hold of my forearm causing me to drop my plate suddenly, I watched it slowly fall before shattering on the floor. I retracted my arm quickly and turned to Freddie. "Stay there and don't move until it's cleaned up ok sport?" He just nodded with wide eyes, I turned back to my mom and noticed her curious stare on my arm. Her grip shifted to the other side as she turned it around before pulling my sleeve up. The bandage was showing and a bit of blood was seeping though after the wound had been disturbed. "What the hel happened?" My moms eyes widened as she began to fumble with the bandage. Before she could unravel any of it I snatched my arm away. "I had an accident at school. No big." I began to gather the large pieces of the broken plate up ready to put them in the bin. "What did you do Dylan?" She looked at me with pure worry and only then did I realize what the wound must look like to someone who didn't know. "For gods sake! I didn't do it to myself! I got publicly punished at the assembly alright? It's no big deal." Her face dropped instantly and she stepped towards me, causing me to step backwards. "Mom, I'm ok. So back off will you." "What did you do? I've never known them to cut someone's arm as a punishment." Her shock and accusation was evident in her voice and I sighed heavily. "I spoke against the alphas son." I may have hit him too, but I wasn't going to divulge that part to her. "It's not one big cut, mom, it's a brand, 'human scum' carved onto my arm." "They've branded you now too?!" My eyes rolled at her hurt tone as I went to get the dustpan and brush. "You're so much like your father." A sigh left her mouth as she spoke, running a hand through her hair, while I quickly swept up the little pieces of the broken plate. "You've had a new uniform delivered. It's laid out on your bed. Dylan, Please just try and stay respectful in the future, I don't want my daughter to be completely mutilated. Although you're not far off." "Gee, Thanks." I then walked over to my little brother Freddy before blowing a kiss into his neck and hearing him giggle. "So sport, how's school going?" "It's ok." He shrugged before going back to coloring a dinosaur picture in. "Well that's good, stay out of trouble, ok little man?" Heading upstairs and into my room, my thoughts wandered to the permanent graffiti scar very slowly healing on my arm. Disgusting beasts. Think they own the world because they're faster, stronger and can shift. Pah. If you ask me they are not all that.

The second I walked into my room my mouth dropped open. On my bed was some grey pants laid out neatly, which wasn't the surprising part, no, what shocked me was the grey high neck no sleeved button down shirt, every single set of uniform had sleeves except this one. They've done this on purpose those, mutts. They want the world to see my arm and know what a disgusting creature I am. They want the world to know that I, Dylan Riley, am nothing more than 'human scum'.

During the last week, I've been horrible, in class I've been loud in voicing my views, I've insulted at least everyone to some degree, I didn't care about the consequences, and I certainly didn't think about them. I haven't seen Nick at all since he was claimed, and to make matters worse today was the royal visit. Oh yes, werewolves and mated humans alike were spending every waking minute preparing themselves to meet his royal majesty, king of the wolves. Unclaimed Humans however would rather stick pins in their eyes. "Dylan, get down now... you're going to be late." She was right, I was dawdling this morning, I really couldn't be bothered today, I gave myself one last look in the small mirror and sighed when my eyes met my newly uncovered brand. It had bad bruising around the letters, and was still extremely tender to touch, it was definitely healing now though. I made my way down the stairs and came face to face with my mother who was seeing to Freddie, she was helping my brother get his coat on when she turned to me. "You ready sport?" Freddie nodded his little head at me and smiled while I quickly slid my shoes on. "Just Remember, the alpha is bad enough, Dylan, please, please don't do anything to anger the king." My mother stopped us from walking out the door to tell me something she had been telling me continuously for the last couple of days, it was almost as if the entire human population of our district was expecting me to do something stvpid. "Try and have a good day." I rolled my eyes but nodded, even I know not to push the king, he could kil me in the hallway like it was nothing. In fact I plan on staying out of his way for the entirety of the day. "We will see you tonight mom." I stated before me and my brother began our walk to school, his little hand clutched my own tightly as we went. Usually Nick would be with us, as he lives next door, well he used to, now he's residing in the main pack house. I quickly dropped Freddie off at his school and watched him get the wolfsbane neutralizer before walking into him building giving me a small wave before he went in. With my new scar on complete show, and my figure being complimented by the skin tight shirt I was wearing, I sauntered down the street to school, I gave my name and year in and took the wolf's bane neutralizer injection with no problems at all. It was finally getting into school that the problem occurred. Walking through the halls I was met by many looks, some of pity some of disgust. You see every single non mated human in the school was wearing a long sleeved version of the uniform I was given. All the Wolves and mated couples were scattered around in fancy floor length dresses or tailored suits. As I turned the corner I noticed a couple, now this couple happened to catch my eye the most out of all of them because it consisted of Arya and Nick, eating each other's faces off. "What the hel!" Nicks head shot to me as his eyes widened. He too was dressed in a tailored suit, a navy blue tie hung on his neck to match Aryas dress. Why was this happening all the time? It's always my friends that get completely brain washed. I shook my head in disbelief before turning my back on him. I heard his fast footsteps behind me as I rounded the corner. "Dylan?!" He ran right in front of me, stopping me in my tracks, making me drop my bag off my shoulder and almost causing me to bump into him. "Let me just explain..." "Has she marked you?" I mean you could almost see it in his eyes, she had marked him, and knowing the way life goes he's probably even mated with her. "Actually... Don't even answer that." I aggressively picked my bag up off of the floor and stormed off down the hall. "Dylan, just listen to me, Erin was right, it's so hard to resist your soulmate, and Arya is actually ok once you get to know her." I just kept walking, he caught up to me walking beside me but it didn't matter, I completely ignored everything and everyone. 'I'm so not in the mood today' getting into class was good though, I said hello to Mr Foley and took my usual seat. Nick sighed then took his bag off ready to sit next to me, but I snapped before he had the chance. "Traitors and mated idiots sit on that side of the room." I didn't look him in the eye as I pointed to a seat right at the front of the classroom on the opposite side. His eyes widened as he turned his attention back to me. "You can't be serious Dylan." I gave him a blank look before grabbing my book out of my backpack, I placed it on the desk then began to write the date on the top line. "I've sat in this seat for as long as I can remember." I ignored him, his voice sounded sad and shocked. "Dylan? Wait! What is that?!" Before I could react Nick had grabbed hold of my branded arm and turned it to see the letters. "Oh my God! What happened?" I snatched my arm away from him and shrugged as I continued to write in my book before grabbing my water bottle out of my bag. "The principal happened, it was my punishment for speaking out against Adrian and Arya. I wear it with pride." He just held a complete look of disbelief. "You spoke out against them?" I shrugged, what did he think I'd do. "It's no secret that I despise this stvpid new world and the mutts that control it. You were my friend, I wasn't going to let them just take you without saying something, although that is exactly what you seem to have done. Enjoy the view from your new seat!" "Don't be like that, Dylan, I'm your best friend, I'm sorry about your arm, but..." my eyes rolled inside my head at my friends words. "Anything with the word 'but' in, isn't an apology, it's a rationalization." I took a drink of water from my bottle and kept my eyes facing forward, ignoring his every attempt to try and talk to me. "Dylan?.. Dylan?... Do you know what? Erin is right, if you push us all away you won't have any friends left." He huffed before walking over to the empty seat and sitting down, I could feel him glancing up at me every now and again but I didn't respond. "Good morning class, please settle down." He looked at me then at Nick and frowned, we've never sat apart, we were friends before the new world even began. I just shook my head telling him to forget it. "So... as you know the king will be arriving in a short while, but until then lessons will go on as normal." Its funny seeing teachers in the same uniform your wearing, mr Foley and his wife are the coolest. Human teachers and doctors only have slightly more respect than we do. Because of Mr Foley's status him and his wife have better access to food and drink, Mrs Foley is cool, sometimes she even makes sure mr Foley brings some in for me. Ya know, coz I'm their favorite student. It's not in a weird way, it's just they were friends of the family before the new wold took effect. Mr Foley and my dad were buddies from high school, so it goes without sayin really. "All the mated humans will be at the front of each years line again, after that you will all be placed in status, Nick, as your mated to Alpha Arya, you'll be at the front of your line. Dylan as you have been branded..." his voice trailed off as he looked at me. "Yeah yeah, I'll be at the back of the line behind everyone. I get it." I huffed, moving my sight towards the window once more. "I am sorry." I turned to face Mr Foley again, he looked genuinely upset and that look of pity wasn't something I wanted to see. I gave him a clipped nod then turned away again. "Anyway, on to the subject matter, 'Of Mice and Men, page 64, Nick why don't you start us off with the reading."

"Of course sir." Nick began reading the book but I switched off, today is going to be a long day. After almost an hour and a half of reading comprehension, the bell chimed signaling lunch. I shot up and out of the classroom before anyone could say anything. Today, I was avoiding drama like the plague.

I wandered the corridors straight to the lunch hall. All the people I would normally hang out with we're all mated so I grabbed my lunch quickly, and sat down at the end of the human table. Let me lay the lunch hall out for you. On one side of the room you have two long rows of tables, with simple benches that make it look like prison, on the other side of the room you have multiple round tables with fancy chairs. Yup you get it. The humans sit at the prison tables and the wolves and traitors sit on the fancy tables, they get fancy food, fancy drink and most importantly they get pudding. what I would give to have some pudding. "Dylan can we just talk?" Nick quickly took the spot next to me as he set his lunch tray down. I looked at his food which had been placed on a ceramic, circular white plate. God that looked good. I sighed knowing he was going to talk anyway. "Fine, you have two minutes." I used my fork to take a bit of pasta off his plate and shoved it into my mouth. God that was good. "After I left school, I was taken to the pack house with Arya, and I really got to know her. It took a few days for me to finally accept being with her, but ever since life has been ok, and the sax... well that's a whole other story." Eww, I didn't need that mental image in my head. "I'm glad your happy." I stated before deciding I had no appetite. His face held shock before he sighed in relief. "That means a lot Dylan, I mean you know that your opinion matters to me." I cut him off before he could say anything else. "I said I was glad your happy. I didn't say I approved of what you've done. You've basically turned into one of THEM, I can't ever forgive you for that." He looked hurt, but I couldn't care less about his feelings. He placed his hand gently on my arm and went to open his mouth when a growl sounded out. All heads whipped to where it came from, Arya was stood holding a glass of soda and a plate, she was looking right at me and Nick and I would totally be dead if looks could kil. Nick quickly retracted his hand, his whole face fell and you could see sorrow flood his irises. "You sit with me now, get away from that, that... scum!" Wow, Nick was such a lucky guy. NOT. "You heard her. Get away from me, go sit with your new friends. I'm happy for you, and I understand where your coming from, but don't come up to me again and pretend you didn't betray your own kind. Don't pretend you didn't betray me." I shoved a little bit of food into my mouth before standing up and walking out of the cafeteria, leaving my tray on the table. I was walking through the hallway to the classroom, you see I decided to spend lunch with Mr Foley in his room, when I happened to hear voices in the corridor. "Is it wise for her to actually be present when the king arrives? Surely she could be placed in the dungeons, it might actually teach her some respect?" My principal was speaking to the alpha of our district, huh, if I stayed and listened do you think they'd notice, maybe they could smell me?! "Everyone is to be present, if the Riley girl does one thing out of line she will be dealt with severely, child or not. That girl has been a blight to the district since day one, she's dangerous, if she puts one hair out of place I will personally break her into submission." Oh shet, they were talking about me specifically, and they mentioned the dungeon, that's not been used in months. Normally I would have listened in more but something about the entire situation didn't sit right with me, all of a sudden, I was on edge, and simply wasn't interested in the slightest in hearing how my misery was to be enhanced. I backed up slightly before turning around and bumping head first into one of the hottest man I had ever seen. I lost my balance immediately and fell straight on to the floor letting out a small grumble in the process. His eyebrows knitted together quickly and his breath hitched in his throat as he looked upon my fallen state and gasped. "Mate!" He whispered, his eyes fixated on mine. Now, I had seen and heard that many times to know what that means, I gasped before taking a step back. 'No, no, no, no, no. This can not be happening.' He growled slightly before stepping towards me. Oh Shet!
submitted by QueasyStorage637 to romancenovels [link] [comments]


2024.06.01 12:41 jjdewit RackNerd.com Review: is RackNerd.com a good web hosting company?

RackNerd.com is a leading provider of cloud-based infrastructure solutions, dedicated to empowering businesses of all sizes to achieve their goals through innovative technology and exceptional customer service. In this chapter, we will delve into the company's rich history, mission, and values that have enabled us to become a trusted partner for our clients.
Early Years (2013-2015)
RackNerd.com was founded in 2013 by a group of passionate entrepreneurs who shared a vision of revolutionizing the way businesses approach infrastructure solutions. Initially, the company focused on providing high-quality server colocation services to small and medium-sized businesses. Our early success was fueled by our commitment to exceptional customer service, competitive pricing, and a relentless pursuit of innovation.
Growth and Expansion (2015-2018)
As the company grew, we expanded our service offerings to include cloud-based infrastructure solutions, such as virtual private servers (VPS) and dedicated servers. This strategic move enabled us to cater to a broader range of clients, from small startups to large enterprises. Our team of experts worked tirelessly to develop and refine our infrastructure, ensuring seamless scalability and reliability.
Mission and Values
At RackNerd.com, our mission is to empower businesses to achieve their goals by providing innovative, reliable, and cost-effective infrastructure solutions. We believe that our success is deeply rooted in our commitment to the following core values:
1. Customer Obsession: We prioritize our clients' needs above all else, ensuring that every interaction with our team is exceptional.
2. Innovation: We continuously invest in research and development to stay ahead of the curve, providing cutting-edge solutions that meet the evolving needs of our clients.
3. Integrity: We uphold the highest standards of ethics and transparency in all our interactions, fostering trust and credibility with our clients and partners.
4. Collaboration: We believe that teamwork is essential to achieving our goals, and we strive to create a culture of open communication, respect, and mutual support within our organization.
5. Inclusivity: We celebrate diversity and promote a culture of inclusivity, ensuring that every individual has the opportunity to contribute their unique perspectives and talents.
Awards and Recognition
RackNerd.com has received numerous awards and recognition for our commitment to innovation, customer service, and community involvement. Some notable accolades include:
· Best Cloud Service Provider (2020) by Cloud Computing Magazine
· Top 10 Cloud Infrastructure Providers (2019) by Cloud Computing News
· Best Place to Work (2018) by the local business community
Conclusion
RackNerd.com's journey is a testament to the power of innovation, hard work, and dedication to our clients. As we continue to evolve and grow, we remain committed to our core values and mission. We are proud to be a trusted partner for businesses of all sizes, empowering them to achieve their goals and succeed in an ever-changing world.

History of RackNerd.com

History of RackNerd.com: A Journey of Innovation and Growth
As the world of technology continues to evolve at a rapid pace, RackNerd.com has emerged as a leading provider of innovative solutions for data centers and cloud infrastructure. Founded in 2012, RackNerd.com has come a long way from its humble beginnings as a small startup to becoming a global player in the industry. In this chapter, we will delve into the fascinating story of how RackNerd.com was founded and evolved over the years.
The Early Days: Founding and Early Growth (2012-2015)
RackNerd.com was founded in 2012 by a group of passionate entrepreneurs who shared a vision of creating a cutting-edge data center solutions provider. The company's early days were marked by a focus on building a strong team, developing innovative products, and establishing a solid foundation for future growth. The founders' expertise in data center design, infrastructure, and operations played a crucial role in shaping the company's early success.
During this period, RackNerd.com focused on building a robust infrastructure, investing in state-of-the-art equipment, and developing a comprehensive suite of services. The company's early clients were primarily small and medium-sized businesses seeking reliable and scalable data center solutions. As RackNerd.com's reputation grew, so did its client base, with the company expanding its services to include cloud infrastructure, managed services, and consulting.
Expansion and Diversification (2015-2018)
By 2015, RackNerd.com had established itself as a reputable player in the data center solutions market. The company's growth was fueled by its commitment to innovation, customer-centric approach, and strategic partnerships. During this period, RackNerd.com expanded its services to include:
1. Cloud Infrastructure: RackNerd.com launched its cloud infrastructure services, offering a range of cloud-based solutions for businesses of all sizes.
2. Managed Services: The company introduced its managed services portfolio, providing 24/7 monitoring, maintenance, and support for clients' data center infrastructure.
3. Consulting Services: RackNerd.com expanded its consulting services to include data center design, infrastructure planning, and migration assistance.
As RackNerd.com continued to grow, it expanded its team, investing in talent acquisition and development programs. The company also strengthened its partnerships with leading technology vendors, solidifying its position as a trusted advisor in the industry.
Global Expansion and Mergers (2018-Present)
In recent years, RackNerd.com has continued its rapid growth trajectory, expanding its global footprint and diversifying its services. Key milestones include:
1. Global Expansion: RackNerd.com established a presence in key markets, including North America, Europe, Asia-Pacific, and Latin America.
2. Mergers and Acquisitions: The company has made strategic acquisitions, expanding its portfolio of services and expertise.
3. Innovation and R&D: RackNerd.com has continued to invest in research and development, driving innovation and staying ahead of the curve in the rapidly evolving data center and cloud infrastructure landscape.
Today, RackNerd.com is a global leader in data center solutions, with a reputation for delivering exceptional service, innovative solutions, and unparalleled expertise. As the company looks to the future, it remains committed to its core values of innovation, customer-centricity, and strategic partnerships.
Conclusion
RackNerd.com's journey from humble beginnings to global recognition is a testament to the power of innovation, hard work, and dedication. From its early days as a small startup to its current status as a leading provider of data center and cloud infrastructure solutions, RackNerd.com has consistently demonstrated its commitment to excellence and customer satisfaction. As the company continues to evolve and grow, its story serves as a beacon of inspiration for entrepreneurs and innovators around the world.

RackNerd.com's Philosophy

RackNerd.com's Philosophy: Description of RackNerd.com's values and approach to web hosting
As a leading provider of web hosting services, RackNerd.com is committed to delivering exceptional quality, reliability, and customer satisfaction. Our philosophy is built on a set of core values that guide our approach to web hosting, ensuring that our customers receive the best possible experience. In this chapter, we will delve into the principles that shape our company culture and approach to web hosting.
I. Customer-Centricity
At RackNerd.com, we believe that our customers are at the heart of everything we do. We understand that our customers are the reason we exist, and we strive to provide them with an unparalleled level of service and support. Our customer-centric approach is built on the following principles:
· Personalized Support: We assign dedicated account managers to each customer, ensuring that their needs are met and concerns are addressed promptly.
· Proactive Communication: We maintain open and transparent communication channels, keeping our customers informed about their services and any issues that may arise.
· Flexibility and Adaptability: We adapt to our customers' evolving needs, offering tailored solutions and flexible pricing options to meet their unique requirements.
II. Quality and Reliability
Quality and reliability are essential components of our philosophy. We understand that our customers rely on our services to operate their online businesses, and we take pride in delivering high-quality hosting solutions that meet their needs. Our commitment to quality and reliability is reflected in:
· State-of-the-Art Infrastructure: We invest in the latest technology and infrastructure to ensure that our services are fast, secure, and reliable.
· 24/7 Monitoring: Our team of experts continuously monitors our systems, detecting and resolving issues before they impact our customers.
· Regular Maintenance: We perform regular maintenance and updates to ensure that our services remain secure, stable, and optimized for performance.
III. Innovation and Improvement
At RackNerd.com, we believe that innovation is key to staying ahead of the curve and delivering exceptional value to our customers. We prioritize innovation and improvement through:
· Research and Development: We invest in research and development to stay up-to-date with the latest technologies and trends in web hosting.
· Customer Feedback: We actively solicit and incorporate customer feedback to improve our services and address their concerns.
· Continuous Improvement: We continuously evaluate and refine our processes to ensure that our services meet the evolving needs of our customers.
IV. Transparency and Accountability
Transparency and accountability are essential components of our philosophy. We believe that our customers have the right to know what they are getting and how we operate. Our commitment to transparency and accountability is reflected in:
· Clear Pricing: We offer transparent pricing with no hidden fees or surprises.
· Service Level Agreements (SLAs): We maintain strict SLAs for our services, ensuring that our customers know what to expect from our services.
· Regular Reporting: We provide regular reporting and updates on our services, keeping our customers informed about their performance and any issues that may arise.
V. Conclusion
At RackNerd.com, our philosophy is built on a foundation of customer-centricity, quality, innovation, transparency, and accountability. We believe that these values are essential to delivering exceptional web hosting services that meet the evolving needs of our customers. By prioritizing these values, we strive to build long-term relationships with our customers, providing them with the best possible experience and ensuring their online success.

Features

Features: Description of Shared Hosting Features
As the foundation of a reliable and efficient online presence, shared hosting has evolved to cater to the diverse needs of individuals and businesses. In this chapter, we will delve into the various features that make shared hosting an attractive option for webmasters, entrepreneurs, and organizations alike.
1. Storage Space
One of the most critical aspects of shared hosting is the storage space allocated to each account. This refers to the amount of data that can be stored on the server, including files, images, videos, and other digital content. Typical storage space ranges from 1GB to 10GB, depending on the hosting provider and the type of plan chosen.
Benefits:
· Allows for efficient storage and management of digital assets
· Enables the creation of complex websites with multiple pages, images, and multimedia content
· Facilitates the storage of large files, such as videos and audio files
2. Bandwidth
Bandwidth refers to the amount of data that can be transferred between the server and the user's device. This is measured in gigabytes (GB) and is typically calculated based on the number of visitors, page views, and file downloads. A higher bandwidth allocation ensures that websites can handle increased traffic and data transfer without experiencing downtime or slow loading times.
Benefits:
· Ensures fast and seamless website loading times
· Supports high-traffic websites and e-commerce platforms
· Enables the hosting of multimedia content, such as videos and audio files
3. Email Accounts
Email accounts are an essential feature of shared hosting, allowing users to create and manage multiple email addresses. This feature is particularly useful for businesses, as it enables the creation of professional email addresses, such as [info@company.com](mailto:info@company.com).
Benefits:
· Enables the creation of professional email addresses
· Allows for efficient communication and collaboration
· Supports multiple email accounts for different departments or teams
4. Databases
Databases are a crucial aspect of shared hosting, as they enable the storage and management of large amounts of data. This feature is particularly useful for websites that require complex data management, such as e-commerce platforms and online applications.
Benefits:
· Enables the storage and management of large amounts of data
· Supports complex data management and querying
· Facilitates the creation of dynamic websites and applications
5. Control Panel
The control panel is the central hub of shared hosting, providing users with a user-friendly interface to manage their account, files, and settings. Popular control panels include cPanel, Plesk, and DirectAdmin.
Benefits:
· Enables easy management of account settings and files
· Supports the creation and management of databases and email accounts
· Facilitates the installation of third-party applications and scripts
6. Security Features
Security is a top priority in shared hosting, with providers implementing various measures to protect user data and prevent unauthorized access. Common security features include:
· Firewalls: Prevent unauthorized access to the server and data
· Encryption: Protects data in transit and at rest
· Regular Backups: Ensures data integrity and availability
Benefits:
· Protects user data and prevents unauthorized access
· Ensures data integrity and availability
· Supports compliance with industry regulations and standards
7. Scalability
Scalability is a critical feature of shared hosting, enabling users to upgrade or downgrade their plan as needed. This ensures that websites can adapt to changing traffic and demand without experiencing downtime or performance issues.
Benefits:
· Enables flexible and scalable hosting solutions
· Supports the growth and evolution of websites and applications
· Facilitates the adaptation to changing traffic and demand
8. Customer Support
Customer support is an essential aspect of shared hosting, providing users with assistance and guidance throughout the hosting experience. Common support features include:
· 24/7 Support: Available assistance and guidance
· Knowledge Base: Comprehensive documentation and tutorials
· Ticket System: Efficient communication and issue tracking
Benefits:
· Provides assistance and guidance throughout the hosting experience
· Supports the resolution of technical issues and concerns
· Facilitates the adoption and utilization of hosting features and services
In conclusion, shared hosting features play a vital role in ensuring the success and reliability of online presence. By understanding the various features and benefits outlined in this chapter, users can make informed decisions about their hosting needs and choose the best provider for their specific requirements.Features: Description of VPS Hosting Features
Virtual Private Server (VPS) hosting has become a popular choice for businesses and individuals alike due to its flexibility, scalability, and cost-effectiveness. In this chapter, we will delve into the various features that make VPS hosting an attractive option for those seeking a reliable and secure online presence.
1. Scalability
One of the primary advantages of VPS hosting is its scalability. With a VPS, you can easily scale up or down as your needs change, without having to worry about migrating to a new server or incurring additional costs. This feature is particularly useful for businesses that experience fluctuations in traffic or data storage needs.
2. Root Access
As a VPS user, you have full root access to your server, allowing you to customize and configure your server to meet your specific needs. This feature provides unparalleled flexibility and control, making it an attractive option for developers, programmers, and system administrators.
3. Dedicated Resources
Unlike shared hosting, where resources are shared among multiple users, VPS hosting provides dedicated resources to each user. This means that your server has its own CPU, RAM, and storage, ensuring that your website or application runs smoothly and efficiently.
4. Security
Security is a top priority in VPS hosting. With a VPS, you have full control over your server's security settings, allowing you to implement robust security measures to protect your data and applications. This includes configuring firewalls, setting up access controls, and implementing encryption protocols.
5. Customization
VPS hosting offers unparalleled customization options, allowing you to tailor your server to meet your specific needs. This includes installing custom software, configuring server settings, and optimizing server performance.
6. Flexibility
VPS hosting provides flexibility in terms of operating systems, software applications, and server configurations. This means that you can choose the operating system and software that best suit your needs, rather than being limited to a specific set of options.
7. High-Speed Connectivity
VPS hosting providers typically offer high-speed connectivity options, including fiber-optic connections, ensuring fast and reliable data transfer rates.
8. 24/7 Support
Many VPS hosting providers offer 24/7 technical support, ensuring that you receive assistance whenever you need it. This includes phone, email, and live chat support options.
9. Control Panel
Most VPS hosting providers offer a control panel, such as cPanel or Plesk, which provides an intuitive interface for managing your server, including features like file management, email management, and database management.
10. Backup and Recovery
VPS hosting providers typically offer backup and recovery options, ensuring that your data is safe and can be easily restored in the event of a disaster.
11. Monitoring and Maintenance
Many VPS hosting providers offer monitoring and maintenance services, ensuring that your server is running smoothly and efficiently. This includes monitoring for security threats, performing regular software updates, and conducting routine maintenance tasks.
12. Uptime Guarantee
Many VPS hosting providers offer uptime guarantees, ensuring that your server is available and accessible at all times. This is typically measured in percentage terms, such as 99.9% uptime guarantee.
In conclusion, VPS hosting offers a wide range of features that make it an attractive option for businesses and individuals alike. From scalability and customization to security and support, VPS hosting provides a flexible and reliable solution for those seeking a robust online presence. By understanding the various features and benefits of VPS hosting, you can make an informed decision about whether this type of hosting is right for your needs.Features: Description of Dedicated Hosting Features
In today's digital landscape, dedicated hosting has become an essential component of any successful online presence. With the rise of e-commerce, social media, and online marketing, the need for a reliable and secure hosting solution has never been more pressing. In this chapter, we will delve into the world of dedicated hosting, exploring the key features that make it an attractive option for businesses and individuals alike.
1. Unmatched Control and Customization
One of the primary advantages of dedicated hosting is the level of control and customization it offers. With a dedicated server, you have complete control over the configuration, allowing you to tailor your hosting environment to meet the specific needs of your business. This level of control is unparalleled in shared hosting environments, where resources are shared among multiple users.
2. Scalability and Flexibility
Dedicated hosting offers unparalleled scalability and flexibility. As your business grows, you can easily scale up or down to meet changing demands. This flexibility is particularly important for businesses that experience fluctuations in traffic or require sudden spikes in resource allocation.
3. Enhanced Security and Reliability
Dedicated hosting provides an added layer of security and reliability, thanks to the isolation from other users. With a dedicated server, you can rest assured that your data is protected from potential security threats and that your website is always available to your customers.
4. Customizable Server Configuration
With a dedicated server, you have the ability to customize the server configuration to meet the specific needs of your business. This includes the ability to choose the operating system, software, and hardware specifications to ensure optimal performance.
5. Priority Customer Support
Dedicated hosting providers typically offer priority customer support, ensuring that any issues are addressed promptly and efficiently. This level of support is particularly important for businesses that rely heavily on their online presence.
6. High-Speed Connectivity
Dedicated hosting providers typically offer high-speed connectivity options, ensuring that your website loads quickly and efficiently. This is particularly important for businesses that rely on online sales or rely on a high volume of traffic.
7. Redundant Infrastructure
Many dedicated hosting providers offer redundant infrastructure, ensuring that your website remains available even in the event of hardware failure or network outages.
8. Advanced Monitoring and Maintenance
Dedicated hosting providers typically offer advanced monitoring and maintenance services, ensuring that your server is always running smoothly and efficiently.
9. Compliance and Regulation
Dedicated hosting providers often offer compliance and regulation services, ensuring that your business meets the necessary regulatory requirements.
10. Scalable Storage
Dedicated hosting providers typically offer scalable storage options, allowing you to easily increase or decrease storage capacity as needed.
11. Enhanced Performance
Dedicated hosting provides enhanced performance, thanks to the isolation from other users and the ability to customize server configuration. This results in faster page loads, improved search engine rankings, and a better overall user experience.
12. Customizable Backup and Recovery
Dedicated hosting providers typically offer customizable backup and recovery options, ensuring that your data is always safe and easily recoverable in the event of a disaster.
Conclusion
In conclusion, dedicated hosting offers a range of features that make it an attractive option for businesses and individuals alike. From unmatched control and customization to enhanced security and reliability, dedicated hosting provides a level of flexibility and scalability that is unmatched in shared hosting environments. Whether you're looking to improve performance, enhance security, or simply gain more control over your online presence, dedicated hosting is an excellent choice.Features: Description of Reseller Hosting Features
Reseller hosting is a type of web hosting that allows users to resell hosting services to their clients, while still maintaining control over the hosting environment. In this chapter, we will delve into the key features of reseller hosting, exploring the benefits and advantages of this type of hosting solution.
1. Control Panel
One of the most significant features of reseller hosting is the control panel. A control panel is a web-based interface that allows resellers to manage their hosting accounts, including creating and managing sub-accounts, setting up email accounts, and monitoring resource usage. Popular control panels for reseller hosting include cPanel, Plesk, and DirectAdmin.
Benefits:
· Easy management of hosting accounts
· Ability to create and manage sub-accounts for clients
· Monitoring of resource usage and performance
· Customizable settings for each sub-account
2. Sub-Account Management
Reseller hosting allows resellers to create and manage sub-accounts for their clients. This feature enables resellers to provide customized hosting solutions for their clients, while still maintaining control over the hosting environment.
Benefits:
· Ability to create and manage sub-accounts for clients
· Customizable settings for each sub-account
· Easy management of hosting accounts
· Scalability and flexibility for clients
3. Resource Allocation
Reseller hosting allows resellers to allocate resources to their clients, including disk space, bandwidth, and CPU usage. This feature enables resellers to provide customized hosting solutions for their clients, while still maintaining control over the hosting environment.
Benefits:
· Ability to allocate resources to clients
· Customizable resource allocation for each sub-account
· Scalability and flexibility for clients
· Easy management of resource usage
4. Billing and Invoicing
Reseller hosting often includes billing and invoicing features, allowing resellers to manage their clients' accounts and generate invoices for services rendered.
Benefits:
· Easy management of client accounts
· Ability to generate invoices for services rendered
· Customizable billing and invoicing options
· Scalability and flexibility for clients
5. Security Features
Reseller hosting often includes advanced security features, such as firewalls, intrusion detection, and virus scanning. These features help protect hosting accounts from unauthorized access and malicious attacks.
Benefits:
· Advanced security features for hosting accounts
· Protection from unauthorized access and malicious attacks
· Customizable security settings for each sub-account
· Scalability and flexibility for clients
6. Scalability and Flexibility
Reseller hosting allows resellers to scale their hosting solutions to meet the needs of their clients. This feature enables resellers to provide customized hosting solutions for their clients, while still maintaining control over the hosting environment.
Benefits:
· Scalability and flexibility for clients
· Ability to upgrade or downgrade hosting plans as needed
· Customizable hosting solutions for clients
· Easy management of hosting accounts
7. Support and Maintenance
Reseller hosting often includes support and maintenance features, such as technical support, server monitoring, and software updates. These features help ensure that hosting accounts are running smoothly and efficiently.
Benefits:
· Technical support for hosting accounts
· Server monitoring and maintenance
· Software updates and security patches
· Scalability and flexibility for clients
Conclusion
Reseller hosting is a powerful tool for web professionals, allowing them to provide customized hosting solutions for their clients while still maintaining control over the hosting environment. By understanding the key features of reseller hosting, including control panels, sub-account management, resource allocation, billing and invoicing, security features, scalability and flexibility, and support and maintenance, resellers can provide high-quality hosting solutions for their clients.

Pricing Plans

Pricing Plans: Description of Shared Hosting Pricing Plans
As a leading provider of web hosting services, our company offers a range of pricing plans to cater to the diverse needs of our customers. In this chapter, we will delve into the details of our shared hosting pricing plans, highlighting the features and benefits of each plan.
Economy Plan
Our Economy Plan is designed for small businesses and individuals who require a basic level of hosting services. This plan is ideal for those who need to host a single website with limited traffic.
· Features:
o 1 website
o 5 GB storage space
o 10 GB bandwidth
o 1 MySQL database
o 1 email account
o cPanel control panel
· Price: 2.99/𝑚𝑜𝑛𝑡ℎ(𝑏𝑖𝑙𝑙𝑒𝑑𝑎𝑛𝑛𝑢𝑎𝑙𝑙𝑦)𝑜𝑟2.99/month(billedannually)or3.99/month (billed* m*onthly)
submitted by jjdewit to producthunter [link] [comments]


2024.06.01 12:23 adenwongebs The Role of Technology in Port Operations: Insights from Aden Wong in Singapore

Ports are vital hubs in the global supply chain, facilitating the movement of goods across continents. Efficient port operations are crucial for minimizing delays, reducing costs, and enhancing overall logistics performance. Technology plays a transformative role in modernizing and optimizing these operations. Aden Wong, a leading logistics expert based in Singapore, provides valuable insights into how technology is revolutionizing port operations. In this article, we will explore the various technological advancements and their impact on port efficiency and effectiveness.

The Importance of Technology in Port Operations

The integration of technology in port operations is essential for several reasons:
Aden Wong emphasizes that embracing technological advancements is key to staying competitive in the rapidly evolving logistics industry.

Key Technological Advancements in Port Operations

1. Automated Container Handling Systems

Automated container handling systems, including automated guided vehicles (AGVs) and automated stacking cranes (ASCs), have revolutionized cargo handling in ports. These systems can move and stack containers with precision and speed, reducing reliance on manual labor.
Aden Wong Tip: Invest in automation technologies to enhance cargo handling efficiency and reduce operational costs.

2. Internet of Things (IoT)

IoT devices enable real-time monitoring and management of port operations. Sensors can track the condition and location of cargo, monitor equipment performance, and provide data on environmental conditions.
Aden Wong Tip: Implement IoT solutions to gain real-time visibility into port operations and improve decision-making.

3. Blockchain Technology

Blockchain offers a secure and transparent way to manage and record transactions and documentation. It enhances the traceability of goods and reduces the risk of fraud.
Aden Wong Tip: Use blockchain technology to streamline documentation processes and improve the security of transactions.

4. Artificial Intelligence (AI) and Machine Learning

AI and machine learning can optimize various aspects of port operations, from predictive maintenance of equipment to intelligent cargo routing. These technologies can analyze vast amounts of data to identify patterns and make informed decisions.
Aden Wong Tip: Leverage AI and machine learning to optimize operations and enhance predictive capabilities.

5. Digital Twin Technology

Digital twin technology creates a virtual replica of port operations, allowing for real-time monitoring and simulation. This helps in optimizing processes, predicting potential issues, and planning for future scenarios.
Aden Wong Tip: Adopt digital twin technology to gain a comprehensive view of port operations and improve strategic planning.

6. Drones and Autonomous Vehicles

Drones and autonomous vehicles can be used for surveillance, inspection, and cargo delivery within port premises. They enhance efficiency and reduce the need for manual intervention.
Aden Wong Tip: Utilize drones and autonomous vehicles to improve operational efficiency and enhance safety.

7. Advanced Analytics and Big Data

Advanced analytics and big data tools can provide insights into port operations, helping to identify inefficiencies and optimize processes. These tools can analyze historical data to forecast demand and plan resources accordingly.
Aden Wong Tip: Implement advanced analytics solutions to gain actionable insights and drive continuous improvement.

Benefits of Technology in Port Operations

The adoption of technology in port operations offers numerous benefits:

Challenges in Implementing Technology and How to Overcome Them

1. High Initial Investment

The cost of implementing advanced technologies can be high, posing a barrier for many ports.
Solution: Conduct a cost-benefit analysis to justify the investment and explore financing options or partnerships to share the costs.

2. Integration with Existing Systems

Integrating new technologies with existing legacy systems can be complex and challenging.
Solution: Choose technologies that offer compatibility with existing systems and work with experienced vendors to ensure smooth integration.

3. Skill Development and Training

Adopting new technologies requires a workforce skilled in operating and maintaining these systems.
Solution: Invest in comprehensive training programs to upskill employees and ensure they are proficient in using new technologies.

4. Cybersecurity Risks

The increased use of digital technologies exposes port operations to cybersecurity threats.
Solution: Implement robust cybersecurity measures, including encryption, firewalls, and regular security audits, to protect against cyber threats.

5. Resistance to Change

Employees and stakeholders may resist adopting new technologies due to fear of change or job displacement.
Solution: Foster a culture of innovation and communicate the benefits of technology adoption clearly. Involve stakeholders in the decision-making process to gain their buy-in.

Future Trends in Technology for Port Operations

The future of port operations will be shaped by several emerging technological trends:

1. 5G Connectivity

5G connectivity will enable faster and more reliable communication between devices, enhancing the performance of IoT systems and real-time data applications.

2. Autonomous Ships

Autonomous ships will revolutionize maritime transport, offering increased efficiency and reduced human intervention.

3. Green Technologies

Sustainable technologies, such as electric and hybrid vehicles, renewable energy sources, and energy-efficient infrastructure, will become increasingly important in reducing the environmental impact of port operations.

4. Collaborative Robotics

Collaborative robots, or cobots, will work alongside human workers, enhancing efficiency and safety in cargo handling and other tasks.

5. Advanced Simulation and Virtual Reality

Advanced simulation and virtual reality tools will enable better training, planning, and management of port operations.

Conclusion

Technology plays a pivotal role in transforming port operations, driving efficiency, accuracy, and safety. By embracing advancements such as automated container handling, IoT, blockchain, AI, digital twins, drones, and advanced analytics, ports can optimize their operations and stay competitive in the global logistics landscape. Aden Wong insights highlight the importance of these technologies in achieving effective and efficient port operations. As the industry continues to evolve, staying abreast of emerging trends and overcoming implementation challenges will be key to leveraging the full potential of technology in port operations.
submitted by adenwongebs to u/adenwongebs [link] [comments]


2024.06.01 12:03 Stage-Piercing727 Best 1911 Long Slide Kit

Best 1911 Long Slide Kit

https://preview.redd.it/entzng8pox3d1.jpg?width=720&format=pjpg&auto=webp&s=93108d61a3c0a45a5b397b2ab08601fc5b2f4b14
Looking for the perfect addition to your 1911 pistol? Look no further than our 1911 Long Slide Kit, a must-have for anyone wanting to enhance their firearm. In this roundup article, we'll take a closer look at the key features and benefits of this versatile accessory, providing you with all the information you need to make an informed decision.

The Top 14 Best 1911 Long Slide Kit

  1. Multi-Functional Sleeper Sofa Bed - Real Avid's Pistol Tool - an all-in-one, convenient solution for handgun adjustments and maintenance, designed to fit popular pistol platforms. Perfectly calibrated tools ensure simple, seamless operation for professionals and enthusiasts alike.
  2. Manticore Scorpion EVO Folding Stock for Increased Compatibility and Adjustability - Experience an exceptional blend of style and functionality with the Manticore Slider Stock for CZ Scorpion Evo, designed for versatility and adaptability on the go.
  3. 1911 Slide Recoil Buffers Set for Precision Protection - The Ed Brown Slide Recoil Buffers - 6-Pack for 1911 are precision engineered polyurethane buffers that fit on the recoil guide, reducing metal-to-metal contact and protecting your gun's frame from wear and tear.
  4. Heavy Duty 1911 Long Slide Kit for 9mm, 38, 40 Calibers - Upgrade your 1911 with EGW's Heavy Duty Oversized Slide Stop, featuring a premium stainless steel finish and designed for enhanced grip, now available in .203" pin size for 9mm/38/.40/.10mm calibers in oversized holes.
  5. High-Quality Linear Guide Rail Kit for DIY Projects - VEFOR's HGR20-1500mm Linear Slide Rail offers top-notch quality and durability, making it the ideal choice for automation machinery, precision measuring equipment, and DIY projects alike.
  6. 1911 Long Slide Kit for Ultimate Pistol Performance - The LBE Slide for 17 Black offers top-tier build quality, making it the perfect choice for maintaining and upgrading your firearms with unparalleled durability and reliability.
  7. High Precision 1911 Linear Slide Rail Kit - Upgrade your DIY CNC precision with VEVOR's dual-included 600mm and 700mm Linear Guide Rails, featuring high-quality steel, effortless installation, and versatile applications.
  8. 1911 Long Slide Kit for 9mm/.38 Super Stainless Steel Pistol - A 1911 Long Slide Kit for ultimate customization, featuring a .38 Super caliber and stainless steel finish for enduring quality.
  9. Canik Full-Size Magwell Kit for 1911 Long Slide - Upgrade your Canik TCS Full Size with the versatile Magwell Black, bringing you closer to precision and power.
  10. OD Green Arc Rail Kit for 1911 Long Slide - Unlock unrivaled performance with the United Shield Arc Rail Kit, designed exclusively for long slide 1911s in OD Green, delivering a durable and stylish upgrade.
  11. Wilson Officer Full Length Guide Rod Kit for 1911 Pistols - Upgrade your 1911 Officers Model with the reliable and accurate Wilson 25co Officer Full Length Guide Rod 1911, perfect for enhancing performance and ensuring a seamless firing experience.
  12. 1911 Long Slide Kit for 9mm/.38/.40 Calibers - Boost your 1911's grip with the EGW Heavy Duty Slide Stop, a high-quality 9mm accessory crafted from 4140 Steel and boasting a durable blued carbon steel finish.
  13. High-Quality 1911 Long Slide Kit - Experience exceptional precision and reliability with our 1911 Long Slide Kit, boasting a 4.8-star rating and highly positive reviews from satisfied customers.
  14. Springfield XD OSP 1911 Long Slide Kit - Anodized Finish, Black and Optic Ready - Unlock the full potential of your Springfield XD OSP 9mm with the versatile and optic-ready 4" XD OSP Slide Assembly Kit, perfect for upgrading your 1911 Long Slide.
As an Amazon™ Associate, we earn from qualifying purchases.

Reviews

🔗Multi-Functional Sleeper Sofa Bed


https://preview.redd.it/xmwl6wipox3d1.jpg?width=720&format=pjpg&auto=webp&s=06de0d57f2798afebd134d079871d67b2c2ada90
The Real Avid The Pistol Tool is an incredibly versatile tool that has made my life as a shooter so much easier. From mounting accessories to adjusting laser sights and changing side grips, this little powerhouse has everything I need to keep my handgun in tip-top shape, whether I'm at the range or working on it at home.
One of the things that stood out to me is its compact size and easy one-hand access. Every tool is carefully calibrated to popular pistol platforms, making it incredibly easy and user-friendly. I particularly love how each tool locks open for maximum safety and precision.
However, there are a couple of downsides. The screw bits could be slightly larger to accommodate different screw sizes, and I wish the hex head wrenches were slightly larger for greater versatility.
Despite these minor issues, this tool has been a game-changer for me. Every handgunner should have The Pistol Tool in their range bag or workbench - it's an absolute lifesaver!

🔗Manticore Scorpion EVO Folding Stock for Increased Compatibility and Adjustability


https://preview.redd.it/1kawyuupox3d1.jpg?width=720&format=pjpg&auto=webp&s=712dcbbf171e3c45dc6e49b3424b808a2e3061ac
Using the Manticore Slider Stock for my CZ Scorpion Evo felt like a breath of fresh air. The slim design, inspired by the MP5A3, allowed for smooth transitions between extended and collapsed positions. I loved that it added barely any bulk to the gun, making it a great option for those who want a sleeker look. However, I found the stock's locking mechanism a bit finicky at times, which could be frustrating in high-pressure situations.
One of the standout features was the 100% Made in the USA craftsmanship. The build quality was top-notch, featuring a sturdy 6061 aluminum anodized black construction. Another impressive detail was the addition of QD points on both the mounting block and the buttplate, providing easy connection options for sling loops. The grooved buttplate offered a secure grip on my shoulder, and I appreciated the option to mount an optional rubber buttpad.
Overall, the Manticore Slider Stock for CZ Scorpion Evo was a reliable and stylish choice for my airsoft gun. While there were some minor drawbacks, the pros outweighed the cons in my experience.

🔗1911 Slide Recoil Buffers Set for Precision Protection


https://preview.redd.it/k97yq75qox3d1.jpg?width=720&format=pjpg&auto=webp&s=b8ca3aaf2a95db1dc79f6c609f4985c6e20ce41f
I recently purchased the Ed Brown Slide Recoil Buffers 6-pack for my 1911, and I must say, the quality surpassed my expectations. These precision-molded polyurethane buffers fit perfectly on the recoil guide, preventing any unwanted metal-to-metal contact during firing. This not only makes the gun smoother to operate but also saves my frame from potential damage, making it a great investment.
Despite the high cost, the convenience and durability of these buffers make them worth the splurge. However, as with any product, it's essential not to expect miracles, and the true effectiveness will be discovered over time, as with any product of this nature.

🔗Heavy Duty 1911 Long Slide Kit for 9mm, 38, 40 Calibers


https://preview.redd.it/66y5ksjqox3d1.jpg?width=720&format=pjpg&auto=webp&s=edd1c49cd167165365465d75896b38084021e8b1
EGW Heavy Duty Slide Stop, a reliable addition to the Heavy Duty line of 1911 parts, has caught my attention for its stainless steel finish and durability. Machined from 4140 Steel, this slide stop not only provides a sleek and sturdy look but also handles the demands of daily use.
One aspect that stood out is the enhanced gripping capabilities due to the serrations on the pad. It provides a firm and secure grip, which I appreciated during practice sessions as it prevents the slide stop from slipping. However, one downside I noticed was the pin size, which felt a bit small and might need attention when installing or removing the slide stop.
In conclusion, the EGW Heavy Duty Slide Stop offers an attractive and highly functional alternative for those who value quality and durability. But, keep in mind the slightly smaller pin size while considering the best fit for your 1911.

🔗High-Quality Linear Guide Rail Kit for DIY Projects


https://preview.redd.it/uwh520xqox3d1.jpg?width=720&format=pjpg&auto=webp&s=93712153e8ee265464df5e7f82b9e4b0ad4ca23e
When it comes to DIY projects that require precision, having the right tools and materials is crucial. Recently, I tried out the VEVOR Linear Guide Rail Kit for my own CNC router project, and I must say, it exceeded my expectations!
One of the first things I noticed about this guide rail set was its high-quality materials. The carbon steel main axle, GCr15 bearing steel linear rail block, and aluminum alloy casing all contribute to the rigidity and durability of the product. The surface chrome plating treatment is not only aesthetically pleasing but also provides a corrosion-resistant barrier, ensuring the longevity of the components.
Another standout feature of this kit is how easy it is to assemble. With pre-drilled holes on the support rail mounts, I was able to secure the rail without any fuss. The complete sliding unit moves smoothly without deflection or excessive noise, making my CNC router operation more efficient and enjoyable.
However, I did encounter a minor issue with the friction of the rubber wipers on the carriage. While this may be a necessary compromise to protect the ball bearings, it did require a bit more force to move the entire assembly. But overall, I am satisfied with the performance of the VEVOR Linear Guide Rail Kit, and I highly recommend it to others looking for an affordable and high-quality solution for their DIY projects.

🔗1911 Long Slide Kit for Ultimate Pistol Performance


https://preview.redd.it/21m09vbrox3d1.jpg?width=720&format=pjpg&auto=webp&s=9cecc3129e19de854911a59372d86253959a004b
I had the opportunity to try out the LBE Slide for 17 Black, and my experience was quite impressive. As someone with a love for firearms, it was refreshing to see a product that prioritized both quality and reliability.
The durability of the slide was particularly noticeable in my daily routine, providing me with peace of mind that it would withstand the test of time. The build quality of the LBE Slide was exceptional, boasting precision manufacturing and high-quality components that seemed to effortlessly merge together.
However, there was one minor issue I encountered: the slide was designed for a specific type of firearm, limiting its universality. Despite this, it remained a reliable option for those looking to maintain or upgrade their 17 Black. Overall, the LBE Slide for 17 Black is a remarkable addition to any firearms enthusiast's arsenal, delivering on durability, reliability, and build quality while offering years of unwavering service.

🔗High Precision 1911 Linear Slide Rail Kit


https://preview.redd.it/otyabwprox3d1.jpg?width=720&format=pjpg&auto=webp&s=c0f3081f2e6f2addd2c66ccf3c6707b376550d07
I recently had the chance to put the VEVOR 2-pack HGR20 Linear Slide Rail to the test in my DIY CNC project, and let me tell you, it did not disappoint. The high-quality steel material made these linear guides look and feel durable, with the surface chrome plating adding a touch of beauty and anti-rust protection. What really stood out, though, was how effortless they were to install, especially with the steel support rail and pre-drilled holes for ease of mounting.
Of course, no product is perfect. I did encounter a slight issue with the low friction coefficient that made the movement a bit smoother than I would have preferred. However, this was a minor concern compared to the versatility of the CNC linear rail. I found it widely used in all sorts of precision machines that require high precision linear movement.
In conclusion, the VEVOR 2-pack HGR20 Linear Slide Rail kit is a reliable and convenient solution for anyone looking to upgrade their CNC project. Despite the minor friction issue, the durability, ease of installation, and versatility of the product make it a worthwhile investment.

🔗1911 Long Slide Kit for 9mm/.38 Super Stainless Steel Pistol


https://preview.redd.it/flptsg7sox3d1.jpg?width=720&format=pjpg&auto=webp&s=8ac3815f32e6238d4cc8a073f6b63597a8964738
Imagine, if you will, walking into a gun store, and catching a glimpse of this beauty. This 1911 long slide kit is a marvel of engineering, crafted with the finest stainless steel. The finish perfectly complements the sleek design, while the 9mm/. 38 Super, . 200'' barrel ensures an accurate and reliable shot every time.
As a gun enthusiast, it's apparent that the 1911 series has been the epitome of quality and tradition. Whether you're a seasoned sharpshooter or a novice, this commander model is an investment worth making. This piece of equipment is not just a tool, but an art form, handcrafted to exacting standards. The 1911 long slide kit is more than just a weapon, it's an experience, as you stand at the range, focusing on your target, and feeling the satisfying click of the hammer on a perfect shot.
Despite its grandeur, this commander model is not without its drawbacks. The weight, though a testament to its strength, can be a burden in those long shooting sessions. But it's a price worth paying for the unparalleled accuracy and craftsmanship. A gun like this is a lifestyle, a journey, and an adventure all rolled into one, waiting to be explored by the discerning shooter or collector.

🔗Canik Full-Size Magwell Kit for 1911 Long Slide


https://preview.redd.it/4karwcfsox3d1.jpg?width=720&format=pjpg&auto=webp&s=f1bb2e8813d20666aa945dde37ac6020f7e725b9
The Canik TCS Full Size Magwell Black is an intriguing addition to the line of high-quality firearms designed by Canik, a world-renowned brand for their intelligent engineering. Having the opportunity to use it in my daily life, I must say it offers a unique blend of style and functionality.
The most striking feature I noticed is its sleek and streamlined black magwell design, which not only adds an aesthetic touch but also improves grip accuracy. The black finish is robust and seems to withstand outdoor elements without much wear, which is a plus for those who want their firearms to last longer.
However, one element that I found to be less than ideal is the need for modification before it can be used with aftermarket magazine base plate extensions. The inner lips need to be carefully filed or sanded down for a proper fit. This could be a potential drawback for some users who might find it frustrating or time-consuming.
Overall, the Canik TCS Full Size Magwell Black offers a captivating blend of style and precision, with its distinctive black design and robust finish. However, the modification requirement might pose a challenge for those seeking a hassle-free experience. Despite this minor drawback, the product still manages to impress with its unique features and performance.

🔗OD Green Arc Rail Kit for 1911 Long Slide


https://preview.redd.it/f2y1jmssox3d1.jpg?width=720&format=pjpg&auto=webp&s=954e87207862d38dc1ee0e03f61b4feb3825f73b
For the past few weeks, I've been using the United Shield Arc Rail Kit, OD Green, and I must say, it's made quite an impact on my daily life. Its sleek design, both visually and practically, stands out to me. The kit's compatibility with 1911 Long Slide is a bonus, making it even more versatile.
While some may find the green color a bit attention-grabbing, I secretly love the pop it adds to my handgun. It's a subtle but noticeable design choice that makes the gun stand out at the range or during practice sessions. I appreciate its robust construction; it's built to last, and it does so without any issues.
However, like many things in life, this product isn't perfect. There's a minor learning curve when it comes to installing it, especially if you're new to this type of kit. But, once you get the hang of it, the process becomes smooth and efficient. Overall, the United Shield Arc Rail Kit is a great addition to any 1911 Long Slide, especially if you're looking to upgrade and personalize your handgun.

🔗Wilson Officer Full Length Guide Rod Kit for 1911 Pistols


https://preview.redd.it/1co8tq7tox3d1.jpg?width=720&format=pjpg&auto=webp&s=b5c8600606dabeaad6ba7f73a0ee177ef9a5f72d
When I first heard about the Wilson 25co Officer Full Length Guide Rod for my 1911 pistol, I was intrigued by the idea of improving my pistol's performance. I've used it for quite some time now, and let me tell you, it's made a significant difference.
One of the standout features of this guide rod is its sturdy steel construction, giving my pistol a robust and reliable feel. The silver finish also adds a touch of elegance to the overall aesthetic. However, it did require some minor modifications to the slide, which was a bit of an inconvenience.
The performance enhancements were evident almost immediately after installation. The accuracy and reliability of my 1911 have improved, making it a more enjoyable and trustworthy companion for my shooting adventures. The reversible plug and single spring were simple yet effective additions to the upgrade.
Overall, I've found the Wilson 25co Officer Full Length Guide Rod to be a solid investment for any 1911 enthusiast. It's not without its minor issues, but the pros undoubtedly outweigh the cons. This product truly shines when it comes to enhancing the performance and reliability of a classic 1911 pistol.

🔗1911 Long Slide Kit for 9mm/.38/.40 Calibers


https://preview.redd.it/xqhtziitox3d1.jpg?width=720&format=pjpg&auto=webp&s=39213f18e0a6d6489244f5de843e22dc4e08a85b
After adding this EGW Heavy Duty Slide Stop to my 1911 pistol, I couldn't help but notice the enhanced gripping capabilities it provides, thanks to the serrations on the pad. Made from 4140 steel and featuring a blued carbon steel finish, it has a sleek look that really sets it apart from other slide stops on the market.
However, one downside I've experienced is that it slightly increases the overall weight of the pistol. Nevertheless, the 1911 Long Slide Kit is a worthwhile investment, as it provides a durable, stylish, and reliable solution for improving the functionality of your gun.

🔗High-Quality 1911 Long Slide Kit


https://preview.redd.it/8z9h6nstox3d1.jpg?width=720&format=pjpg&auto=webp&s=0b2c2fc4c7591584e39e4c8c800531eb5d49dcb3
I recently got my hands on the 1911 Long Slide Kit, a product that quickly became a staple in my daily life. The kit came with everything I needed for a smooth and efficient installation process, and it was a breeze to put together.
The standout feature for me was the metal recoil rod/spring set up that allowed me to customize it with different springs (bought separately), giving me the freedom to tailor it to my preferences. However, one downside was that the slide kit didn't come with an instruction manual, which made it a bit challenging for beginners. Overall, the Long Slide Kit proved to be a reliable and cost-effective option, especially with the fast shipping and excellent customer service I received.

🔗Springfield XD OSP 1911 Long Slide Kit - Anodized Finish, Black and Optic Ready


https://preview.redd.it/33yeed5uox3d1.jpg?width=720&format=pjpg&auto=webp&s=1e07801e9e78773758c68161a4db4ca8b8e8be79
I had the pleasure of using the Springfield XD OSP Slide Assembly for my 9mm handgun recently, and I must say, it was a game-changer. I've always been a fan of customizing my firearms, and this slide assembly delivered on that front. The fit was perfect, and the inclusion of the OSP plate for optic compatibility was a welcomed addition. The anodized finish, available in black, gave it a sleek and durable look.
However, while the slide assembly fit seamlessly, installation wasn't quite as smooth. The instructions could have been more clear, and the process took a bit longer than expected. Nonetheless, once installed, the Springfield XD OSP Slide Assembly performed incredibly well and enhanced my shooting experience. It's definitely worth considering as an upgrade for your 9mm XD handgun.

Buyer's Guide

When shopping for a 1911 Long Slide Kit, there are several key features to consider. These will help you make an informed decision and ensure that you get the best product for your needs.

Material and Finish


https://preview.redd.it/dx2b5lhuox3d1.jpg?width=720&format=pjpg&auto=webp&s=1bda2bd516bedd334213b3d29be64628ecb65cf4
A high-quality 1911 Long Slide Kit should be made from durable materials like stainless steel or carbon steel. The finish should be resistant to corrosion and wear, such as black oxide or nitride. A good finish can also enhance the gun's appearance and provide a protective layer against scratches.

Compatibility

Ensure that the kit you choose is compatible with your specific 1911 model. Some kits may only be compatible with certain frames, grips, or barrels. Check the manufacturer's specifications or consult with a professional to ensure compatibility before making a purchase.

Aesthetics

While not essential, the appearance of your 1911 Long Slide Kit can be important for many shooters. Some kits may offer unique designs, engravings, or finishes that reflect your personal style or preferences.

https://preview.redd.it/ps8ojpxuox3d1.jpg?width=720&format=pjpg&auto=webp&s=b3104845bd8e31c05491b165a2ce1e1c03605115

Quality Control and After-Sales Support

Look for a reputable manufacturer who offers comprehensive quality control measures and reliable after-sales support. This can help you resolve any issues with your kit and provide peace of mind when making a purchase.

Price and Value

When shopping for a 1911 Long Slide Kit, be mindful of both the price and the value you receive. Consider the features, materials, and craftsmanship offered by each kit and weigh them against the price.

Research and Reviews


https://preview.redd.it/m0dk2knvox3d1.jpg?width=720&format=pjpg&auto=webp&s=9f506591ec22abf8ea33bcab5a9aff55bb8bb424
Take the time to research different 1911 Long Slide Kit options and read reviews from other shooters. This can provide valuable insight into the performance and reliability of various kits, helping you make an informed decision.

FAQ

What is a 1911 Long Slide Kit?

A 1911 Long Slide Kit is an accessory that allows users to upgrade and customize their standard 1911 handgun. The long slide kit extends the length of the slide and often includes serrations or grip panels for better handling and comfort.

https://preview.redd.it/tyms5gzvox3d1.jpg?width=720&format=pjpg&auto=webp&s=351749772ea6dadcc2eb09582413fe1b9361db2c

What are the benefits of using a 1911 Long Slide Kit?

Using a 1911 Long Slide Kit provides multiple benefits, including improved handling, better grip, increased accuracy, and increased magazine capacity. These kits are designed to enhance the performance of your 1911 handgun and make it more comfortable to use.

Which brands offer the best 1911 Long Slide Kits?

Several reputable brands offer high-quality 1911 Long Slide Kits, including Wilson Combat, Ed Brown Gunsmithing, and Dan Wesson. Each brand offers its unique features, materials, and styles, ensuring that customers have their preferences met.

How do I install a 1911 Long Slide Kit?

Installing a 1911 Long Slide Kit involves several steps, including disassembling your handgun, removing the old slide, and replacing it with the new slide. It is recommended to follow the instructions provided in the kit or consult a professional gunsmith if you are unsure of the process.

What materials are used in the construction of 1911 Long Slide Kits?

Materials used in the construction of 1911 Long Slide Kits can vary by brand and model, but commonly used materials include stainless steel, aluminum, and titanium. These materials are chosen for their strength, durability, and weight reduction.

Are there any compatibility issues to be aware of when purchasing a 1911 Long Slide Kit?

Compatibility issues may arise when purchasing a 1911 Long Slide Kit, depending on the handgun's model and manufacturing year. Ensure that the kit you are considering is compatible with your specific handgun model and year.

What is the approximate cost of a 1911 Long Slide Kit?

The cost of a 1911 Long Slide Kit varies depending on the brand, materials, and features included. On average, you can expect to spend anywhere between $500 to $2,000 for a high-quality 1911 Long Slide Kit.
As an Amazon™ Associate, we earn from qualifying purchases.
submitted by Stage-Piercing727 to u/Stage-Piercing727 [link] [comments]


2024.06.01 10:58 GlitteringFile6279 Ayurveda Luxembourg

You're seeking a premier Ayurveda kur Deutschland, look no further than Heritage Ayurveda and Yoga. Nestled in the serene landscapes of Germany, this resort is renowned for offering authentic and holistic Ayurvedic treatments. Heritage Ayurveda and Yoga stands out for its comprehensive approach to wellness, combining traditional Ayurveda practices with rejuvenating yoga sessions. Whether you're dealing with stress, chronic pain, or simply looking to detox, their personalized programs cater to all your needs. With experienced practitioners from India, the birthplace of Ayurveda, you can be assured of receiving top-notch care. The resort's tranquil environment further enhances the healing experience, making it the ideal destination for those serious about Ayurveda Deutschland. Experience the transformative power of Ayurveda at Heritage Ayurveda and Yoga, the best Ayurveda resort in Germany.
submitted by GlitteringFile6279 to u/GlitteringFile6279 [link] [comments]


2024.06.01 10:04 Zerox_Z21 Has anyone stopped IPL after long term treatment/maintenance?

I am a man considering home IPL treatment for my entire body, facial hair included. Standard white british pale skin and dark/black body hair.
I only hesitate because of the potential of long term permanence, in case I change my mind. It is unlikely but worth considering.
If I maintain hair reduction with something like the Braun 5 (seems to be populaeffective) for potentially several years, what would happen one day I give up entirely and go cold turkey? Has anyone else had this experience?
Tl;dr has anyone experienced full regrowth in the long term (years) after ceasing IPL use after entirely after long term treatment?
submitted by Zerox_Z21 to HairRemoval [link] [comments]


2024.06.01 09:50 Nightnightgun Grandpa Vito (Bre's dad) on NewsNation with Brian Entin a few hours after verdict. Tells of running into the killer in courtroom restroom one day, treatment of Bre's family by NJ authorities. Corey had one awesome Grandpa on his side.

Grandpa Vito (Bre's dad) on NewsNation with Brian Entin a few hours after verdict. Tells of running into the killer in courtroom restroom one day, treatment of Bre's family by NJ authorities. Corey had one awesome Grandpa on his side. submitted by Nightnightgun to christophergregor [link] [comments]


2024.06.01 09:41 Massive_Cream_9091 +++ MBC First Line Maintenance

Hi y’all! My partner will wrap up active chemo (THP) for +++ stage 4 breast cancer in July. Can anyone share what maintenance drug regimen followed for them or their loved ones? This is her first line of treatment and her MO is saying she’ll only be doing tamoxifen. I’m wondering if it’s worth asking about supplemental AI’s or endocrine therapies. We never got a definitive answer on percentages of her biopsies (primary tumor, multiple auxiliary tumors in a single duct, and one lymph node), just that she’s triple positive. They’ve been pretty cryptic about things in general. No biopsies have been done for her bone mets, lung mets (too small), or a questionable liver lesion. Btw, she’ll continue to get Xgeva shots as well. Thanks in advance!!
submitted by Massive_Cream_9091 to CancerCaregivers [link] [comments]


2024.06.01 09:22 Known-Revolution-488 To: H. Mnity

PSA:
If you spot these Narcissistic phrases while scrolling: get medical help or call the Poison Control Center right away ☠️☣️
Example of devaluing texts:
“I just want you to know I did not enjoy your behaviour today among our family members. I expect you to improve this next time.
Example of “the mind reader” texts:
You say you feel good, but I know you lie. I know exactly what you need to start feeling better. Where would you be without me, right? You can thank me later.”
Examples of “CAPS LOCK” texts:
“I BEEN SO TIRED OF MY PARENTS, MY BOSS, AND EVERYONE ELSE IN MY LIFE WHO ARE NOT TRYING TO UNDERSTAND ME. IF ONLY YOU KNEW HOW THEY TREAT ME, YOU WOULD NEVER TALK TO THEM AGAIN. I CERTAINLY DIDN’T DESERVE THIS TREATMENT, AND YOU KNOW IT TOO.”
“WHAT THE HELL? HOW COULD YOU IGNORE MY TEXTS WHEN YOU KNOW WHAT I’M GOING THROUGH RIGHT NOW? THE WHOLE WORLD IS AGAINST ME, AND I THOUGHT YOU WERE THE ONE PERSON WHO ACTUALLY UNDERSTANDS ME. I’M DISAPPOINTED IN YOU.”
Examples of “blowing hot and cold” texts:
Them: “Hey babe, I hope you have a great day. Let me know if you need anything.”
Them: “Why are you texting me? You know I’m busy at work.”
Them: “Good night, honey bean. I just wanted to say how happy I was today when we were together. It was one of the best days of my life. I felt like time stopped, and there was only you and me in the whole world. Can’t wait to see you again. Sleep tight. Don’t let the bedbugs bite.”
Them: “Yeah, good morning to you too. Not into texting right now.”
Example of desperate word salad texts:
“Hi, honey. I know I haven’t been myself lately, but you know it takes two to tango. We have a great thing going, but this thing also requires maintenance and constant effort. You know I’m willing to give my best to make all this work, and I expect the same thing from you. This is the only way for us to protect our happiness and make the best of our relationship.”
>>Examples of “sabotaging your confidence and self-worth” texts:
“You know I want the best for you, but I truly think this (thing) is not for you because you wouldn’t be good at it.”
Examples of demand texts:
“Make me cookies.”
“You need to give me gifts, lol.”
Examples of “punctuation/ emoji overload” texts:
“Hello, I just wanted you to know that I can’t stop thinking about you all day ?????”
“Do you want to know what I’m thinking about right now? ???? Maybe I’ll tell you later. ???”
Examples of gaslighting texts:
”You have no idea what you’re talking about.”
“I can no longer tolerate such behavior from you.”
“You’re imagining things
Examples of late-night texts:
I’m so sick of everything.”
“Are you sleeping?
“Why aren’t you answering me? I’m always there when you need me and never when I need you.”
Examples of “fake caring” texts:
“I hope you’re okay. I’m kind of worried about you because I haven’t heard from you in a while.”
“Hey honey, how was your day? I expect you to tell me everything.”
“You have no idea how much I miss you. Can’t stop thinking about you.”
Examples of “fight trigger” texts:
“I haven’t forgotten about you ignoring my texts the other day!”
“Why don’t you just say what you mean?”
“Do you think the problem is me? Think again.”
Avoid contact with the skin. Avoid contact with the eyes. In case of contact with eyes, rinse immediately with plenty of water and seek medical advice☣️
submitted by Known-Revolution-488 to Unsent_Unread_Unheard [link] [comments]


http://activeproperty.pl/